angular.module("mnBusy",[]).factory("busyTrackerFactory",["$timeout","$q",function(a,b){return function(){var c={};return c.delayPromise=null,c.durationPromise=null,c.processingPromise=null,c.busyPromise=null,c.reset=function(d){function e(){c.processingPromise=null,null!==c.delayPromise&&a.cancel(c.delayPromise)}var f=[];angular.forEach(d.promises,function(a){a&&"undefined"!=typeof a.then&&-1===f.indexOf(a)&&f.push(a)}),0!==f.length&&(d.delay=d.delay||0,c.delayPromise=a(function(){},parseInt(d.delay,10)),c.delayPromise.then(function(){c.delayPromise=null,d.minDuration=d.minDuration||0,c.durationPromise=a(function(){c.durationPromise=null},parseInt(d.minDuration,10)),c.busyPromise=b.all([c.durationPromise,c.processingPromise]).then(function(){c.busyPromise=null,d.onReady&&d.onReady()})},function(){c.delayPromise=null,d.onReady&&d.onReady()}),c.processingPromise=b.all(f).then(function(){e()},function(){e()}))},c.isBusy=function(){return null===c.delayPromise&&null!==c.busyPromise},c.isActive=function(){return null!==c.delayPromise||null!==c.busyPromise},c}}]).directive("busyTracker",["$injector","busyTrackerFactory",function(a,b){function c(b){var c={},d="busyDefaults";a.has(d)&&angular.extend(c,a.get(d));var e=b.busyConfig;if(e){var f=d+e.charAt(0).toUpperCase()+e.slice(1);a.has(f)&&angular.extend(c,a.get(f))}return c}var d;return{restrict:"A",scope:!0,transclude:!0,templateUrl:function(a,b){return d=c(b),d.templateUrl},link:function(a,c,e){a.$tracker=b(),a.$tracker.config=d,a.$watchCollection(e.busyTracker,function(b){angular.isArray(b)||(b=[b]),!a.$tracker.isActive()&&b.length>0&&a.$tracker.reset({promises:b,delay:d.delay,minDuration:d.minDuration,onReady:function(){var b=e.busyReady;b&&a.$parent.$eval(b)}})},!0);var f=e.busyParams;f&&a.$watchCollection(f,function(b){a.$tracker.params=b},!0)}}}]).value("busyDefaults",{delay:200,minDuration:500}).value("busyDefaultsButton",{templateUrl:"mnBusy/button.html"}).value("busyDefaultsOverlay",{templateUrl:"mnBusy/overlay.html"}),angular.module("mnBusy").run(["$templateCache",function(a){"use strict";a.put("mnBusy/button.html",'
{{$tracker.params.message}}
'),a.put("mnBusy/overlay.html",'
')}]);