/** * oclazyload - Load modules on demand (lazy load) with angularJS * @version v1.0.4 * @link https://github.com/ocombe/ocLazyLoad * @license MIT * @author Olivier Combe */ !function(e,n){"use strict";var o=["ng","oc.lazyLoad"],r={},t=[],i=[],a=[],s=[],u=e.noop,c={},l=[],d=e.module("oc.lazyLoad",["ng"]);d.provider("$ocLazyLoad",["$controllerProvider","$provide","$compileProvider","$filterProvider","$injector","$animateProvider",function(d,f,p,m,v,y){function L(n,r,t){if(r){var i,s,d,f=[];for(i=r.length-1;i>=0;i--)if(s=r[i],e.isString(s)||(s=E(s)),s&&-1===l.indexOf(s)&&(!w[s]||-1!==a.indexOf(s))){var h=-1===o.indexOf(s);if(d=g(s),h&&(o.push(s),L(n,d.requires,t)),d._runBlocks.length>0)for(c[s]=[];d._runBlocks.length>0;)c[s].push(d._runBlocks.shift());e.isDefined(c[s])&&(h||t.rerun)&&(f=f.concat(c[s])),j(n,d._invokeQueue,s,t.reconfig),j(n,d._configBlocks,s,t.reconfig),u(h?"ocLazyLoad.moduleLoaded":"ocLazyLoad.moduleReloaded",s),r.pop(),l.push(s)}var p=n.getInstanceInjector();e.forEach(f,function(e){p.invoke(e)})}}function $(n,o){function t(n){return e.isArray(n)?S(n.toString()):e.isObject(n)?S(D(n)):e.isDefined(n)&&null!==n?S(n.toString()):n}var i=n[2][0],a=n[1],s=!1;e.isUndefined(r[o])&&(r[o]={}),e.isUndefined(r[o][a])&&(r[o][a]={});var c=function(e,n){r[o][a].hasOwnProperty(e)||(r[o][a][e]=[]),-1===r[o][a][e].indexOf(n)&&(s=!0,r[o][a][e].push(n),u("ocLazyLoad.componentLoaded",[o,a,e]))};if(e.isString(i))c(i,t(n[2][1]));else{if(!e.isObject(i))return!1;e.forEach(i,function(n,o){e.isString(n)?c(n,t(i[1])):c(o,t(n))})}return s}function j(n,o,r,i){if(o){var a,s,u,c;for(a=0,s=o.length;s>a;a++)if(u=o[a],e.isArray(u)){if(null!==n){if(!n.hasOwnProperty(u[0]))throw new Error("unsupported provider "+u[0]);c=n[u[0]]}var l=$(u,r);if("invoke"!==u[1])l&&e.isDefined(c)&&c[u[1]].apply(c,u[2]);else{var d=function(n){var o=t.indexOf(r+"-"+n);(-1===o||i)&&(-1===o&&t.push(r+"-"+n),e.isDefined(c)&&c[u[1]].apply(c,u[2]))};if(e.isFunction(u[2][0]))d(u[2][0]);else if(e.isArray(u[2][0]))for(var f=0,h=u[2][0].length;h>f;f++)e.isFunction(u[2][0][f])&&d(u[2][0][f])}}}}function E(n){var o=null;return e.isString(n)?o=n:e.isObject(n)&&n.hasOwnProperty("name")&&e.isString(n.name)&&(o=n.name),o}function _(n){if(!e.isString(n))return!1;try{return g(n)}catch(o){if(/No module/.test(o)||o.message.indexOf("$injector:nomod")>-1)return!1}}var w={},x={$controllerProvider:d,$compileProvider:p,$filterProvider:m,$provide:f,$injector:v,$animateProvider:y},O=!1,b=!1,z=[];z.push=function(e){-1===this.indexOf(e)&&Array.prototype.push.apply(this,arguments)},this.config=function(n){e.isDefined(n.modules)&&(e.isArray(n.modules)?e.forEach(n.modules,function(e){w[e.name]=e}):w[n.modules.name]=n.modules),e.isDefined(n.debug)&&(O=n.debug),e.isDefined(n.events)&&(b=n.events)},this._init=function(r){if(0===i.length){var t=[r],a=["ng:app","ng-app","x-ng-app","data-ng-app"],u=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/,c=function(e){return e&&t.push(e)};e.forEach(a,function(n){a[n]=!0,c(document.getElementById(n)),n=n.replace(":","\\:"),"undefined"!=typeof r[0]&&r[0].querySelectorAll&&(e.forEach(r[0].querySelectorAll("."+n),c),e.forEach(r[0].querySelectorAll("."+n+"\\:"),c),e.forEach(r[0].querySelectorAll("["+n+"]"),c))}),e.forEach(t,function(n){if(0===i.length){var o=" "+r.className+" ",t=u.exec(o);t?i.push((t[2]||"").replace(/\s+/g,",")):e.forEach(n.attributes,function(e){0===i.length&&a[e.name]&&i.push(e.value)})}})}0!==i.length||(n.jasmine||n.mocha)&&e.isDefined(e.mock)||console.error("No module found during bootstrap, unable to init ocLazyLoad. You should always use the ng-app directive or angular.boostrap when you use ocLazyLoad.");var l=function d(n){if(-1===o.indexOf(n)){o.push(n);var r=e.module(n);j(null,r._invokeQueue,n),j(null,r._configBlocks,n),e.forEach(r.requires,d)}};e.forEach(i,function(e){l(e)}),i=[],s.pop()};var D=function(n){var o=[];return JSON.stringify(n,function(n,r){if(e.isObject(r)&&null!==r){if(-1!==o.indexOf(r))return;o.push(r)}return r})},S=function(e){var n,o,r,t=0;if(0==e.length)return t;for(n=0,r=e.length;r>n;n++)o=e.charCodeAt(n),t=(t<<5)-t+o,t|=0;return t};this.$get=["$log","$rootElement","$rootScope","$cacheFactory","$q",function(n,r,t,a,c){function d(e){var o=c.defer();return n.error(e.message),o.reject(e),o.promise}var f,p=a("ocLazyLoad");return O||(n={},n.error=e.noop,n.warn=e.noop,n.info=e.noop),x.getInstanceInjector=function(){return f?f:f=r.data("$injector")||e.injector()},u=function(e,o){b&&t.$broadcast(e,o),O&&n.info(e,o)},{_broadcast:u,_$log:n,_getFilesCache:function(){return p},toggleWatch:function(e){e?s.push(!0):s.pop()},getModuleConfig:function(n){if(!e.isString(n))throw new Error("You need to give the name of the module to get");return w[n]?e.copy(w[n]):null},setModuleConfig:function(n){if(!e.isObject(n))throw new Error("You need to give the module config object to set");return w[n.name]=n,n},getModules:function(){return o},isLoaded:function(n){var r=function(e){var n=o.indexOf(e)>-1;return n||(n=!!_(e)),n};if(e.isString(n)&&(n=[n]),e.isArray(n)){var t,i;for(t=0,i=n.length;i>t;t++)if(!r(n[t]))return!1;return!0}throw new Error("You need to define the module(s) name(s)")},_getModuleName:E,_getModule:function(e){try{return g(e)}catch(n){throw(/No module/.test(n)||n.message.indexOf("$injector:nomod")>-1)&&(n.message='The module "'+D(e)+'" that you are trying to load does not exist. '+n.message),n}},moduleExists:_,_loadDependencies:function(n,o){var r,t,i,a=[],s=this;if(n=s._getModuleName(n),null===n)return c.when();try{r=s._getModule(n)}catch(u){return d(u)}return t=s.getRequires(r),e.forEach(t,function(r){if(e.isString(r)){var t=s.getModuleConfig(r);if(null===t)return void z.push(r);r=t,t.name=void 0}if(s.moduleExists(r.name))return i=r.files.filter(function(e){return s.getModuleConfig(r.name).files.indexOf(e)<0}),0!==i.length&&s._$log.warn('Module "',n,'" attempted to redefine configuration for dependency. "',r.name,'"\n Additional Files Loaded:',i),e.isDefined(s.filesLoader)?void a.push(s.filesLoader(r,o).then(function(){return s._loadDependencies(r)})):d(new Error("Error: New dependencies need to be loaded from external files ("+r.files+"), but no loader has been defined."));if(e.isArray(r)){var u=[];e.forEach(r,function(e){var n=s.getModuleConfig(e);null===n?u.push(e):n.files&&(u=u.concat(n.files))}),u.length>0&&(r={files:u})}else e.isObject(r)&&r.hasOwnProperty("name")&&r.name&&(s.setModuleConfig(r),z.push(r.name));if(e.isDefined(r.files)&&0!==r.files.length){if(!e.isDefined(s.filesLoader))return d(new Error('Error: the module "'+r.name+'" is defined in external files ('+r.files+"), but no loader has been defined."));a.push(s.filesLoader(r,o).then(function(){return s._loadDependencies(r)}))}}),c.all(a)},inject:function(n){var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=this,t=c.defer();if(e.isDefined(n)&&null!==n){if(e.isArray(n)){var a=[];return e.forEach(n,function(e){a.push(r.inject(e))}),c.all(a)}r._addToLoadList(r._getModuleName(n),!0)}if(i.length>0){var s=i.slice(),u=function d(e){z.push(e),r._loadDependencies(e,o).then(function(){try{l=[],L(x,z,o)}catch(e){return r._$log.error(e.message),void t.reject(e)}i.length>0?d(i.shift()):t.resolve(s)},function(e){t.reject(e)})};u(i.shift())}else t.resolve();return t.promise},getRequires:function(n){var r=[];return e.forEach(n.requires,function(e){-1===o.indexOf(e)&&r.push(e)}),r},_invokeQueue:j,_registerInvokeList:$,_register:L,_addToLoadList:h}}],this._init(e.element(n.document))}]);var f=e.bootstrap;e.bootstrap=function(n,o,r){return e.forEach(o.slice(),function(e){h(e,!0,!0)}),f(n,o,r)};var h=function(n,o,r){(s.length>0||o)&&e.isString(n)&&-1===i.indexOf(n)&&(i.push(n),r&&a.push(n))},g=e.module;e.module=function(e,n,o){return h(e,!1,!0),g(e,n,o)},"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="oc.lazyLoad")}(angular,window),function(e){"use strict";e.module("oc.lazyLoad").directive("ocLazyLoad",["$ocLazyLoad","$compile","$animate","$parse",function(n,o,r,t){return{restrict:"A",terminal:!0,priority:1e3,compile:function(i,a){var s=i[0].innerHTML;return i.html(""),function(a,u,c){var l=t(c.ocLazyLoad);a.$watch(function(){return l(a)||c.ocLazyLoad},function(t){e.isDefined(t)&&n.load(t).then(function(){r.enter(s,u);var n=i.contents();e.forEach(n,function(e){3!==e.nodeType&&o(e)(a)})})},!0)}}}}])}(angular),function(e){"use strict";e.module("oc.lazyLoad").config(["$provide",function(n){n.decorator("$ocLazyLoad",["$delegate","$q","$window","$interval",function(n,o,r,t){var i=!1,a=!1,s=r.document.getElementsByTagName("head")[0]||r.document.getElementsByTagName("body")[0];return n.buildElement=function(u,c,l){var d,f,h=o.defer(),g=n._getFilesCache(),p=function(e){var n=(new Date).getTime();return e.indexOf("?")>=0?"&"===e.substring(0,e.length-1)?e+"_dc="+n:e+"&_dc="+n:e+"?_dc="+n};switch(e.isUndefined(g.get(c))&&g.put(c,h.promise),u){case"css":d=r.document.createElement("link"),d.type="text/css",d.rel="stylesheet",d.href=l.cache===!1?p(c):c;break;case"js":d=r.document.createElement("script"),d.src=l.cache===!1?p(c):c;break;default:g.remove(c),h.reject(new Error('Requested type "'+u+'" is not known. Could not inject "'+c+'"'))}d.onload=d.onreadystatechange=function(e){d.readyState&&!/^c|loade/.test(d.readyState)||f||(d.onload=d.onreadystatechange=null,f=1,n._broadcast("ocLazyLoad.fileLoaded",c),h.resolve())},d.onerror=function(){g.remove(c),h.reject(new Error("Unable to load "+c))},d.async=l.serie?0:1;var m=s.lastChild;if(l.insertBefore){var v=e.element(e.isDefined(window.jQuery)?l.insertBefore:document.querySelector(l.insertBefore));v&&v.length>0&&(m=v[0])}if(m.parentNode.insertBefore(d,m),"css"==u){if(!i){var y=r.navigator.userAgent.toLowerCase();if(/iP(hone|od|ad)/.test(r.navigator.platform)){var L=r.navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),$=parseFloat([parseInt(L[1],10),parseInt(L[2],10),parseInt(L[3]||0,10)].join("."));a=6>$}else if(y.indexOf("android")>-1){var j=parseFloat(y.slice(y.indexOf("android")+8));a=4.4>j}else if(y.indexOf("safari")>-1){var E=y.match(/version\/([\.\d]+)/i);a=E&&E[1]&&parseFloat(E[1])<6}}if(a)var _=1e3,w=t(function(){try{d.sheet.cssRules,t.cancel(w),d.onload()}catch(e){--_<=0&&d.onerror()}},20)}return h.promise},n}])}])}(angular),function(e){"use strict";e.module("oc.lazyLoad").config(["$provide",function(n){n.decorator("$ocLazyLoad",["$delegate","$q",function(n,o){return n.filesLoader=function(r){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=[],a=[],s=[],u=[],c=null,l=n._getFilesCache();n.toggleWatch(!0),e.extend(t,r);var d=function(o){var r,d=null;if(e.isObject(o)&&(d=o.type,o=o.path),c=l.get(o),e.isUndefined(c)||t.cache===!1){if(null!==(r=/^(css|less|html|htm|js)?(?=!)/.exec(o))&&(d=r[1],o=o.substr(r[1].length+1,o.length)),!d)if(null!==(r=/[.](css|less|html|htm|js)?((\?|#).*)?$/.exec(o)))d=r[1];else{if(n.jsLoader.hasOwnProperty("ocLazyLoadLoader")||!n.jsLoader.hasOwnProperty("load"))return void n._$log.error("File type could not be determined. "+o);d="js"}"css"!==d&&"less"!==d||-1!==i.indexOf(o)?"html"!==d&&"htm"!==d||-1!==a.indexOf(o)?"js"===d||-1===s.indexOf(o)?s.push(o):n._$log.error("File type is not valid. "+o):a.push(o):i.push(o)}else c&&u.push(c)};if(t.serie?d(t.files.shift()):e.forEach(t.files,function(e){d(e)}),i.length>0){var f=o.defer();n.cssLoader(i,function(o){e.isDefined(o)&&n.cssLoader.hasOwnProperty("ocLazyLoadLoader")?(n._$log.error(o),f.reject(o)):f.resolve()},t),u.push(f.promise)}if(a.length>0){var h=o.defer();n.templatesLoader(a,function(o){e.isDefined(o)&&n.templatesLoader.hasOwnProperty("ocLazyLoadLoader")?(n._$log.error(o),h.reject(o)):h.resolve()},t),u.push(h.promise)}if(s.length>0){var g=o.defer();n.jsLoader(s,function(o){e.isDefined(o)&&n.jsLoader.hasOwnProperty("ocLazyLoadLoader")?(n._$log.error(o),g.reject(o)):g.resolve()},t),u.push(g.promise)}if(0===u.length){var p=o.defer(),m="Error: no file to load has been found, if you're trying to load an existing module you should use the 'inject' method instead of 'load'.";return n._$log.error(m),p.reject(m),p.promise}return t.serie&&t.files.length>0?o.all(u).then(function(){return n.filesLoader(r,t)}):o.all(u)["finally"](function(e){return n.toggleWatch(!1),e})},n.load=function(r){var t,i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=this,s=null,u=[],c=o.defer(),l=e.copy(r),d=e.copy(i);if(e.isArray(l))return e.forEach(l,function(e){u.push(a.load(e,d))}),o.all(u).then(function(e){c.resolve(e)},function(e){c.reject(e)}),c.promise;if(e.isString(l)?(s=a.getModuleConfig(l),s||(s={files:[l]})):e.isObject(l)&&(s=e.isDefined(l.path)&&e.isDefined(l.type)?{files:[l]}:a.setModuleConfig(l)),null===s){var f=a._getModuleName(l);return t='Module "'+(f||"unknown")+'" is not configured, cannot load.',n._$log.error(t),c.reject(new Error(t)),c.promise}e.isDefined(s.template)&&(e.isUndefined(s.files)&&(s.files=[]),e.isString(s.template)?s.files.push(s.template):e.isArray(s.template)&&s.files.concat(s.template));var h=e.extend({},d,s);return e.isUndefined(s.files)&&e.isDefined(s.name)&&n.moduleExists(s.name)?n.inject(s.name,h):(n.filesLoader(s,h).then(function(){n.inject(null,h).then(function(e){c.resolve(e)},function(e){c.reject(e)})},function(e){c.reject(e)}),c.promise)},n}])}])}(angular),function(e){"use strict";e.module("oc.lazyLoad").config(["$provide",function(n){n.decorator("$ocLazyLoad",["$delegate","$q",function(n,o){return n.cssLoader=function(r,t,i){var a=[];e.forEach(r,function(e){a.push(n.buildElement("css",e,i))}),o.all(a).then(function(){t()},function(e){t(e)})},n.cssLoader.ocLazyLoadLoader=!0,n}])}])}(angular),function(e){"use strict";e.module("oc.lazyLoad").config(["$provide",function(n){n.decorator("$ocLazyLoad",["$delegate","$q",function(n,o){return n.jsLoader=function(r,t,i){var a=[];e.forEach(r,function(e){a.push(n.buildElement("js",e,i))}),o.all(a).then(function(){t()},function(e){t(e)})},n.jsLoader.ocLazyLoadLoader=!0,n}])}])}(angular),function(e){"use strict";e.module("oc.lazyLoad").config(["$provide",function(n){n.decorator("$ocLazyLoad",["$delegate","$templateCache","$q","$http",function(n,o,r,t){return n.templatesLoader=function(i,a,s){var u=[],c=n._getFilesCache();return e.forEach(i,function(n){var i=r.defer();u.push(i.promise),t.get(n,s).success(function(r){e.isString(r)&&r.length>0&&e.forEach(e.element(r),function(e){"SCRIPT"===e.nodeName&&"text/ng-template"===e.type&&o.put(e.id,e.innerHTML)}),e.isUndefined(c.get(n))&&c.put(n,!0),i.resolve()}).error(function(e){i.reject(new Error('Unable to load template file "'+n+'": '+e))})}),r.all(u).then(function(){a()},function(e){a(e)})},n.templatesLoader.ocLazyLoadLoader=!0,n}])}])}(angular),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,n){var o;if(null==this)throw new TypeError('"this" is null or not defined');var r=Object(this),t=r.length>>>0;if(0===t)return-1;var i=+n||0;if(Math.abs(i)===1/0&&(i=0),i>=t)return-1;for(o=Math.max(i>=0?i:t-Math.abs(i),0);t>o;){if(o in r&&r[o]===e)return o;o++}return-1});