"use strict";!function(a){var b=a.module("angularCSS",[]);a.module("door3.css",[]).run(function(){console.error('AngularCSS: The module name "door3.css" is now deprecated. Please use "angularCSS" instead.')}),b.provider("$css",[function(){var b=this.defaults={element:"link",rel:"stylesheet",type:"text/css",container:"head",method:"append",weight:0},d=!1,e={};this.debugMode=function(b){return a.isDefined(b)&&(d=b),d},this.$get=["$rootScope","$injector","$q","$window","$timeout","$compile","$http","$filter","$log","$interpolate",function(f,g,h,i,j,k,l,m,n,o){function x(a,b,c){c&&b.hasOwnProperty("css")&&p.bind(b.css,c)}function y(a,b,c){c&&(p.remove(p.getFromRoute(c).concat(w)),w.length=0),b&&p.add(p.getFromRoute(b))}function z(a,b){b&&p.add(p.getFromState(b))}function A(a,b,c,d){j(function(){d&&(p.remove(p.getFromState(d).concat(w)),w.length=0)},300)}function B(b){a.isDefined(u.breakpoints)&&(b.breakpoint in u.breakpoints&&(b.media=u.breakpoints[b.breakpoint]),delete b.breakpoints)}function C(b){return b?(a.isFunction(b)&&(b=a.copy(g.invoke(b))),a.isString(b)&&(b=a.extend({href:b},u)),a.isArray(b)&&a.isString(b[0])&&a.forEach(b,function(c){b=a.extend({href:c},u)}),a.isObject(b)&&!a.isArray(b)&&(b=a.extend({},u,b)),a.isArray(b)&&a.isObject(b[0])&&a.forEach(b,function(c){b=a.extend(c,u)}),B(b),b):void 0}function D(a){if(!a)return void(d&&n.error("No stylesheets provided"));var b="?cache=";-1===a.href.indexOf(b)&&(a.href=a.href+(a.bustCache?b+(new Date).getTime():""))}function E(a,b){return a&&b?m("filter")(a,function(a){return a[b]}):void(d&&n.error("filterBy: missing array or property"))}function F(a){return a?(r[a.href]=i.matchMedia(a.media),s[a.href]=function(b){j(function(){if(b.matches)f.stylesheets.push(a);else{var c=f.stylesheets.indexOf(m("filter")(f.stylesheets,{href:a.href})[0]);-1!==c&&f.stylesheets.splice(c,1)}})},r[a.href].addListener(s[a.href]),void s[a.href](r[a.href])):void(d&&n.error("No stylesheet provided"))}function G(b){return b?void(f&&a.isDefined(r)&&r[b.href]&&a.isDefined(s)&&r[b.href].removeListener(s[b.href])):void(d&&n.error("No stylesheet provided"))}function H(a){return a?!(!a.media||-1!==t.indexOf(a.media)||!i.matchMedia):void(d&&n.error("No stylesheet provided"))}var p={},q='';q=q.replace(/{{/g,o.startSymbol()).replace(/}}/g,o.endSymbol());var r={},s={},t=["print"],u=a.extend({},b),v=a.element(document.querySelector?document.querySelector(u.container):document.getElementsByTagName(u.container)[0]),w=[];return a.forEach(c,function(a,b){a.hasOwnProperty("css")&&(c[b]=C(a.css))}),f.stylesheets=[],v[u.method](k(q)(f)),f.$on("$directiveAdd",x),f.$on("$routeChangeSuccess",y),f.$on("$stateChangeStart",z),f.$on("$stateChangeSuccess",A),p.getFromRoute=function(b){if(!b)return void(d&&n.error("Get From Route: No route provided"));var c=null,e=[];return b.$$route&&b.$$route.css?c=b.$$route.css:b.css&&(c=b.css),c&&(a.isArray(c)?a.forEach(c,function(b){a.isFunction(b)&&w.push(C(b)),e.push(C(b))}):(a.isFunction(c)&&w.push(C(c)),e.push(C(c)))),e},p.getFromRoutes=function(b){if(!b)return void(d&&n.error("Get From Routes: No routes provided"));var c=[];return a.forEach(b,function(a){var b=p.getFromRoute(a);b.length&&c.push(b[0])}),c},p.getFromState=function(b){if(!b)return void(d&&n.error("Get From State: No state provided"));var c=[];if(a.isDefined(b.views)&&a.forEach(b.views,function(b){b.css&&(a.isFunction(b.css)&&w.push(C(b.css)),c.push(C(b.css)))}),a.isDefined(b.children)&&a.forEach(b.children,function(b){b.css&&(a.isFunction(b.css)&&w.push(C(b.css)),c.push(C(b.css))),a.isDefined(b.children)&&a.forEach(b.children,function(b){b.css&&(a.isFunction(b.css)&&w.push(C(b.css)),c.push(C(b.css)))})}),a.isDefined(b.css)||a.isDefined(b.data)&&a.isDefined(b.data.css)){var e=b.css||b.data.css;a.isArray(e)?a.forEach(e,function(b){a.isFunction(b)&&w.push(C(b)),c.push(C(b))}):(a.isFunction(e)&&w.push(C(e)),c.push(C(e)))}return c},p.getFromStates=function(b){if(!b)return void(d&&n.error("Get From States: No states provided"));var c=[];return a.forEach(b,function(b){var d=p.getFromState(b);a.isArray(d)?a.forEach(d,function(a){c.push(a)}):c.push(d)}),c},p.preload=function(b,e){b||(b=[],c.length&&Array.prototype.push.apply(b,c),g.has("$route")&&Array.prototype.push.apply(b,p.getFromRoutes(g.get("$route").routes)),g.has("$state")&&Array.prototype.push.apply(b,p.getFromStates(g.get("$state").get())),b=E(b,"preload")),a.isArray(b)||(b=[b]);var f=[];a.forEach(b,function(a,c){a=b[c]=C(a),f.push(l.get(a.href).error(function(){d&&n.error("AngularCSS: Incorrect path for "+a.href)}))}),a.isFunction(e)&&h.all(f).then(function(){e(b)})},p.bind=function(b,c){if(!b||!c)return void(d&&n.error("No scope or stylesheets provided"));var e=[];a.isArray(b)?a.forEach(b,function(a){e.push(C(a))}):e.push(C(b)),p.add(e),d&&n.debug("$css.bind(): Added",e),c.$on("$destroy",function(){p.remove(e),d&&n.debug("$css.bind(): Removed",e)})},p.add=function(b){return b?(a.isArray(b)||(b=[b]),a.forEach(b,function(a){a=C(a),a.href&&(e[a.href]=void 0==e[a.href]?1:e[a.href]+1,m("filter")(f.stylesheets,{href:a.href}).length||(D(a),H(a)?F(a):f.stylesheets.push(a),d&&n.debug("$css.add(): "+a.href)))}),void f.$broadcast("$cssAdd",b,f.stylesheets)):void(d&&n.error("No stylesheets provided"))},p.remove=function(b){return b?(a.isArray(b)||(b=[b]),b=m("filter")(b,function(a){return!a.persist}),a.forEach(b,function(a){if(void 0!=e[a.href]&&(e[a.href]=e[a.href]-1,0===e[a.href])){a=C(a);var b=f.stylesheets.indexOf(m("filter")(f.stylesheets,{href:a.href})[0]);-1!==b&&f.stylesheets.splice(b,1),G(a),d&&n.debug("$css.remove(): "+a.href)}}),void f.$broadcast("$cssRemove",b,f.stylesheets)):void(d&&n.error("No stylesheets provided"))},p.removeAll=function(){f&&f.hasOwnProperty("stylesheets")&&(f.stylesheets.length=0,e={}),d&&n.debug("all stylesheets removed")},p.preload(),p}]}]),b.filter("$cssLinks",function(){return function(b){if(!b||!a.isArray(b))return b;var c="";return a.forEach(b,function(a){c+='-1};a.module=function(){var b=d.apply(this,arguments),g=b.directive;b.directive=function(b,d){var h=a.isFunction(d)?d:d[d?d.length-1:0];try{var i=a.copy(h)();i.directiveName=b,i.hasOwnProperty("css")&&!f(e(c,function(a){return a.ddo.directiveName}),b)&&c.push({ddo:i,handled:!1})}catch(j){}return g.apply(this,arguments)};var h=b.component;return b.component=function(a,b){return b.directiveName=a,b.hasOwnProperty("css")&&!f(e(c,function(a){return a.ddo.directiveName}),a)&&c.push({ddo:b,handled:!1}),h.apply(this,arguments)},b.config(["$provide","$injector",function(b,d){a.forEach(c,function(a){if(!a.handled){var c=a.ddo,e=c.directiveName+"Directive";d.has(e)&&(a.handled=!0,b.decorator(e,["$delegate","$rootScope","$timeout",function(a,b,d){var e=a[0],f=e.compile;return e.css||(e.css=c.css),e.compile=function(){var a=f?f.apply(this,arguments):!1;return function(c){var f=arguments;d(function(){a&&a.apply(this,f)}),b.$broadcast("$directiveAdd",e,c)}},a}]))}})}]),b}}(angular);