diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-05-28 14:25:15 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-05-28 14:25:28 +0200 |
commit | 71f25d7e8a70bd017d3589ae54efb19c4ba317f5 (patch) | |
tree | feff1626451656789235e66c7995fd57cba15883 /js/vendor | |
parent | 6195d06a32ce025c6c02fd6e5fe2138a7f82122f (diff) |
update js
Diffstat (limited to 'js/vendor')
27 files changed, 664 insertions, 437 deletions
diff --git a/js/vendor/angular-animate/.bower.json b/js/vendor/angular-animate/.bower.json index d87b94297..e8bfa5fa8 100644 --- a/js/vendor/angular-animate/.bower.json +++ b/js/vendor/angular-animate/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-animate", - "version": "1.4.0-rc.2", + "version": "1.4.0", "main": "./angular-animate.js", "ignore": [], "dependencies": { - "angular": "1.4.0-rc.2" + "angular": "1.4.0" }, "homepage": "https://github.com/angular/bower-angular-animate", - "_release": "1.4.0-rc.2", + "_release": "1.4.0", "_resolution": { "type": "version", - "tag": "v1.4.0-rc.2", - "commit": "00ae49c898ec3e9f78dcbd9d85b222f2322c48bf" + "tag": "v1.4.0", + "commit": "708368e2865fcbee7c6f0f6107aa4eb9c6a9b780" }, "_source": "git://github.com/angular/bower-angular-animate.git", "_target": "~1.4.*", diff --git a/js/vendor/angular-animate/angular-animate.js b/js/vendor/angular-animate/angular-animate.js index 126be09b9..42b03e0b5 100644 --- a/js/vendor/angular-animate/angular-animate.js +++ b/js/vendor/angular-animate/angular-animate.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-rc.2 + * @license AngularJS v1.4.0 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ @@ -256,6 +256,64 @@ function getDomNode(element) { return (element instanceof angular.element) ? element[0] : element; } +var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) { + var tickQueue = []; + var cancelFn; + + function scheduler(tasks) { + // we make a copy since RAFScheduler mutates the state + // of the passed in array variable and this would be difficult + // to track down on the outside code + tickQueue.push([].concat(tasks)); + nextTick(); + } + + /* waitUntilQuiet does two things: + * 1. It will run the FINAL `fn` value only when an uncancelled RAF has passed through + * 2. It will delay the next wave of tasks from running until the quiet `fn` has run. + * + * The motivation here is that animation code can request more time from the scheduler + * before the next wave runs. This allows for certain DOM properties such as classes to + * be resolved in time for the next animation to run. + */ + scheduler.waitUntilQuiet = function(fn) { + if (cancelFn) cancelFn(); + + cancelFn = $$rAF(function() { + cancelFn = null; + fn(); + nextTick(); + }); + }; + + return scheduler; + + function nextTick() { + if (!tickQueue.length) return; + + var updatedQueue = []; + for (var i = 0; i < tickQueue.length; i++) { + var innerQueue = tickQueue[i]; + runNextTask(innerQueue); + if (innerQueue.length) { + updatedQueue.push(innerQueue); + } + } + tickQueue = updatedQueue; + + if (!cancelFn) { + $$rAF(function() { + if (!cancelFn) nextTick(); + }); + } + } + + function runNextTask(tasks) { + var nextTask = tasks.shift(); + nextTask(); + } +}]; + var $$AnimateChildrenDirective = [function() { return function(scope, element, attrs) { var val = attrs.ngAnimateChildren; @@ -662,9 +720,9 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) { var gcsStaggerLookup = createLocalCacheLookup(); this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', - '$document', '$sniffer', '$$rAF', + '$document', '$sniffer', '$$rAFScheduler', function($window, $$jqLite, $$AnimateRunner, $timeout, - $document, $sniffer, $$rAF) { + $document, $sniffer, $$rAFScheduler) { var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); @@ -722,15 +780,10 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) { } var bod = getDomNode($document).body; - var cancelLastRAFRequest; var rafWaitQueue = []; function waitUntilQuiet(callback) { - if (cancelLastRAFRequest) { - cancelLastRAFRequest(); //cancels the request - } rafWaitQueue.push(callback); - cancelLastRAFRequest = $$rAF(function() { - cancelLastRAFRequest = null; + $$rAFScheduler.waitUntilQuiet(function() { gcsLookup.flush(); gcsStaggerLookup.flush(); @@ -935,7 +988,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) { // we need to recalculate the delay value since we used a pre-emptive negative // delay value and the delay value is required for the final event checking. This // property will ensure that this will happen after the RAF phase has passed. - if (timings.transitionDuration > 0) { + if (options.duration == null && timings.transitionDuration > 0) { flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst; } @@ -1452,18 +1505,20 @@ var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationPro var element = animationDetails.element; var options = animationDetails.options || {}; - options.structural = animationDetails.structural; - - // structural animations ensure that the CSS classes are always applied - // before the detection starts. - options.applyClassesEarly = options.structural; - - // we special case the leave animation since we want to ensure that - // the element is removed as soon as the animation is over. Otherwise - // a flicker might appear or the element may not be removed at all - options.event = animationDetails.event; - if (options.event === 'leave' && animationDetails.domOperation) { - options.onDone = animationDetails.domOperation; + if (animationDetails.structural) { + // structural animations ensure that the CSS classes are always applied + // before the detection starts. + options.structural = options.applyClassesEarly = true; + + // we special case the leave animation since we want to ensure that + // the element is removed as soon as the animation is over. Otherwise + // a flicker might appear or the element may not be removed at all + options.event = animationDetails.event; + if (options.event === 'leave') { + options.onDone = options.domOperation; + } + } else { + options.event = null; } var animator = $animateCss(element, options); @@ -1855,6 +1910,14 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { return currentAnimation.state === RUNNING_STATE && newAnimation.structural; }); + rules.cancel.push(function(element, newAnimation, currentAnimation) { + var nO = newAnimation.options; + var cO = currentAnimation.options; + + // if the exact same CSS class is added/removed then it's safe to cancel it + return (nO.addClass && nO.addClass === cO.removeClass) || (nO.removeClass && nO.removeClass === cO.addClass); + }); + this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap', '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', function($$rAF, $rootScope, $rootElement, $document, $$HashMap, @@ -2089,6 +2152,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { structural: isStructural, element: element, event: event, + close: close, options: options, runner: runner }; @@ -2108,8 +2172,17 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation); if (cancelAnimationFlag) { if (existingAnimation.state === RUNNING_STATE) { + // this will end the animation right away and it is safe + // to do so since the animation is already running and the + // runner callback code will run in async existingAnimation.runner.end(); + } else if (existingAnimation.structural) { + // this means that the animation is queued into a digest, but + // hasn't started yet. Therefore it is safe to run the close + // method which will call the runner methods in async. + existingAnimation.close(); } else { + // this will merge the existing animation options into this new follow-up animation mergeAnimationOptions(element, newAnimation.options, existingAnimation.options); } } else { @@ -2145,10 +2218,13 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { if (!isValidAnimation) { close(); + clearElementAnimationState(element); return runner; } - closeParentClassBasedAnimations(parent); + if (isStructural) { + closeParentClassBasedAnimations(parent); + } // the counter keeps track of cancelled animations var counter = (existingAnimation.counter || 0) + 1; @@ -2191,6 +2267,13 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { runner.end(); } + // in the event that the element animation was not cancelled or a follow-up animation + // isn't allowed to animate from here then we need to clear the state of the element + // so that any future animations won't read the expired animation data. + if (!isValidAnimation) { + clearElementAnimationState(element); + } + return; } @@ -2200,7 +2283,9 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { ? 'setClass' : animationDetails.event; - closeParentClassBasedAnimations(parentElement); + if (animationDetails.structural) { + closeParentClassBasedAnimations(parentElement); + } markElementAnimationState(element, RUNNING_STATE); var realRunner = $$animation(element, event, animationDetails.options); @@ -2542,12 +2627,16 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) { return element.data(RUNNER_STORAGE_KEY); } - this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', - function($$jqLite, $rootScope, $injector, $$AnimateRunner) { + this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$rAFScheduler', + function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$rAFScheduler) { var animationQueue = []; var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + var totalPendingClassBasedAnimations = 0; + var totalActiveClassBasedAnimations = 0; + var classBasedAnimationsQueue = []; + // TODO(matsko): document the signature in a better way return function(element, event, options) { options = prepareAnimationOptions(options); @@ -2576,12 +2665,19 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) { options.tempClasses = null; } + var classBasedIndex; + if (!isStructural) { + classBasedIndex = totalPendingClassBasedAnimations; + totalPendingClassBasedAnimations += 1; + } + animationQueue.push({ // this data is used by the postDigest code and passed into // the driver step function element: element, classes: classes, event: event, + classBasedIndex: classBasedIndex, structural: isStructural, options: options, beforeStart: beforeStart, @@ -2596,6 +2692,10 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) { if (animationQueue.length > 1) return runner; $rootScope.$$postDigest(function() { + totalActiveClassBasedAnimations = totalPendingClassBasedAnimations; + totalPendingClassBasedAnimations = 0; + classBasedAnimationsQueue.length = 0; + var animations = []; forEach(animationQueue, function(entry) { // the element was destroyed early on which removed the runner @@ -2610,23 +2710,58 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) { animationQueue.length = 0; forEach(groupAnimations(animations), function(animationEntry) { - // it's important that we apply the `ng-animate` CSS class and the - // temporary classes before we do any driver invoking since these - // CSS classes may be required for proper CSS detection. - animationEntry.beforeStart(); - - var operation = invokeFirstDriver(animationEntry); - var triggerAnimationStart = operation && operation.start; /// TODO(matsko): only recognize operation.start() - - var closeFn = animationEntry.close; - if (!triggerAnimationStart) { - closeFn(); + if (animationEntry.structural) { + triggerAnimationStart(); } else { - var animationRunner = triggerAnimationStart(); - animationRunner.done(function(status) { - closeFn(!status); + classBasedAnimationsQueue.push({ + node: getDomNode(animationEntry.element), + fn: triggerAnimationStart }); - updateAnimationRunners(animationEntry, animationRunner); + + if (animationEntry.classBasedIndex === totalActiveClassBasedAnimations - 1) { + // we need to sort each of the animations in order of parent to child + // relationships. This ensures that the child classes are applied at the + // right time. + classBasedAnimationsQueue = classBasedAnimationsQueue.sort(function(a,b) { + return b.node.contains(a.node); + }).map(function(entry) { + return entry.fn; + }); + + $$rAFScheduler(classBasedAnimationsQueue); + } + } + + function triggerAnimationStart() { + // it's important that we apply the `ng-animate` CSS class and the + // temporary classes before we do any driver invoking since these + // CSS classes may be required for proper CSS detection. + animationEntry.beforeStart(); + + var startAnimationFn, closeFn = animationEntry.close; + + // in the event that the element was removed before the digest runs or + // during the RAF sequencing then we should not trigger the animation. + var targetElement = animationEntry.anchors + ? (animationEntry.from.element || animationEntry.to.element) + : animationEntry.element; + + if (getRunner(targetElement)) { + var operation = invokeFirstDriver(animationEntry); + if (operation) { + startAnimationFn = operation.start; + } + } + + if (!startAnimationFn) { + closeFn(); + } else { + var animationRunner = startAnimationFn(); + animationRunner.done(function(status) { + closeFn(!status); + }); + updateAnimationRunners(animationEntry, animationRunner); + } } }); }); @@ -2698,7 +2833,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) { var lookupKey = from.animationID.toString(); if (!anchorGroups[lookupKey]) { var group = anchorGroups[lookupKey] = { - // TODO(matsko): double-check this code + structural: true, beforeStart: function() { fromAnimation.beforeStart(); toAnimation.beforeStart(); @@ -2816,6 +2951,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) { /* global angularAnimateModule: true, $$rAFMutexFactory, + $$rAFSchedulerFactory, $$AnimateChildrenDirective, $$AnimateRunnerFactory, $$AnimateQueueProvider, @@ -3555,6 +3691,7 @@ angular.module('ngAnimate', []) .directive('ngAnimateChildren', $$AnimateChildrenDirective) .factory('$$rAFMutex', $$rAFMutexFactory) + .factory('$$rAFScheduler', $$rAFSchedulerFactory) .factory('$$AnimateRunner', $$AnimateRunnerFactory) diff --git a/js/vendor/angular-animate/angular-animate.min.js b/js/vendor/angular-animate/angular-animate.min.js index 2a151f6c2..d6791a123 100644 --- a/js/vendor/angular-animate/angular-animate.min.js +++ b/js/vendor/angular-animate/angular-animate.min.js @@ -1,50 +1,52 @@ /* - AngularJS v1.4.0-rc.2 + AngularJS v1.4.0 (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ -(function(A,s,W){'use strict';function ta(a,b,c){if(!a)throw ngMinErr("areq",b||"?",c||"required");return a}function ua(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;X(a)&&(a=a.join(" "));X(b)&&(b=b.join(" "));return a+" "+b}function Ca(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function ba(a,b,c){var d="";a=X(a)?a:a&&T(a)&&a.length?a.split(/\s+/):[];m(a,function(a,t){a&&0<a.length&&(d+=0<t?" ":"",d+=c?b+a:a+b)});return d}function Da(a){if(a instanceof I)switch(a.length){case 0:return[]; -case 1:if(1===a[0].nodeType)return a;break;default:return I(ka(a))}if(1===a.nodeType)return I(a)}function ka(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Ea(a,b,c){m(b,function(b){a.addClass(b,c)})}function Fa(a,b,c){m(b,function(b){a.removeClass(b,c)})}function ga(a){return function(b,c){c.addClass&&(Ea(a,b,c.addClass),c.addClass=null);c.removeClass&&(Fa(a,b,c.removeClass),c.removeClass=null)}}function ha(a){a=a||{};if(!a.$$prepared){var b=a.domOperation|| -J;a.domOperation=function(){a.$$domOperationFired=!0;b();b=J};a.$$prepared=!0}return a}function ca(a,b){va(a,b);wa(a,b)}function va(a,b){b.from&&(a.css(b.from),b.from=null)}function wa(a,b){b.to&&(a.css(b.to),b.to=null)}function Q(a,b,c){var d=(b.addClass||"")+" "+(c.addClass||""),e=(b.removeClass||"")+" "+(c.removeClass||"");a=Ga(a.attr("class"),d,e);xa(b,c);b.addClass=a.addClass?a.addClass:null;b.removeClass=a.removeClass?a.removeClass:null;return b}function Ga(a,b,c){function d(a){T(a)&&(a=a.split(" ")); -var b={};m(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);m(b,function(a,b){e[b]=1});c=d(c);m(c,function(a,b){e[b]=1===e[b]?null:-1});var t={addClass:"",removeClass:""};m(e,function(b,c){var d,e;1===b?(d="addClass",e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(t[d].length&&(t[d]+=" "),t[d]+=c)});return t}function B(a){return a instanceof s.element?a[0]:a}function ya(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};m(c,function(a,b){var c=e[a];if(c){var g=c.charAt(0); -if("-"===g||"+"===g||0<=g)c=Ha(c);0===c&&(c=null);d[b]=c}});return d}function Ha(a){var b=0;a=a.split(/\s*,\s*/);m(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function la(a){return 0===a||null!=a}function za(a,b){var c=O,d=a+"s";b?c+="Duration":d+=" linear all";return[c,d]}function ia(a,b){var c=b?"-"+b+"s":"";da(a,[ea,c]);return[ea,c]}function ma(a,b){var c=b?"paused":"",d=U+"PlayState";da(a,[d,c]);return[d,c]}function da(a, -b){a.style[b[0]]=b[1]}function Aa(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}var J=s.noop,xa=s.extend,I=s.element,m=s.forEach,X=s.isArray,T=s.isString,na=s.isObject,Ia=s.isUndefined,Ja=s.isDefined,Ba=s.isFunction,oa=s.isElement,O,pa,U,qa;A.ontransitionend===W&&A.onwebkittransitionend!==W?(O="WebkitTransition",pa="webkitTransitionEnd transitionend"): -(O="transition",pa="transitionend");A.onanimationend===W&&A.onwebkitanimationend!==W?(U="WebkitAnimation",qa="webkitAnimationEnd animationend"):(U="animation",qa="animationend");var ra=U+"Delay",sa=U+"Duration",ea=O+"Delay";A=O+"Duration";var Ka={transitionDuration:A,transitionDelay:ea,transitionProperty:O+"Property",animationDuration:sa,animationDelay:ra,animationIterationCount:U+"IterationCount"},La={transitionDuration:A,transitionDelay:ea,animationDuration:sa,animationDelay:ra};s.module("ngAnimate", -[]).directive("ngAnimateChildren",[function(){return function(a,b,c){a=c.ngAnimateChildren;s.isString(a)&&0===a.length?b.data("$$ngAnimateChildren",!0):c.$observe("ngAnimateChildren",function(a){b.data("$$ngAnimateChildren","on"===a||"true"===a)})}}]).factory("$$rAFMutex",["$$rAF",function(a){return function(){var b=!1;a(function(){b=!0});return function(c){b?c():a(c)}}}]).factory("$$AnimateRunner",["$q","$$rAFMutex",function(a,b){function c(a){this.setHost(a);this._doneCallbacks=[];this._runInAnimationFrame= -b();this._state=0}c.chain=function(a,b){function c(){if(E===a.length)b(!0);else a[E](function(a){!1===a?b(!1):(E++,c())})}var E=0;c()};c.all=function(a,b){function c(t){p=p&&t;++E===a.length&&b(p)}var E=0,p=!0;m(a,function(a){a.done(c)})};c.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:J,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise}, -then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},"finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._runInAnimationFrame(function(){b._resolve(a)}))}, -_resolve:function(a){2!==this._state&&(m(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=0,this._state=2)}};return c}]).provider("$$animateQueue",["$animateProvider",function(a){function b(a,b,c,p){return d[a].some(function(a){return a(b,c,p)})}function c(a,b){a=a||{};var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var d=this.rules={skip:[],cancel:[],join:[]};d.join.push(function(a,b,d){return!b.structural&&c(b.options)});d.skip.push(function(a, -b,d){return!b.structural&&!c(b.options)});d.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});d.skip.push(function(a,b,c){return c.structural&&!b.structural});d.cancel.push(function(a,b,c){return c.structural&&b.structural});d.cancel.push(function(a,b,c){return 2===c.state&&b.structural});this.$get=["$$rAF","$rootScope","$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite",function(d,t,E,p,g,h,M,q,Ma){function s(a,b){var c=B(a),f=[],l= -k[b];l&&m(l,function(a){a.node.contains(c)&&f.push(a.callback)});return f}function Y(a,b,c,f){d(function(){m(s(b,a),function(a){a(b,c,f)})})}function F(a,R,u){function k(b,c,f,l){Y(c,a,f,l);b.progress(c,f,l)}function d(b){z(a,u);ca(a,u);u.domOperation();v.complete(!b)}var x,V;if(a=Da(a))x=B(a),V=a.parent();u=ha(u);var v=new M;if(!x)return d(),v;X(u.addClass)&&(u.addClass=u.addClass.join(" "));X(u.removeClass)&&(u.removeClass=u.removeClass.join(" "));u.from&&!na(u.from)&&(u.from=null);u.to&&!na(u.to)&& -(u.to=null);var e=[x.className,u.addClass,u.removeClass].join(" ");if(!Na(e))return d(),v;var p=0<=["enter","move","leave"].indexOf(R),g=!G||l.get(x),e=!g&&r.get(x)||{},m=!!e.state;g||m&&1==e.state||(g=!f(a,V,R));if(g)return d(),v;p&&L(a);g={structural:p,element:a,event:R,options:u,runner:v};if(m){if(b("skip",a,g,e)){if(2===e.state)return d(),v;Q(a,e.options,u);return e.runner}if(b("cancel",a,g,e))2===e.state?e.runner.end():Q(a,g.options,e.options);else if(b("join",a,g,e))if(2===e.state)Q(a,u,{}); -else return R=g.event=e.event,u=Q(a,e.options,g.options),v}else Q(a,u,{});(m=g.structural)||(m="animate"===g.event&&0<Object.keys(g.options.to||{}).length||c(g.options));if(!m)return d(),v;H(V);var q=(e.counter||0)+1;g.counter=q;D(a,1,g);t.$$postDigest(function(){var b=r.get(x),f=!b,b=b||{},l=a.parent()||[],G=0<l.length&&("animate"===b.event||b.structural||c(b.options));if(f||b.counter!==q||!G){if(f&&(z(a,u),ca(a,u)),f||p&&b.event!==R)u.domOperation(),v.end()}else R=!b.structural&&c(b.options,!0)? -"setClass":b.event,H(l),D(a,2),b=h(a,R,b.options),b.done(function(b){d(!b);(b=r.get(x))&&b.counter===q&&C(B(a));k(v,R,"close",{})}),v.setHost(b),k(v,R,"start",{})});return v}function L(a){a=B(a).querySelectorAll("[data-ng-animate]");m(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=r.get(a);switch(b){case 2:c.runner.end();case 1:c&&r.remove(a)}})}function C(a){a=B(a);a.removeAttribute("data-ng-animate");r.remove(a)}function w(a,b){return B(a)===B(b)}function H(a){a=B(a);do{if(!a|| -1!==a.nodeType)break;var b=r.get(a);if(b){var f=a;!b.structural&&c(b.options)&&(2===b.state&&b.runner.end(),C(f))}a=a.parentNode}while(1)}function f(a,b,c){var f=c=!1,G=!1,d;for((a=a.data("$ngAnimatePin"))&&(b=a);b&&b.length;){f||(f=w(b,E));a=b[0];if(1!==a.nodeType)break;var k=r.get(a)||{};G||(G=k.structural||l.get(a));if(Ia(d)||!0===d)a=b.data("$$ngAnimateChildren"),Ja(a)&&(d=a);if(G&&!1===d)break;f||(f=w(b,E),f||(a=b.data("$ngAnimatePin"))&&(b=a));c||(c=w(b,V));b=b.parent()}return(!G||d)&&f&&c} -function D(a,b,c){c=c||{};c.state=b;a=B(a);a.setAttribute("data-ng-animate",b);c=(b=r.get(a))?xa(b,c):c;r.put(a,c)}var r=new g,l=new g,G=null,x=t.$watch(function(){return 0===q.totalPendingRequests},function(a){a&&(x(),t.$$postDigest(function(){t.$$postDigest(function(){null===G&&(G=!0)})}))}),V=I(p[0].body),k={},v=a.classNameFilter(),Na=v?function(a){return v.test(a)}:function(){return!0},z=ga(Ma);return{on:function(a,b,c){b=ka(b);k[a]=k[a]||[];k[a].push({node:b,callback:c})},off:function(a,b,c){function f(a, -b,c){var l=ka(b);return a.filter(function(a){return!(a.node===l&&(!c||a.callback===c))})}var l=k[a];l&&(k[a]=1===arguments.length?null:f(l,b,c))},pin:function(a,b){ta(oa(a),"element","not an element");ta(oa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,f){c=c||{};c.domOperation=f;return F(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!G;else if(oa(a)){var f=B(a),d=l.get(f);1===c?b=!d:(b=!!b)?d&&l.remove(f):l.put(f,!0)}else b=G=!!a;return b}}}]}]).provider("$$animation", -["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner",function(a,e,t,E){var p=[],g=ga(a);return function(h,M,q){function s(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];m(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function ja(a){var b=[],c={};m(a,function(a,f){var l=B(a.element),d=0<=["enter","move"].indexOf(a.event), -l=a.structural?s(l):[];if(l.length){var k=d?"to":"from";m(l,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:f,element:I(a)}})}else b.push(a)});var f={},d={};m(c,function(c,r){var x=c.from,e=c.to;if(x&&e){var H=a[x.animationID],g=a[e.animationID],D=x.animationID.toString();if(!d[D]){var p=d[D]={beforeStart:function(){H.beforeStart();g.beforeStart()},close:function(){H.close();g.close()},classes:Y(H.classes,g.classes),from:H,to:g,anchors:[]};p.classes.length?b.push(p): -(b.push(H),b.push(g))}d[D].anchors.push({out:x.element,"in":e.element})}else x=x?x.animationID:e.animationID,e=x.toString(),f[e]||(f[e]=!0,b.push(a[x]))});return b}function Y(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],f=0;f<a.length;f++){var d=a[f];if("ng-"!==d.substring(0,3))for(var e=0;e<b.length;e++)if(d===b[e]){c.push(d);break}}return c.join(" ")}function F(a){for(var b=c.length-1;0<=b;b--){var f=c[b];if(t.has(f)&&(f=t.get(f)(a)))return f}}function L(a,c){a.from&&a.to?(b(a.from.element).setHost(c), -b(a.to.element).setHost(c)):b(a.element).setHost(c)}function C(){var a=b(h);!a||"leave"===M&&q.$$domOperationFired||a.end()}function w(b){h.off("$destroy",C);h.removeData("$$animationRunner");g(h,q);ca(h,q);q.domOperation();r&&a.removeClass(h,r);h.removeClass("ng-animate");f.complete(!b)}q=ha(q);var H=0<=["enter","move","leave"].indexOf(M),f=new E({end:function(){w()},cancel:function(){w(!0)}});if(!c.length)return w(),f;h.data("$$animationRunner",f);var D=ua(h.attr("class"),ua(q.addClass,q.removeClass)), -r=q.tempClasses;r&&(D+=" "+r,q.tempClasses=null);p.push({element:h,classes:D,event:M,structural:H,options:q,beforeStart:function(){h.addClass("ng-animate");r&&a.addClass(h,r)},close:w});h.on("$destroy",C);if(1<p.length)return f;e.$$postDigest(function(){var a=[];m(p,function(c){b(c.element)&&a.push(c)});p.length=0;m(ja(a),function(a){a.beforeStart();var b=F(a),b=b&&b.start,c=a.close;b?(b=b(),b.done(function(a){c(!a)}),L(a,b)):c()})});return f}}]}]).provider("$animateCss",["$animateProvider",function(a){var b= -Aa(),c=Aa();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$document","$sniffer","$$rAF",function(a,e,t,E,p,g,h){function M(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++F))+"-"+a.getAttribute("class")+"-"+b}function q(g,f,D,r){var l;0<b.count(D)&&(l=c.get(D),l||(f=ba(f,"-stagger"),e.addClass(g,f),l=ya(a,g,r),l.animationDuration=Math.max(l.animationDuration,0),l.transitionDuration=Math.max(l.transitionDuration,0),e.removeClass(g,f),c.put(D,l)));return l|| -{}}function s(a){C&&C();w.push(a);C=h(function(){C=null;b.flush();c.flush();for(var a=L.offsetWidth+1,d=0;d<w.length;d++)w[d](a);w.length=0})}function ja(c,f,e){f=b.get(e);f||(f=ya(a,c,Ka),"infinite"===f.animationIterationCount&&(f.animationIterationCount=1));b.put(e,f);c=f;e=c.animationDelay;f=c.transitionDelay;c.maxDelay=e&&f?Math.max(e,f):e||f;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var Y=ga(e),F=0,L=B(p).body,C,w=[];return function(a, -c){function d(){l()}function r(){l(!0)}function l(b){if(!(L||u&&w)){L=!0;w=!1;e.removeClass(a,Z);e.removeClass(a,W);ma(k,!1);ia(k,!1);m(v,function(a){k.style[a[0]]=""});Y(a,c);ca(a,c);if(c.onDone)c.onDone();F&&F.complete(!b)}}function G(a){n.blockTransition&&ia(k,a);n.blockKeyframeAnimation&&ma(k,!!a)}function x(){F=new t({end:d,cancel:r});l();return{$$willAnimate:!1,start:function(){return F},end:d}}function p(){function b(){if(!L){G(!1);m(v,function(a){k.style[a[0]]=a[1]});Y(a,c);e.addClass(a,W); -if(n.recalculateTimingStyles){fa=k.className+" "+Z;$=M(k,fa);y=ja(k,fa,$);P=y.maxDelay;J=Math.max(P,0);K=y.maxDuration;if(0===K){l();return}n.hasTransitions=0<y.transitionDuration;n.hasAnimations=0<y.animationDuration}if(n.applyTransitionDelay||n.applyAnimationDelay){P="boolean"!==typeof c.delay&&la(c.delay)?parseFloat(c.delay):P;J=Math.max(P,0);var h;n.applyTransitionDelay&&(y.transitionDelay=P,h=[ea,P+"s"],v.push(h),k.style[h[0]]=h[1]);n.applyAnimationDelay&&(y.animationDelay=P,h=[ra,P+"s"],v.push(h), -k.style[h[0]]=h[1])}A=1E3*J;I=1E3*K;if(c.easing){var p=c.easing;n.hasTransitions&&(h=O+"TimingFunction",v.push([h,p]),k.style[h]=p);n.hasAnimations&&(h=U+"TimingFunction",v.push([h,p]),k.style[h]=p)}y.transitionDuration&&x.push(pa);y.animationDuration&&x.push(qa);r=Date.now();a.on(x.join(" "),g);E(d,A+1.5*I);wa(a,c)}}function d(){l()}function g(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||b.timeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-r,0)>=A&&b>= -K&&(u=!0,l())}if(!L){var r,x=[],h=function(a){if(u)w&&a&&(w=!1,l());else if(w=!a,y.animationDuration)if(a=ma(k,w),w)v.push(a);else{var b=v,c=b.indexOf(a);0<=a&&b.splice(c,1)}},V=0<T&&(y.transitionDuration&&0===S.transitionDuration||y.animationDuration&&0===S.animationDuration)&&Math.max(S.animationDelay,S.transitionDelay);V?E(b,Math.floor(V*T*1E3),!1):b();C.resume=function(){h(!0)};C.pause=function(){h(!1)}}}var k=B(a);c=ha(c);var v=[],h=a.attr("class"),z=Ca(c),L,w,u,F,C,J,A,K,I;if(0===c.duration|| -!g.animations&&!g.transitions)return x();var aa=c.event&&X(c.event)?c.event.join(" "):c.event,Q="",N="";aa&&c.structural?Q=ba(aa,"ng-",!0):aa&&(Q=aa);c.addClass&&(N+=ba(c.addClass,"-add"));c.removeClass&&(N.length&&(N+=" "),N+=ba(c.removeClass,"-remove"));c.applyClassesEarly&&N.length&&(Y(a,c),N="");var Z=[Q,N].join(" ").trim(),fa=h+" "+Z,W=ba(Z,"-active"),h=z.to&&0<Object.keys(z.to).length;if(!h&&!Z)return x();var $,S;0<c.stagger?(z=parseFloat(c.stagger),S={transitionDelay:z,animationDelay:z,transitionDuration:0, -animationDuration:0}):($=M(k,fa),S=q(k,Z,$,La));e.addClass(a,Z);c.transitionStyle&&(z=[O,c.transitionStyle],da(k,z),v.push(z));0<=c.duration&&(z=0<k.style[O].length,z=za(c.duration,z),da(k,z),v.push(z));c.keyframeStyle&&(z=[U,c.keyframeStyle],da(k,z),v.push(z));var T=S?0<=c.staggerIndex?c.staggerIndex:b.count($):0;(aa=0===T)&&ia(k,9999);var y=ja(k,fa,$),P=y.maxDelay;J=Math.max(P,0);K=y.maxDuration;var n |