/* * angular-ui-router-css * https://github.com/harm-less/angular-ui-router-css * Version: 0.1.1 - 2017-12-11 * License: MIT */!function(a,b){"use strict";function c(a){throw Error('Error "angular-ui-router-css": '+a)}function d(a){return Number(a)===a&&a%1===0}function e(){return"@resource~"+t++}function f(b){return a.isFunction(b)||a.isArray(b)&&a.isFunction(b[b.length-1])}function g(b,g){return f(b)||(!a.isString(b)&&b||(b={url:b}),a.isUndefined(b.url)&&c("The definition needs to contain a URL: "+JSON.stringify(b)),b.id&&(g=b.id),d(g)&&(g=e()),b.id=g),b}function h(b){if(f(b))return b;a.isString(b)&&(b=[b]);var c={};return a.forEach(b,function(a,b){var d=g(a,b);c[d.id]=d}),c}function i(a,c){var d=m.defer();return a.element=b.loadStylesheet(a.url,function(){d.resolve()},c),d.promise}function j(b){function c(a){return n.invoke(a,null,k)}u=u.concat(v),v=[],p=null;var d=b.to(),e=[];if(d.data&&d.data.css)for(var j=d.data;null!==j;)e.unshift(j.css),j=Object.getPrototypeOf(j);var k={$transition$:b},t={};a.forEach(e,function(b){f(b)&&(b=h(c(b))),a.extend(t,b)}),t=a.copy(t);var w=[];return a.forEach(t,function(a){if(f(a)&&(a=g(c(a))),a.url){var b=i(a,{insertBefore:o});b.then(function(){a.element.disabled=!0}),a.promise=b,p||(p=a),w.push(b),v.push(a)}}),l.$broadcast(q+"."+r,v),m.all(w).then(function(){l.$broadcast(q+"."+s)})}function k(){a.forEach(v,function(a){a.element.disabled=!1});for(var b;b=u.pop();)b.element.remove()}a.isUndefined(b.DEBUG)&&(b.DEBUG=!0);var l,m,n,o,p,q="uiRouterCss",r="loadingStarted",s="loadingFinished",t=1,u=[],v=[];a.module("hl.css.ui.router",["ui.router"]).config(["$stateProvider",function(a){a.decorator("data",function(a,b){var c=b(a);return c&&c.css&&(c.css=h(c.css)),c})}]).run(["$rootScope","$state","$transitions","$timeout","$q","$injector",function(a,b,c,d,e,f){l=a,m=e,n=f,c.onBefore({},function(a){a.addResolvable({token:"@css",resolveFn:function(){return j(a)}})}),c.onSuccess({},function(){k()})}]).directive("uiCss",function(){return{restrict:"A",link:function(a,b,c){o=b[0]}}}).service("hlUiRouterCss",["$timeout",function(b){this.injectStyleDefinitions=function(c){return c=h(c),b(function(){a.forEach(c,function(a){i(a,{insertBefore:p?p.element:o})})}),function(){a.forEach(c,function(a){a.element.remove()})}}}])}(angular,window);