summaryrefslogtreecommitdiffstats
path: root/js/vendor
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2015-05-28 14:25:15 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2015-05-28 14:25:28 +0200
commit71f25d7e8a70bd017d3589ae54efb19c4ba317f5 (patch)
treefeff1626451656789235e66c7995fd57cba15883 /js/vendor
parent6195d06a32ce025c6c02fd6e5fe2138a7f82122f (diff)
update js
Diffstat (limited to 'js/vendor')
-rw-r--r--js/vendor/angular-animate/.bower.json10
-rw-r--r--js/vendor/angular-animate/angular-animate.js221
-rw-r--r--js/vendor/angular-animate/angular-animate.min.js92
-rw-r--r--js/vendor/angular-animate/angular-animate.min.js.map6
-rw-r--r--js/vendor/angular-animate/bower.json4
-rw-r--r--js/vendor/angular-animate/package.json2
-rw-r--r--js/vendor/angular-mocks/.bower.json10
-rw-r--r--js/vendor/angular-mocks/angular-mocks.js2
-rw-r--r--js/vendor/angular-mocks/bower.json4
-rw-r--r--js/vendor/angular-mocks/package.json2
-rw-r--r--js/vendor/angular-route/.bower.json10
-rw-r--r--js/vendor/angular-route/angular-route.js2
-rw-r--r--js/vendor/angular-route/angular-route.min.js2
-rw-r--r--js/vendor/angular-route/bower.json4
-rw-r--r--js/vendor/angular-route/package.json2
-rw-r--r--js/vendor/angular-sanitize/.bower.json10
-rw-r--r--js/vendor/angular-sanitize/angular-sanitize.js2
-rw-r--r--js/vendor/angular-sanitize/angular-sanitize.min.js2
-rw-r--r--js/vendor/angular-sanitize/bower.json4
-rw-r--r--js/vendor/angular-sanitize/package.json2
-rw-r--r--js/vendor/angular/.bower.json8
-rw-r--r--js/vendor/angular/angular.js162
-rw-r--r--js/vendor/angular/angular.min.js530
-rw-r--r--js/vendor/angular/angular.min.js.gzipbin46330 -> 51446 bytes
-rw-r--r--js/vendor/angular/angular.min.js.map4
-rw-r--r--js/vendor/angular/bower.json2
-rw-r--r--js/vendor/angular/package.json2
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