Skip to content
Browse files

add 1.2.3 unicorn-zapper

  • Loading branch information...
1 parent 2106f2e commit 523fb900a6342f3f3ed1cf530a74f143a4df10d2 @petebacondarwin petebacondarwin committed
Showing with 83,675 additions and 0 deletions.
  1. BIN 1.2.3/angular-1.2.3.zip
  2. +1,294 −0 1.2.3/angular-animate.js
  3. +22 −0 1.2.3/angular-animate.min.js
  4. +8 −0 1.2.3/angular-animate.min.js.map
  5. +202 −0 1.2.3/angular-cookies.js
  6. +8 −0 1.2.3/angular-cookies.min.js
  7. +8 −0 1.2.3/angular-cookies.min.js.map
  8. +24 −0 1.2.3/angular-csp.css
  9. +410 −0 1.2.3/angular-loader.js
  10. +9 −0 1.2.3/angular-loader.min.js
  11. +8 −0 1.2.3/angular-loader.min.js.map
  12. +2,115 −0 1.2.3/angular-mocks.js
  13. +546 −0 1.2.3/angular-resource.js
  14. +12 −0 1.2.3/angular-resource.min.js
  15. +8 −0 1.2.3/angular-resource.min.js.map
  16. +891 −0 1.2.3/angular-route.js
  17. +14 −0 1.2.3/angular-route.min.js
  18. +8 −0 1.2.3/angular-route.min.js.map
  19. +615 −0 1.2.3/angular-sanitize.js
  20. +14 −0 1.2.3/angular-sanitize.min.js
  21. +8 −0 1.2.3/angular-sanitize.min.js.map
  22. +32,287 −0 1.2.3/angular-scenario.js
  23. +563 −0 1.2.3/angular-touch.js
  24. +13 −0 1.2.3/angular-touch.min.js
  25. +8 −0 1.2.3/angular-touch.min.js.map
  26. +20,282 −0 1.2.3/angular.js
  27. +201 −0 1.2.3/angular.min.js
  28. +8 −0 1.2.3/angular.min.js.map
  29. +19 −0 1.2.3/docs/.htaccess
  30. +381 −0 1.2.3/docs/appcache-offline.manifest
  31. +20 −0 1.2.3/docs/appcache.manifest
  32. +317 −0 1.2.3/docs/components/angular-bootstrap-prettify.js
  33. +392 −0 1.2.3/docs/components/angular-bootstrap.js
  34. +13 −0 1.2.3/docs/components/bootstrap/.bower.json
  35. +686 −0 1.2.3/docs/components/bootstrap/css/bootstrap-responsive.css
  36. +12 −0 1.2.3/docs/components/bootstrap/css/bootstrap-responsive.min.css
  37. +3,990 −0 1.2.3/docs/components/bootstrap/css/bootstrap.css
  38. +689 −0 1.2.3/docs/components/bootstrap/css/bootstrap.min.css
  39. BIN 1.2.3/docs/components/bootstrap/img/glyphicons-halflings-white.png
  40. BIN 1.2.3/docs/components/bootstrap/img/glyphicons-halflings.png
  41. +1,726 −0 1.2.3/docs/components/bootstrap/js/bootstrap.js
  42. +6 −0 1.2.3/docs/components/bootstrap/js/bootstrap.min.js
  43. +24 −0 1.2.3/docs/components/font-awesome/css/font-awesome-ie7.min.css
  44. +24 −0 1.2.3/docs/components/font-awesome/css/font-awesome.css
  45. +24 −0 1.2.3/docs/components/font-awesome/css/font-awesome.min.css
  46. BIN 1.2.3/docs/components/font-awesome/font/FontAwesome.otf
  47. BIN 1.2.3/docs/components/font-awesome/font/fontawesome-webfont.eot
  48. +339 −0 1.2.3/docs/components/font-awesome/font/fontawesome-webfont.svg
  49. BIN 1.2.3/docs/components/font-awesome/font/fontawesome-webfont.ttf
  50. BIN 1.2.3/docs/components/font-awesome/font/fontawesome-webfont.woff
  51. +1,575 −0 1.2.3/docs/components/google-code-prettify.js
  52. +9,789 −0 1.2.3/docs/components/jquery.js
  53. +6 −0 1.2.3/docs/components/jquery.min.js
  54. +1,756 −0 1.2.3/docs/components/lunr.js
  55. +7 −0 1.2.3/docs/components/lunr.min.js
  56. +1,151 −0 1.2.3/docs/components/marked.js
  57. +62 −0 1.2.3/docs/css/animations.css
  58. +150 −0 1.2.3/docs/css/doc_widgets.css
  59. +541 −0 1.2.3/docs/css/docs.css
  60. +51 −0 1.2.3/docs/css/prettify.css
  61. +295 −0 1.2.3/docs/docs-data.js
  62. +44 −0 1.2.3/docs/docs-scenario.html
Sorry, we could not display the entire diff because too many files (652) changed.
View
BIN 1.2.3/angular-1.2.3.zip
Binary file not shown.
View
1,294 1.2.3/angular-animate.js
@@ -0,0 +1,1294 @@
+/**
+ * @license AngularJS v1.2.3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {'use strict';
+
+/* jshint maxlen: false */
+
+/**
+ * @ngdoc overview
+ * @name ngAnimate
+ * @description
+ *
+ * # ngAnimate
+ *
+ * The `ngAnimate` module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives.
+ *
+ * {@installModule animate}
+ *
+ * <div doc-module-components="ngAnimate"></div>
+ *
+ * # Usage
+ *
+ * To see animations in action, all that is required is to define the appropriate CSS classes
+ * or to register a JavaScript animation via the myModule.animation() function. The directives that support animation automatically are:
+ * `ngRepeat`, `ngInclude`, `ngIf`, `ngSwitch`, `ngShow`, `ngHide`, `ngView` and `ngClass`. Custom directives can take advantage of animation
+ * by using the `$animate` service.
+ *
+ * Below is a more detailed breakdown of the supported animation events provided by pre-existing ng directives:
+ *
+ * | Directive | Supported Animations |
+ * |---------------------------------------------------------- |----------------------------------------------------|
+ * | {@link ng.directive:ngRepeat#usage_animations ngRepeat} | enter, leave and move |
+ * | {@link ngRoute.directive:ngView#usage_animations ngView} | enter and leave |
+ * | {@link ng.directive:ngInclude#usage_animations ngInclude} | enter and leave |
+ * | {@link ng.directive:ngSwitch#usage_animations ngSwitch} | enter and leave |
+ * | {@link ng.directive:ngIf#usage_animations ngIf} | enter and leave |
+ * | {@link ng.directive:ngClass#usage_animations ngClass} | add and remove |
+ * | {@link ng.directive:ngShow#usage_animations ngShow & ngHide} | add and remove (the ng-hide class value) |
+ *
+ * You can find out more information about animations upon visiting each directive page.
+ *
+ * Below is an example of how to apply animations to a directive that supports animation hooks:
+ *
+ * <pre>
+ * <style type="text/css">
+ * .slide.ng-enter, .slide.ng-leave {
+ * -webkit-transition:0.5s linear all;
+ * transition:0.5s linear all;
+ * }
+ *
+ * .slide.ng-enter { } /&#42; starting animations for enter &#42;/
+ * .slide.ng-enter-active { } /&#42; terminal animations for enter &#42;/
+ * .slide.ng-leave { } /&#42; starting animations for leave &#42;/
+ * .slide.ng-leave-active { } /&#42; terminal animations for leave &#42;/
+ * </style>
+ *
+ * <!--
+ * the animate service will automatically add .ng-enter and .ng-leave to the element
+ * to trigger the CSS transition/animations
+ * -->
+ * <ANY class="slide" ng-include="..."></ANY>
+ * </pre>
+ *
+ * Keep in mind that if an animation is running, any child elements cannot be animated until the parent element's
+ * animation has completed.
+ *
+ * <h2>CSS-defined Animations</h2>
+ * The animate service will automatically apply two CSS classes to the animated element and these two CSS classes
+ * are designed to contain the start and end CSS styling. Both CSS transitions and keyframe animations are supported
+ * and can be used to play along with this naming structure.
+ *
+ * The following code below demonstrates how to perform animations using **CSS transitions** with Angular:
+ *
+ * <pre>
+ * <style type="text/css">
+ * /&#42;
+ * The animate class is apart of the element and the ng-enter class
+ * is attached to the element once the enter animation event is triggered
+ * &#42;/
+ * .reveal-animation.ng-enter {
+ * -webkit-transition: 1s linear all; /&#42; Safari/Chrome &#42;/
+ * transition: 1s linear all; /&#42; All other modern browsers and IE10+ &#42;/
+ *
+ * /&#42; The animation preparation code &#42;/
+ * opacity: 0;
+ * }
+ *
+ * /&#42;
+ * Keep in mind that you want to combine both CSS
+ * classes together to avoid any CSS-specificity
+ * conflicts
+ * &#42;/
+ * .reveal-animation.ng-enter.ng-enter-active {
+ * /&#42; The animation code itself &#42;/
+ * opacity: 1;
+ * }
+ * </style>
+ *
+ * <div class="view-container">
+ * <div ng-view class="reveal-animation"></div>
+ * </div>
+ * </pre>
+ *
+ * The following code below demonstrates how to perform animations using **CSS animations** with Angular:
+ *
+ * <pre>
+ * <style type="text/css">
+ * .reveal-animation.ng-enter {
+ * -webkit-animation: enter_sequence 1s linear; /&#42; Safari/Chrome &#42;/
+ * animation: enter_sequence 1s linear; /&#42; IE10+ and Future Browsers &#42;/
+ * }
+ * &#64-webkit-keyframes enter_sequence {
+ * from { opacity:0; }
+ * to { opacity:1; }
+ * }
+ * &#64keyframes enter_sequence {
+ * from { opacity:0; }
+ * to { opacity:1; }
+ * }
+ * </style>
+ *
+ * <div class="view-container">
+ * <div ng-view class="reveal-animation"></div>
+ * </div>
+ * </pre>
+ *
+ * Both CSS3 animations and transitions can be used together and the animate service will figure out the correct duration and delay timing.
+ *
+ * Upon DOM mutation, the event class is added first (something like `ng-enter`), then the browser prepares itself to add
+ * the active class (in this case `ng-enter-active`) which then triggers the animation. The animation module will automatically
+ * detect the CSS code to determine when the animation ends. Once the animation is over then both CSS classes will be
+ * removed from the DOM. If a browser does not support CSS transitions or CSS animations then the animation will start and end
+ * immediately resulting in a DOM element that is at its final state. This final state is when the DOM element
+ * has no CSS transition/animation classes applied to it.
+ *
+ * <h3>CSS Staggering Animations</h3>
+ * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a
+ * curtain-like effect. The ngAnimate module, as of 1.2.0, supports staggering animations and the stagger effect can be
+ * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for
+ * the animation. The style property expected within the stagger class can either be a **transition-delay** or an
+ * **animation-delay** property (or both if your animation contains both transitions and keyframe animations).
+ *
+ * <pre>
+ * .my-animation.ng-enter {
+ * /&#42; standard transition code &#42;/
+ * -webkit-transition: 1s linear all;
+ * transition: 1s linear all;
+ * opacity:0;
+ * }
+ * .my-animation.ng-enter-stagger {
+ * /&#42; this will have a 100ms delay between each successive leave animation &#42;/
+ * -webkit-transition-delay: 0.1s;
+ * transition-delay: 0.1s;
+ *
+ * /&#42; in case the stagger doesn't work then these two values
+ * must be set to 0 to avoid an accidental CSS inheritance &#42;/
+ * -webkit-transition-duration: 0s;
+ * transition-duration: 0s;
+ * }
+ * .my-animation.ng-enter.ng-enter-active {
+ * /&#42; standard transition styles &#42;/
+ * opacity:1;
+ * }
+ * </pre>
+ *
+ * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations
+ * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this
+ * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation
+ * will also be reset if more than 10ms has passed after the last animation has been fired.
+ *
+ * The following code will issue the **ng-leave-stagger** event on the element provided:
+ *
+ * <pre>
+ * var kids = parent.children();
+ *
+ * $animate.leave(kids[0]); //stagger index=0
+ * $animate.leave(kids[1]); //stagger index=1
+ * $animate.leave(kids[2]); //stagger index=2
+ * $animate.leave(kids[3]); //stagger index=3
+ * $animate.leave(kids[4]); //stagger index=4
+ *
+ * $timeout(function() {
+ * //stagger has reset itself
+ * $animate.leave(kids[5]); //stagger index=0
+ * $animate.leave(kids[6]); //stagger index=1
+ * }, 100, false);
+ * </pre>
+ *
+ * Stagger animations are currently only supported within CSS-defined animations.
+ *
+ * <h2>JavaScript-defined Animations</h2>
+ * In the event that you do not want to use CSS3 transitions or CSS3 animations or if you wish to offer animations on browsers that do not
+ * yet support CSS transitions/animations, then you can make use of JavaScript animations defined inside of your AngularJS module.
+ *
+ * <pre>
+ * //!annotate="YourApp" Your AngularJS Module|Replace this or ngModule with the module that you used to define your application.
+ * var ngModule = angular.module('YourApp', []);
+ * ngModule.animation('.my-crazy-animation', function() {
+ * return {
+ * enter: function(element, done) {
+ * //run the animation here and call done when the animation is complete
+ * return function(cancelled) {
+ * //this (optional) function will be called when the animation
+ * //completes or when the animation is cancelled (the cancelled
+ * //flag will be set to true if cancelled).
+ * }
+ * }
+ * leave: function(element, done) { },
+ * move: function(element, done) { },
+ *
+ * //animation that can be triggered before the class is added
+ * beforeAddClass: function(element, className, done) { },
+ *
+ * //animation that can be triggered after the class is added
+ * addClass: function(element, className, done) { },
+ *
+ * //animation that can be triggered before the class is removed
+ * beforeRemoveClass: function(element, className, done) { },
+ *
+ * //animation that can be triggered after the class is removed
+ * removeClass: function(element, className, done) { }
+ * }
+ * });
+ * </pre>
+ *
+ * JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run
+ * a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits
+ * the element's CSS class attribute value and then run the matching animation event function (if found).
+ * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will
+ * be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported).
+ *
+ * Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned.
+ * As explained above, these callbacks are triggered based on the animation event. Therefore if an enter animation is run,
+ * and the JavaScript animation is found, then the enter callback will handle that animation (in addition to the CSS keyframe animation
+ * or transition code that is defined via a stylesheet).
+ *
+ */
+
+angular.module('ngAnimate', ['ng'])
+
+ /**
+ * @ngdoc object
+ * @name ngAnimate.$animateProvider
+ * @description
+ *
+ * The `$animateProvider` allows developers to register JavaScript animation event handlers directly inside of a module.
+ * When an animation is triggered, the $animate service will query the $animate service to find any animations that match
+ * the provided name value.
+ *
+ * Requires the {@link ngAnimate `ngAnimate`} module to be installed.
+ *
+ * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
+ *
+ */
+ .config(['$provide', '$animateProvider', function($provide, $animateProvider) {
+ var noop = angular.noop;
+ var forEach = angular.forEach;
+ var selectors = $animateProvider.$$selectors;
+
+ var ELEMENT_NODE = 1;
+ var NG_ANIMATE_STATE = '$$ngAnimateState';
+ var NG_ANIMATE_CLASS_NAME = 'ng-animate';
+ var rootAnimateState = {running: true};
+
+ $provide.decorator('$animate', ['$delegate', '$injector', '$sniffer', '$rootElement', '$timeout', '$rootScope', '$document',
+ function($delegate, $injector, $sniffer, $rootElement, $timeout, $rootScope, $document) {
+
+ $rootElement.data(NG_ANIMATE_STATE, rootAnimateState);
+
+ // disable animations during bootstrap, but once we bootstrapped, wait again
+ // for another digest until enabling animations. The reason why we digest twice
+ // is because all structural animations (enter, leave and move) all perform a
+ // post digest operation before animating. If we only wait for a single digest
+ // to pass then the structural animation would render its animation on page load.
+ // (which is what we're trying to avoid when the application first boots up.)
+ $rootScope.$$postDigest(function() {
+ $rootScope.$$postDigest(function() {
+ rootAnimateState.running = false;
+ });
+ });
+
+ function lookup(name) {
+ if (name) {
+ var matches = [],
+ flagMap = {},
+ classes = name.substr(1).split('.');
+
+ //the empty string value is the default animation
+ //operation which performs CSS transition and keyframe
+ //animations sniffing. This is always included for each
+ //element animation procedure if the browser supports
+ //transitions and/or keyframe animations
+ if ($sniffer.transitions || $sniffer.animations) {
+ classes.push('');
+ }
+
+ for(var i=0; i < classes.length; i++) {
+ var klass = classes[i],
+ selectorFactoryName = selectors[klass];
+ if(selectorFactoryName && !flagMap[klass]) {
+ matches.push($injector.get(selectorFactoryName));
+ flagMap[klass] = true;
+ }
+ }
+ return matches;
+ }
+ }
+
+ /**
+ * @ngdoc object
+ * @name ngAnimate.$animate
+ * @function
+ *
+ * @description
+ * The `$animate` service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations.
+ * When any of these operations are run, the $animate service
+ * will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object)
+ * as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run.
+ *
+ * The `$animate` service is used behind the scenes with pre-existing directives and animation with these directives
+ * will work out of the box without any extra configuration.
+ *
+ * Requires the {@link ngAnimate `ngAnimate`} module to be installed.
+ *
+ * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
+ *
+ */
+ return {
+ /**
+ * @ngdoc function
+ * @name ngAnimate.$animate#enter
+ * @methodOf ngAnimate.$animate
+ * @function
+ *
+ * @description
+ * Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once
+ * the animation is started, the following CSS classes will be present on the element for the duration of the animation:
+ *
+ * Below is a breakdown of each step that occurs during enter animation:
+ *
+ * | Animation Step | What the element class attribute looks like |
+ * |----------------------------------------------------------------------------------------------|---------------------------------------------|
+ * | 1. $animate.enter(...) is called | class="my-animation" |
+ * | 2. element is inserted into the parentElement element or beside the afterElement element | class="my-animation" |
+ * | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" |
+ * | 4. the .ng-enter class is added to the element | class="my-animation ng-animate ng-enter" |
+ * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-enter" |
+ * | 6. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate ng-enter" |
+ * | 7. the .ng-enter-active and .ng-animate-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active" |
+ * | 8. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active" |
+ * | 9. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
+ * | 10. The doneCallback() callback is fired (if provided) | class="my-animation" |
+ *
+ * @param {jQuery/jqLite element} element the element that will be the focus of the enter animation
+ * @param {jQuery/jqLite element} parentElement the parent element of the element that will be the focus of the enter animation
+ * @param {jQuery/jqLite element} afterElement the sibling element (which is the previous element) of the element that will be the focus of the enter animation
+ * @param {function()=} doneCallback the callback function that will be called once the animation is complete
+ */
+ enter : function(element, parentElement, afterElement, doneCallback) {
+ this.enabled(false, element);
+ $delegate.enter(element, parentElement, afterElement);
+ $rootScope.$$postDigest(function() {
+ performAnimation('enter', 'ng-enter', element, parentElement, afterElement, noop, doneCallback);
+ });
+ },
+
+ /**
+ * @ngdoc function
+ * @name ngAnimate.$animate#leave
+ * @methodOf ngAnimate.$animate
+ * @function
+ *
+ * @description
+ * Runs the leave animation operation and, upon completion, removes the element from the DOM. Once
+ * the animation is started, the following CSS classes will be added for the duration of the animation:
+ *
+ * Below is a breakdown of each step that occurs during enter animation:
+ *
+ * | Animation Step | What the element class attribute looks like |
+ * |----------------------------------------------------------------------------------------------|---------------------------------------------|
+ * | 1. $animate.leave(...) is called | class="my-animation" |
+ * | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" |
+ * | 3. the .ng-leave class is added to the element | class="my-animation ng-animate ng-leave" |
+ * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-leave" |
+ * | 5. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate ng-leave" |
+ * | 6. the .ng-leave-active and .ng-animate-active classes is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active" |
+ * | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active" |
+ * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
+ * | 9. The element is removed from the DOM | ... |
+ * | 10. The doneCallback() callback is fired (if provided) | ... |
+ *
+ * @param {jQuery/jqLite element} element the element that will be the focus of the leave animation
+ * @param {function()=} doneCallback the callback function that will be called once the animation is complete
+ */
+ leave : function(element, doneCallback) {
+ cancelChildAnimations(element);
+ this.enabled(false, element);
+ $rootScope.$$postDigest(function() {
+ performAnimation('leave', 'ng-leave', element, null, null, function() {
+ $delegate.leave(element);
+ }, doneCallback);
+ });
+ },
+
+ /**
+ * @ngdoc function
+ * @name ngAnimate.$animate#move
+ * @methodOf ngAnimate.$animate
+ * @function
+ *
+ * @description
+ * Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or
+ * add the element directly after the afterElement element if present. Then the move animation will be run. Once
+ * the animation is started, the following CSS classes will be added for the duration of the animation:
+ *
+ * Below is a breakdown of each step that occurs during move animation:
+ *
+ * | Animation Step | What the element class attribute looks like |
+ * |----------------------------------------------------------------------------------------------|---------------------------------------------|
+ * | 1. $animate.move(...) is called | class="my-animation" |
+ * | 2. element is moved into the parentElement element or beside the afterElement element | class="my-animation" |
+ * | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" |
+ * | 4. the .ng-move class is added to the element | class="my-animation ng-animate ng-move" |
+ * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-move" |
+ * | 6. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate ng-move" |
+ * | 7. the .ng-move-active and .ng-animate-active classes is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-move ng-move-active" |
+ * | 8. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active ng-move ng-move-active" |
+ * | 9. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
+ * | 10. The doneCallback() callback is fired (if provided) | class="my-animation" |
+ *
+ * @param {jQuery/jqLite element} element the element that will be the focus of the move animation
+ * @param {jQuery/jqLite element} parentElement the parentElement element of the element that will be the focus of the move animation
+ * @param {jQuery/jqLite element} afterElement the sibling element (which is the previous element) of the element that will be the focus of the move animation
+ * @param {function()=} doneCallback the callback function that will be called once the animation is complete
+ */
+ move : function(element, parentElement, afterElement, doneCallback) {
+ cancelChildAnimations(element);
+ this.enabled(false, element);
+ $delegate.move(element, parentElement, afterElement);
+ $rootScope.$$postDigest(function() {
+ performAnimation('move', 'ng-move', element, parentElement, afterElement, noop, doneCallback);
+ });
+ },
+
+ /**
+ * @ngdoc function
+ * @name ngAnimate.$animate#addClass
+ * @methodOf ngAnimate.$animate
+ *
+ * @description
+ * Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class.
+ * Unlike the other animation methods, the animate service will suffix the className value with {@type -add} in order to provide
+ * the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions
+ * or keyframes are defined on the -add or base CSS class).
+ *
+ * Below is a breakdown of each step that occurs during addClass animation:
+ *
+ * | Animation Step | What the element class attribute looks like |
+ * |------------------------------------------------------------------------------------------------|---------------------------------------------|
+ * | 1. $animate.addClass(element, 'super') is called | class="my-animation" |
+ * | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" |
+ * | 3. the .super-add class are added to the element | class="my-animation ng-animate super-add" |
+ * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super-add" |
+ * | 5. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate super-add" |
+ * | 6. the .super, .super-add-active and .ng-animate-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active super super-add super-add-active" |
+ * | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation super-add super-add-active" |
+ * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation super" |
+ * | 9. The super class is kept on the element | class="my-animation super" |
+ * | 10. The doneCallback() callback is fired (if provided) | class="my-animation super" |
+ *
+ * @param {jQuery/jqLite element} element the element that will be animated
+ * @param {string} className the CSS class that will be added to the element and then animated
+ * @param {function()=} doneCallback the callback function that will be called once the animation is complete
+ */
+ addClass : function(element, className, doneCallback) {
+ performAnimation('addClass', className, element, null, null, function() {
+ $delegate.addClass(element, className);
+ }, doneCallback);
+ },
+
+ /**
+ * @ngdoc function
+ * @name ngAnimate.$animate#removeClass
+ * @methodOf ngAnimate.$animate
+ *
+ * @description
+ * Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value
+ * from the element. Unlike the other animation methods, the animate service will suffix the className value with {@type -remove} in
+ * order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if
+ * no CSS transitions or keyframes are defined on the -remove or base CSS classes).
+ *
+ * Below is a breakdown of each step that occurs during removeClass animation:
+ *
+ * | Animation Step | What the element class attribute looks like |
+ * |-----------------------------------------------------------------------------------------------|---------------------------------------------|
+ * | 1. $animate.removeClass(element, 'super') is called | class="my-animation super" |
+ * | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation super ng-animate" |
+ * | 3. the .super-remove class are added to the element | class="my-animation super ng-animate super-remove"|
+ * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation super ng-animate super-remove" |
+ * | 5. $animate waits for 10ms (this performs a reflow) | class="my-animation super ng-animate super-remove" |
+ * | 6. the .super-remove-active and .ng-animate-active classes are added and .super is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active super-remove super-remove-active" |
+ * | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active super-remove super-remove-active" |
+ * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
+ * | 9. The doneCallback() callback is fired (if provided) | class="my-animation" |
+ *
+ *
+ * @param {jQuery/jqLite element} element the element that will be animated
+ * @param {string} className the CSS class that will be animated and then removed from the element
+ * @param {function()=} doneCallback the callback function that will be called once the animation is complete
+ */
+ removeClass : function(element, className, doneCallback) {
+ performAnimation('removeClass', className, element, null, null, function() {
+ $delegate.removeClass(element, className);
+ }, doneCallback);
+ },
+
+ /**
+ * @ngdoc function
+ * @name ngAnimate.$animate#enabled
+ * @methodOf ngAnimate.$animate
+ * @function
+ *
+ * @param {boolean=} value If provided then set the animation on or off.
+ * @param {jQuery/jqLite element=} element If provided then the element will be used to represent the enable/disable operation
+ * @return {boolean} Current animation state.
+ *
+ * @description
+ * Globally enables/disables animations.
+ *
+ */
+ enabled : function(value, element) {
+ switch(arguments.length) {
+ case 2:
+ if(value) {
+ cleanup(element);
+ } else {
+ var data = element.data(NG_ANIMATE_STATE) || {};
+ data.disabled = true;
+ element.data(NG_ANIMATE_STATE, data);
+ }
+ break;
+
+ case 1:
+ rootAnimateState.disabled = !value;
+ break;
+
+ default:
+ value = !rootAnimateState.disabled;
+ break;
+ }
+ return !!value;
+ }
+ };
+
+ /*
+ all animations call this shared animation triggering function internally.
+ The animationEvent variable refers to the JavaScript animation event that will be triggered
+ and the className value is the name of the animation that will be applied within the
+ CSS code. Element, parentElement and afterElement are provided DOM elements for the animation
+ and the onComplete callback will be fired once the animation is fully complete.
+ */
+ function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, doneCallback) {
+ var currentClassName = element.attr('class') || '';
+ var classes = currentClassName + ' ' + className;
+ var animationLookup = (' ' + classes).replace(/\s+/g,'.');
+ if (!parentElement) {
+ parentElement = afterElement ? afterElement.parent() : element.parent();
+ }
+
+ var matches = lookup(animationLookup);
+ var isClassBased = animationEvent == 'addClass' || animationEvent == 'removeClass';
+ var ngAnimateState = element.data(NG_ANIMATE_STATE) || {};
+
+ //skip the animation if animations are disabled, a parent is already being animated,
+ //the element is not currently attached to the document body or then completely close
+ //the animation if any matching animations are not found at all.
+ //NOTE: IE8 + IE9 should close properly (run closeAnimation()) in case a NO animation is not found.
+ if (animationsDisabled(element, parentElement) || matches.length === 0) {
+ fireDOMOperation();
+ closeAnimation();
+ return;
+ }
+
+ var animations = [];
+ //only add animations if the currently running animation is not structural
+ //or if there is no animation running at all
+ if(!ngAnimateState.running || !(isClassBased && ngAnimateState.structural)) {
+ forEach(matches, function(animation) {
+ //add the animation to the queue to if it is allowed to be cancelled
+ if(!animation.allowCancel || animation.allowCancel(element, animationEvent, className)) {
+ var beforeFn, afterFn = animation[animationEvent];
+
+ //Special case for a leave animation since there is no point in performing an
+ //animation on a element node that has already been removed from the DOM
+ if(animationEvent == 'leave') {
+ beforeFn = afterFn;
+ afterFn = null; //this must be falsy so that the animation is skipped for leave
+ } else {
+ beforeFn = animation['before' + animationEvent.charAt(0).toUpperCase() + animationEvent.substr(1)];
+ }
+ animations.push({
+ before : beforeFn,
+ after : afterFn
+ });
+ }
+ });
+ }
+
+ //this would mean that an animation was not allowed so let the existing
+ //animation do it's thing and close this one early
+ if(animations.length === 0) {
+ fireDOMOperation();
+ fireDoneCallbackAsync();
+ return;
+ }
+
+ //this value will be searched for class-based CSS className lookup. Therefore,
+ //we prefix and suffix the current className value with spaces to avoid substring
+ //lookups of className tokens
+ var futureClassName = ' ' + currentClassName + ' ';
+ if(ngAnimateState.running) {
+ //if an animation is currently running on the element then lets take the steps
+ //to cancel that animation and fire any required callbacks
+ $timeout.cancel(ngAnimateState.closeAnimationTimeout);
+ cleanup(element);
+ cancelAnimations(ngAnimateState.animations);
+
+ //if the class is removed during the reflow then it will revert the styles temporarily
+ //back to the base class CSS styling causing a jump-like effect to occur. This check
+ //here ensures that the domOperation is only performed after the reflow has commenced
+ if(ngAnimateState.beforeComplete) {
+ (ngAnimateState.done || noop)(true);
+ } else if(isClassBased && !ngAnimateState.structural) {
+ //class-based animations will compare element className values after cancelling the
+ //previous animation to see if the element properties already contain the final CSS
+ //class and if so then the animation will be skipped. Since the domOperation will
+ //be performed only after the reflow is complete then our element's className value
+ //will be invalid. Therefore the same string manipulation that would occur within the
+ //DOM operation will be performed below so that the class comparison is valid...
+ futureClassName = ngAnimateState.event == 'removeClass' ?
+ futureClassName.replace(ngAnimateState.className, '') :
+ futureClassName + ngAnimateState.className + ' ';
+ }
+ }
+
+ //There is no point in perform a class-based animation if the element already contains
+ //(on addClass) or doesn't contain (on removeClass) the className being animated.
+ //The reason why this is being called after the previous animations are cancelled
+ //is so that the CSS classes present on the element can be properly examined.
+ var classNameToken = ' ' + className + ' ';
+ if((animationEvent == 'addClass' && futureClassName.indexOf(classNameToken) >= 0) ||
+ (animationEvent == 'removeClass' && futureClassName.indexOf(classNameToken) == -1)) {
+ fireDOMOperation();
+ fireDoneCallbackAsync();
+ return;
+ }
+
+ //the ng-animate class does nothing, but it's here to allow for
+ //parent animations to find and cancel child animations when needed
+ element.addClass(NG_ANIMATE_CLASS_NAME);
+
+ element.data(NG_ANIMATE_STATE, {
+ running:true,
+ event:animationEvent,
+ className:className,
+ structural:!isClassBased,
+ animations:animations,
+ done:onBeforeAnimationsComplete
+ });
+
+ //first we run the before animations and when all of those are complete
+ //then we perform the DOM operation and run the next set of animations
+ invokeRegisteredAnimationFns(animations, 'before', onBeforeAnimationsComplete);
+
+ function onBeforeAnimationsComplete(cancelled) {
+ fireDOMOperation();
+ if(cancelled === true) {
+ closeAnimation();
+ return;
+ }
+
+ //set the done function to the final done function
+ //so that the DOM event won't be executed twice by accident
+ //if the after animation is cancelled as well
+ var data = element.data(NG_ANIMATE_STATE);
+ if(data) {
+ data.done = closeAnimation;
+ element.data(NG_ANIMATE_STATE, data);
+ }
+ invokeRegisteredAnimationFns(animations, 'after', closeAnimation);
+ }
+
+ function invokeRegisteredAnimationFns(animations, phase, allAnimationFnsComplete) {
+ var endFnName = phase + 'End';
+ forEach(animations, function(animation, index) {
+ var animationPhaseCompleted = function() {
+ progress(index, phase);
+ };
+
+ //there are no before functions for enter + move since the DOM
+ //operations happen before the performAnimation method fires
+ if(phase == 'before' && (animationEvent == 'enter' || animationEvent == 'move')) {
+ animationPhaseCompleted();
+ return;
+ }
+
+ if(animation[phase]) {
+ animation[endFnName] = isClassBased ?
+ animation[phase](element, className, animationPhaseCompleted) :
+ animation[phase](element, animationPhaseCompleted);
+ } else {
+ animationPhaseCompleted();
+ }
+ });
+
+ function progress(index, phase) {
+ var phaseCompletionFlag = phase + 'Complete';
+ var currentAnimation = animations[index];
+ currentAnimation[phaseCompletionFlag] = true;
+ (currentAnimation[endFnName] || noop)();
+
+ for(var i=0;i<animations.length;i++) {
+ if(!animations[i][phaseCompletionFlag]) return;
+ }
+
+ allAnimationFnsComplete();
+ }
+ }
+
+ function fireDoneCallbackAsync() {
+ doneCallback && $timeout(doneCallback, 0, false);
+ }
+
+ //it is less complicated to use a flag than managing and cancelling
+ //timeouts containing multiple callbacks.
+ function fireDOMOperation() {
+ if(!fireDOMOperation.hasBeenRun) {
+ fireDOMOperation.hasBeenRun = true;
+ domOperation();
+ }
+ }
+
+ function closeAnimation() {
+ if(!closeAnimation.hasBeenRun) {
+ closeAnimation.hasBeenRun = true;
+ var data = element.data(NG_ANIMATE_STATE);
+ if(data) {
+ /* only structural animations wait for reflow before removing an
+ animation, but class-based animations don't. An example of this
+ failing would be when a parent HTML tag has a ng-class attribute
+ causing ALL directives below to skip animations during the digest */
+ if(isClassBased) {
+ cleanup(element);
+ } else {
+ data.closeAnimationTimeout = $timeout(function() {
+ cleanup(element);
+ }, 0, false);
+ element.data(NG_ANIMATE_STATE, data);
+ }
+ }
+ fireDoneCallbackAsync();
+ }
+ }
+ }
+
+ function cancelChildAnimations(element) {
+ var node = element[0];
+ if(node.nodeType != ELEMENT_NODE) {
+ return;
+ }
+
+ forEach(node.querySelectorAll('.' + NG_ANIMATE_CLASS_NAME), function(element) {
+ element = angular.element(element);
+ var data = element.data(NG_ANIMATE_STATE);
+ if(data) {
+ cancelAnimations(data.animations);
+ cleanup(element);
+ }
+ });
+ }
+
+ function cancelAnimations(animations) {
+ var isCancelledFlag = true;
+ forEach(animations, function(animation) {
+ if(!animations.beforeComplete) {
+ (animation.beforeEnd || noop)(isCancelledFlag);
+ }
+ if(!animations.afterComplete) {
+ (animation.afterEnd || noop)(isCancelledFlag);
+ }
+ });
+ }
+
+ function cleanup(element) {
+ if(element[0] == $rootElement[0]) {
+ if(!rootAnimateState.disabled) {
+ rootAnimateState.running = false;
+ rootAnimateState.structural = false;
+ }
+ } else {
+ element.removeClass(NG_ANIMATE_CLASS_NAME);
+ element.removeData(NG_ANIMATE_STATE);
+ }
+ }
+
+ function animationsDisabled(element, parentElement) {
+ if (rootAnimateState.disabled) return true;
+
+ if(element[0] == $rootElement[0]) {
+ return rootAnimateState.disabled || rootAnimateState.running;
+ }
+
+ do {
+ //the element did not reach the root element which means that it
+ //is not apart of the DOM. Therefore there is no reason to do
+ //any animations on it
+ if(parentElement.length === 0) break;
+
+ var isRoot = parentElement[0] == $rootElement[0];
+ var state = isRoot ? rootAnimateState : parentElement.data(NG_ANIMATE_STATE);
+ var result = state && (!!state.disabled || !!state.running);
+ if(isRoot || result) {
+ return result;
+ }
+
+ if(isRoot) return true;
+ }
+ while(parentElement = parentElement.parent());
+
+ return true;
+ }
+ }]);
+
+ $animateProvider.register('', ['$window', '$sniffer', '$timeout', function($window, $sniffer, $timeout) {
+ // Detect proper transitionend/animationend event names.
+ var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT;
+
+ // If unprefixed events are not supported but webkit-prefixed are, use the latter.
+ // Otherwise, just use W3C names, browsers not supporting them at all will just ignore them.
+ // Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend`
+ // but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`.
+ // Register both events in case `window.onanimationend` is not supported because of that,
+ // do the same for `transitionend` as Safari is likely to exhibit similar behavior.
+ // Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit
+ // therefore there is no reason to test anymore for other vendor prefixes: http://caniuse.com/#search=transition
+ if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {
+ CSS_PREFIX = '-webkit-';
+ TRANSITION_PROP = 'WebkitTransition';
+ TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';
+ } else {
+ TRANSITION_PROP = 'transition';
+ TRANSITIONEND_EVENT = 'transitionend';
+ }
+
+ if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) {
+ CSS_PREFIX = '-webkit-';
+ ANIMATION_PROP = 'WebkitAnimation';
+ ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';
+ } else {
+ ANIMATION_PROP = 'animation';
+ ANIMATIONEND_EVENT = 'animationend';
+ }
+
+ var DURATION_KEY = 'Duration';
+ var PROPERTY_KEY = 'Property';
+ var DELAY_KEY = 'Delay';
+ var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount';
+ var NG_ANIMATE_PARENT_KEY = '$$ngAnimateKey';
+ var NG_ANIMATE_CSS_DATA_KEY = '$$ngAnimateCSS3Data';
+ var NG_ANIMATE_FALLBACK_CLASS_NAME = 'ng-animate-start';
+ var NG_ANIMATE_FALLBACK_ACTIVE_CLASS_NAME = 'ng-animate-active';
+
+ var lookupCache = {};
+ var parentCounter = 0;
+
+ var animationReflowQueue = [], animationTimer, timeOut = false;
+ function afterReflow(callback) {
+ animationReflowQueue.push(callback);
+ $timeout.cancel(animationTimer);
+ animationTimer = $timeout(function() {
+ forEach(animationReflowQueue, function(fn) {
+ fn();
+ });
+ animationReflowQueue = [];
+ animationTimer = null;
+ lookupCache = {};
+ }, 10, false);
+ }
+
+ function getElementAnimationDetails(element, cacheKey) {
+ var data = cacheKey ? lookupCache[cacheKey] : null;
+ if(!data) {
+ var transitionDuration = 0;
+ var transitionDelay = 0;
+ var animationDuration = 0;
+ var animationDelay = 0;
+ var transitionDelayStyle;
+ var animationDelayStyle;
+ var transitionDurationStyle;
+ var transitionPropertyStyle;
+
+ //we want all the styles defined before and after
+ forEach(element, function(element) {
+ if (element.nodeType == ELEMENT_NODE) {
+ var elementStyles = $window.getComputedStyle(element) || {};
+
+ transitionDurationStyle = elementStyles[TRANSITION_PROP + DURATION_KEY];
+
+ transitionDuration = Math.max(parseMaxTime(transitionDurationStyle), transitionDuration);
+
+ transitionPropertyStyle = elementStyles[TRANSITION_PROP + PROPERTY_KEY];
+
+ transitionDelayStyle = elementStyles[TRANSITION_PROP + DELAY_KEY];
+
+ transitionDelay = Math.max(parseMaxTime(transitionDelayStyle), transitionDelay);
+
+ animationDelayStyle = elementStyles[ANIMATION_PROP + DELAY_KEY];
+
+ animationDelay = Math.max(parseMaxTime(animationDelayStyle), animationDelay);
+
+ var aDuration = parseMaxTime(elementStyles[ANIMATION_PROP + DURATION_KEY]);
+
+ if(aDuration > 0) {
+ aDuration *= parseInt(elementStyles[ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY], 10) || 1;
+ }
+
+ animationDuration = Math.max(aDuration, animationDuration);
+ }
+ });
+ data = {
+ total : 0,
+ transitionPropertyStyle: transitionPropertyStyle,
+ transitionDurationStyle: transitionDurationStyle,
+ transitionDelayStyle: transitionDelayStyle,
+ transitionDelay: transitionDelay,
+ transitionDuration: transitionDuration,
+ animationDelayStyle: animationDelayStyle,
+ animationDelay: animationDelay,
+ animationDuration: animationDuration
+ };
+ if(cacheKey) {
+ lookupCache[cacheKey] = data;
+ }
+ }
+ return data;
+ }
+
+ function parseMaxTime(str) {
+ var maxValue = 0;
+ var values = angular.isString(str) ?
+ str.split(/\s*,\s*/) :
+ [];
+ forEach(values, function(value) {
+ maxValue = Math.max(parseFloat(value) || 0, maxValue);
+ });
+ return maxValue;
+ }
+
+ function getCacheKey(element) {
+ var parentElement = element.parent();
+ var parentID = parentElement.data(NG_ANIMATE_PARENT_KEY);
+ if(!parentID) {
+ parentElement.data(NG_ANIMATE_PARENT_KEY, ++parentCounter);
+ parentID = parentCounter;
+ }
+ return parentID + '-' + element[0].className;
+ }
+
+ function animateSetup(element, className) {
+ var cacheKey = getCacheKey(element);
+ var eventCacheKey = cacheKey + ' ' + className;
+ var stagger = {};
+ var ii = lookupCache[eventCacheKey] ? ++lookupCache[eventCacheKey].total : 0;
+
+ if(ii > 0) {
+ var staggerClassName = className + '-stagger';
+ var staggerCacheKey = cacheKey + ' ' + staggerClassName;
+ var applyClasses = !lookupCache[staggerCacheKey];
+
+ applyClasses && element.addClass(staggerClassName);
+
+ stagger = getElementAnimationDetails(element, staggerCacheKey);
+
+ applyClasses && element.removeClass(staggerClassName);
+ }
+
+ element.addClass(className);
+
+ var timings = getElementAnimationDetails(element, eventCacheKey);
+
+ /* there is no point in performing a reflow if the animation
+ timeout is empty (this would cause a flicker bug normally
+ in the page. There is also no point in performing an animation
+ that only has a delay and no duration */
+ var maxDuration = Math.max(timings.transitionDuration, timings.animationDuration);
+ if(maxDuration === 0) {
+ element.removeClass(className);
+ return false;
+ }
+
+ var node = element[0];
+ //temporarily disable the transition so that the enter styles
+ //don't animate twice (this is here to avoid a bug in Chrome/FF).
+ var activeClassName = '';
+ if(timings.transitionDuration > 0) {
+ element.addClass(NG_ANIMATE_FALLBACK_CLASS_NAME);
+ activeClassName += NG_ANIMATE_FALLBACK_ACTIVE_CLASS_NAME + ' ';
+ blockTransitions(element);
+ } else {
+ blockKeyframeAnimations(element);
+ }
+
+ forEach(className.split(' '), function(klass, i) {
+ activeClassName += (i > 0 ? ' ' : '') + klass + '-active';
+ });
+
+ element.data(NG_ANIMATE_CSS_DATA_KEY, {
+ className : className,
+ activeClassName : activeClassName,
+ maxDuration : maxDuration,
+ classes : className + ' ' + activeClassName,
+ timings : timings,
+ stagger : stagger,
+ ii : ii
+ });
+
+ return true;
+ }
+
+ function blockTransitions(element) {
+ element[0].style[TRANSITION_PROP + PROPERTY_KEY] = 'none';
+ }
+
+ function blockKeyframeAnimations(element) {
+ element[0].style[ANIMATION_PROP] = 'none 0s';
+ }
+
+ function unblockTransitions(element) {
+ var node = element[0], prop = TRANSITION_PROP + PROPERTY_KEY;
+ if(node.style[prop] && node.style[prop].length > 0) {
+ node.style[prop] = '';
+ }
+ }
+
+ function unblockKeyframeAnimations(element) {
+ var node = element[0], prop = ANIMATION_PROP;
+ if(node.style[prop] && node.style[prop].length > 0) {
+ element[0].style[prop] = '';
+ }
+ }
+
+ function animateRun(element, className, activeAnimationComplete) {
+ var data = element.data(NG_ANIMATE_CSS_DATA_KEY);
+ if(!element.hasClass(className) || !data) {
+ activeAnimationComplete();
+ return;
+ }
+
+ var node = element[0];
+ var timings = data.timings;
+ var stagger = data.stagger;
+ var maxDuration = data.maxDuration;
+ var activeClassName = data.activeClassName;
+ var maxDelayTime = Math.max(timings.transitionDelay, timings.animationDelay) * 1000;
+ var startTime = Date.now();
+ var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT;
+ var ii = data.ii;
+
+ var applyFallbackStyle, style = '', appliedStyles = [];
+ if(timings.transitionDuration > 0) {
+ var propertyStyle = timings.transitionPropertyStyle;
+ if(propertyStyle.indexOf('all') == -1) {
+ applyFallbackStyle = true;
+ var fallbackProperty = $sniffer.msie ? '-ms-zoom' : 'border-spacing';
+ style += CSS_PREFIX + 'transition-property: ' + propertyStyle + ', ' + fallbackProperty + '; ';
+ style += CSS_PREFIX + 'transition-duration: ' + timings.transitionDurationStyle + ', ' + timings.transitionDuration + 's; ';
+ appliedStyles.push(CSS_PREFIX + 'transition-property');
+ appliedStyles.push(CSS_PREFIX + 'transition-duration');
+ }
+ }
+
+ if(ii > 0) {
+ if(stagger.transitionDelay > 0 && stagger.transitionDuration === 0) {
+ var delayStyle = timings.transitionDelayStyle;
+ if(applyFallbackStyle) {
+ delayStyle += ', ' + timings.transitionDelay + 's';
+ }
+
+ style += CSS_PREFIX + 'transition-delay: ' +
+ prepareStaggerDelay(delayStyle, stagger.transitionDelay, ii) + '; ';
+ appliedStyles.push(CSS_PREFIX + 'transition-delay');
+ }
+
+ if(stagger.animationDelay > 0 && stagger.animationDuration === 0) {
+ style += CSS_PREFIX + 'animation-delay: ' +
+ prepareStaggerDelay(timings.animationDelayStyle, stagger.animationDelay, ii) + '; ';
+ appliedStyles.push(CSS_PREFIX + 'animation-delay');
+ }
+ }
+
+ if(appliedStyles.length > 0) {
+ var oldStyle = node.getAttribute('style') || '';
+ node.setAttribute('style', oldStyle + ' ' + style);
+ }
+
+ element.on(css3AnimationEvents, onAnimationProgress);
+ element.addClass(activeClassName);
+
+ // This will automatically be called by $animate so
+ // there is no need to attach this internally to the
+ // timeout done method.
+ return function onEnd(cancelled) {
+ element.off(css3AnimationEvents, onAnimationProgress);
+ element.removeClass(activeClassName);
+ animateClose(element, className);
+ for (var i in appliedStyles) {
+ node.style.removeProperty(appliedStyles[i]);
+ }
+ };
+
+ function onAnimationProgress(event) {
+ event.stopPropagation();
+ var ev = event.originalEvent || event;
+ var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now();
+ /* $manualTimeStamp is a mocked timeStamp value which is set
+ * within browserTrigger(). This is only here so that tests can
+ * mock animations properly. Real events fallback to event.timeStamp,
+ * or, if they don't, then a timeStamp is automatically created for them.
+ * We're checking to see if the timeStamp surpasses the expected delay,
+ * but we're using elapsedTime instead of the timeStamp on the 2nd
+ * pre-condition since animations sometimes close off early */
+ if(Math.max(timeStamp - startTime, 0) >= maxDelayTime && ev.elapsedTime >= maxDuration) {
+ activeAnimationComplete();
+ }
+ }
+ }
+
+ function prepareStaggerDelay(delayStyle, staggerDelay, index) {
+ var style = '';
+ forEach(delayStyle.split(','), function(val, i) {
+ style += (i > 0 ? ',' : '') +
+ (index * staggerDelay + parseInt(val, 10)) + 's';
+ });
+ return style;
+ }
+
+ function animateBefore(element, className) {
+ if(animateSetup(element, className)) {
+ return function(cancelled) {
+ cancelled && animateClose(element, className);
+ };
+ }
+ }
+
+ function animateAfter(element, className, afterAnimationComplete) {
+ if(element.data(NG_ANIMATE_CSS_DATA_KEY)) {
+ return animateRun(element, className, afterAnimationComplete);
+ } else {
+ animateClose(element, className);
+ afterAnimationComplete();
+ }
+ }
+
+ function animate(element, className, animationComplete) {
+ //If the animateSetup function doesn't bother returning a
+ //cancellation function then it means that there is no animation
+ //to perform at all
+ var preReflowCancellation = animateBefore(element, className);
+ if(!preReflowCancellation) {
+ animationComplete();
+ return;
+ }
+
+ //There are two cancellation functions: one is before the first
+ //reflow animation and the second is during the active state
+ //animation. The first function will take care of removing the
+ //data from the element which will not make the 2nd animation
+ //happen in the first place
+ var cancel = preReflowCancellation;
+ afterReflow(function() {
+ unblockTransitions(element);
+ unblockKeyframeAnimations(element);
+ //once the reflow is complete then we point cancel to
+ //the new cancellation function which will remove all of the
+ //animation properties from the active animation
+ cancel = animateAfter(element, className, animationComplete);
+ });
+
+ return function(cancelled) {
+ (cancel || noop)(cancelled);
+ };
+ }
+
+ function animateClose(element, className) {
+ element.removeClass(className);
+ element.removeClass(NG_ANIMATE_FALLBACK_CLASS_NAME);
+ element.removeData(NG_ANIMATE_CSS_DATA_KEY);
+ }
+
+ return {
+ allowCancel : function(element, animationEvent, className) {
+ //always cancel the current animation if it is a
+ //structural animation
+ var oldClasses = (element.data(NG_ANIMATE_CSS_DATA_KEY) || {}).classes;
+ if(!oldClasses || ['enter','leave','move'].indexOf(animationEvent) >= 0) {
+ return true;
+ }
+
+ var parentElement = element.parent();
+ var clone = angular.element(element[0].cloneNode());
+
+ //make the element super hidden and override any CSS style values
+ clone.attr('style','position:absolute; top:-9999px; left:-9999px');
+ clone.removeAttr('id');
+ clone.html('');
+
+ forEach(oldClasses.split(' '), function(klass) {
+ clone.removeClass(klass);
+ });
+
+ var suffix = animationEvent == 'addClass' ? '-add' : '-remove';
+ clone.addClass(suffixClasses(className, suffix));
+ parentElement.append(clone);
+
+ var timings = getElementAnimationDetails(clone);
+ clone.remove();
+
+ return Math.max(timings.transitionDuration, timings.animationDuration) > 0;
+ },
+
+ enter : function(element, animationCompleted) {
+ return animate(element, 'ng-enter', animationCompleted);
+ },
+
+ leave : function(element, animationCompleted) {
+ return animate(element, 'ng-leave', animationCompleted);
+ },
+
+ move : function(element, animationCompleted) {
+ return animate(element, 'ng-move', animationCompleted);
+ },
+
+ beforeAddClass : function(element, className, animationCompleted) {
+ var cancellationMethod = animateBefore(element, suffixClasses(className, '-add'));
+ if(cancellationMethod) {
+ afterReflow(function() {
+ unblockTransitions(element);
+ unblockKeyframeAnimations(element);
+ animationCompleted();
+ });
+ return cancellationMethod;
+ }
+ animationCompleted();
+ },
+
+ addClass : function(element, className, animationCompleted) {
+ return animateAfter(element, suffixClasses(className, '-add'), animationCompleted);
+ },
+
+ beforeRemoveClass : function(element, className, animationCompleted) {
+ var cancellationMethod = animateBefore(element, suffixClasses(className, '-remove'));
+ if(cancellationMethod) {
+ afterReflow(function() {
+ unblockTransitions(element);
+ unblockKeyframeAnimations(element);
+ animationCompleted();
+ });
+ return cancellationMethod;
+ }
+ animationCompleted();
+ },
+
+ removeClass : function(element, className, animationCompleted) {
+ return animateAfter(element, suffixClasses(className, '-remove'), animationCompleted);
+ }
+ };
+
+ function suffixClasses(classes, suffix) {
+ var className = '';
+ classes = angular.isArray(classes) ? classes : classes.split(/\s+/);
+ forEach(classes, function(klass, i) {
+ if(klass && klass.length > 0) {
+ className += (i > 0 ? ' ' : '') + klass + suffix;
+ }
+ });
+ return className;
+ }
+ }]);
+ }]);
+
+
+})(window, window.angular);
View
22 1.2.3/angular-animate.min.js
@@ -0,0 +1,22 @@
+/*
+ AngularJS v1.2.3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(C,k,F){'use strict';k.module("ngAnimate",["ng"]).config(["$provide","$animateProvider",function(M,G){var p=k.noop,r=k.forEach,N=G.$$selectors,T=1,h="$$ngAnimateState",H="ng-animate",l={running:!0};M.decorator("$animate",["$delegate","$injector","$sniffer","$rootElement","$timeout","$rootScope","$document",function(v,C,I,g,s,q,F){function O(a){if(a){var d=[],c={};a=a.substr(1).split(".");(I.transitions||I.animations)&&a.push("");for(var e=0;e<a.length;e++){var b=a[e],h=N[b];h&&!c[b]&&(d.push(C.get(h)),
+c[b]=!0)}return d}}function m(a,d,c,e,b,l,q){function w(a){t();if(!0===a)u();else{if(a=c.data(h))a.done=u,c.data(h,a);m(x,"after",u)}}function m(e,b,h){var k=b+"End";r(e,function(l,f){var B=function(){a:{var B=b+"Complete",a=e[f];a[B]=!0;(a[k]||p)();for(a=0;a<e.length;a++)if(!e[a][B])break a;h()}};"before"!=b||"enter"!=a&&"move"!=a?l[b]?l[k]=y?l[b](c,d,B):l[b](c,B):B():B()})}function g(){q&&s(q,0,!1)}function t(){t.hasBeenRun||(t.hasBeenRun=!0,l())}function u(){if(!u.hasBeenRun){u.hasBeenRun=!0;var a=
+c.data(h);a&&(y?z(c):(a.closeAnimationTimeout=s(function(){z(c)},0,!1),c.data(h,a)));g()}}var k=c.attr("class")||"",v=(" "+(k+" "+d)).replace(/\s+/g,".");e||(e=b?b.parent():c.parent());var v=O(v),y="addClass"==a||"removeClass"==a;b=c.data(h)||{};if(J(c,e)||0===v.length)t(),u();else{var x=[];b.running&&y&&b.structural||r(v,function(b){if(!b.allowCancel||b.allowCancel(c,a,d)){var e=b[a];"leave"==a?(b=e,e=null):b=b["before"+a.charAt(0).toUpperCase()+a.substr(1)];x.push({before:b,after:e})}});0===x.length?
+(t(),g()):(e=" "+k+" ",b.running&&(s.cancel(b.closeAnimationTimeout),z(c),L(b.animations),b.beforeComplete?(b.done||p)(!0):y&&!b.structural&&(e="removeClass"==b.event?e.replace(b.className,""):e+b.className+" ")),k=" "+d+" ","addClass"==a&&0<=e.indexOf(k)||"removeClass"==a&&-1==e.indexOf(k)?(t(),g()):(c.addClass(H),c.data(h,{running:!0,event:a,className:d,structural:!y,animations:x,done:w}),m(x,"before",w)))}}function E(a){a=a[0];a.nodeType==T&&r(a.querySelectorAll("."+H),function(a){a=k.element(a);
+var c=a.data(h);c&&(L(c.animations),z(a))})}function L(a){r(a,function(d){a.beforeComplete||(d.beforeEnd||p)(!0);a.afterComplete||(d.afterEnd||p)(!0)})}function z(a){a[0]==g[0]?l.disabled||(l.running=!1,l.structural=!1):(a.removeClass(H),a.removeData(h))}function J(a,d){if(l.disabled)return!0;if(a[0]==g[0])return l.disabled||l.running;do{if(0===d.length)break;var c=d[0]==g[0],e=c?l:d.data(h),e=e&&(!!e.disabled||!!e.running);if(c||e)return e;if(c)break}while(d=d.parent());return!0}g.data(h,l);q.$$postDigest(function(){q.$$postDigest(function(){l.running=
+!1})});return{enter:function(a,d,c,e){this.enabled(!1,a);v.enter(a,d,c);q.$$postDigest(function(){m("enter","ng-enter",a,d,c,p,e)})},leave:function(a,d){E(a);this.enabled(!1,a);q.$$postDigest(function(){m("leave","ng-leave",a,null,null,function(){v.leave(a)},d)})},move:function(a,d,c,e){E(a);this.enabled(!1,a);v.move(a,d,c);q.$$postDigest(function(){m("move","ng-move",a,d,c,p,e)})},addClass:function(a,d,c){m("addClass",d,a,null,null,function(){v.addClass(a,d)},c)},removeClass:function(a,d,c){m("removeClass",
+d,a,null,null,function(){v.removeClass(a,d)},c)},enabled:function(a,d){switch(arguments.length){case 2:if(a)z(d);else{var c=d.data(h)||{};c.disabled=!0;d.data(h,c)}break;case 1:l.disabled=!a;break;default:a=!l.disabled}return!!a}}}]);G.register("",["$window","$sniffer","$timeout",function(l,h,I){function g(f){R.push(f);I.cancel(S);S=I(function(){r(R,function(f){f()});R=[];S=null;D={}},10,!1)}function s(f,a){var K=a?D[a]:null;if(!K){var b=0,c=0,d=0,e=0,h,k,g,m;r(f,function(f){if(f.nodeType==T){f=l.getComputedStyle(f)||
+{};g=f[A+G];b=Math.max(q(g),b);m=f[A+t];h=f[A+u];c=Math.max(q(h),c);k=f[w+u];e=Math.max(q(k),e);var a=q(f[w+G]);0<a&&(a*=parseInt(f[w+M],10)||1);d=Math.max(a,d)}});K={total:0,transitionPropertyStyle:m,transitionDurationStyle:g,transitionDelayStyle:h,transitionDelay:c,transitionDuration:b,animationDelayStyle:k,animationDelay:e,animationDuration:d};a&&(D[a]=K)}return K}function q(f){var a=0;f=k.isString(f)?f.split(/\s*,\s*/):[];r(f,function(f){a=Math.max(parseFloat(f)||0,a)});return a}function H(f){var a=
+f.parent(),b=a.data(V);b||(a.data(V,++U),b=U);return b+"-"+f[0].className}function O(f,a){var b=H(f),c=b+" "+a,d={},e=D[c]?++D[c].total:0;if(0<e){var h=a+"-stagger",d=b+" "+h;(b=!D[d])&&f.addClass(h);d=s(f,d);b&&f.removeClass(h)}f.addClass(a);c=s(f,c);h=Math.max(c.transitionDuration,c.animationDuration);if(0===h)return f.removeClass(a),!1;var k="";0<c.transitionDuration?(f.addClass(x),k+=N+" ",f[0].style[A+t]="none"):f[0].style[w]="none 0s";r(a.split(" "),function(a,f){k+=(0<f?" ":"")+a+"-active"});
+f.data(y,{className:a,activeClassName:k,maxDuration:h,classes:a+" "+k,timings:c,stagger:d,ii:e});return!0}function m(a){a=a[0];var b=A+t;a.style[b]&&0<a.style[b].length&&(a.style[b]="")}function E(a){var b=a[0],c=w;b.style[c]&&0<b.style[c].length&&(a[0].style[c]="")}function L(a,d,e){function k(a){a.stopPropagation();a=a.originalEvent||a;var f=a.$manualTimeStamp||a.timeStamp||Date.now();Math.max(f-w,0)>=v&&a.elapsedTime>=q&&e()}var n=a.data(y);if(a.hasClass(d)&&n){var l=a[0],g=n.timings,m=n.stagger,
+q=n.maxDuration,r=n.activeClassName,v=1E3*Math.max(g.transitionDelay,g.animationDelay),w=Date.now(),t=Q+" "+P,u=n.ii,x,n="",p=[];if(0<g.transitionDuration){var s=g.transitionPropertyStyle;-1==s.indexOf("all")&&(x=!0,n+=b+"transition-property: "+s+", "+(h.msie?"-ms-zoom":"border-spacing")+"; ",n+=b+"transition-duration: "+g.transitionDurationStyle+", "+g.transitionDuration+"s; ",p.push(b+"transition-property"),p.push(b+"transition-duration"))}0<u&&(0<m.transitionDelay&&0===m.transitionDuration&&(s=
+g.transitionDelayStyle,x&&(s+=", "+g.transitionDelay+"s"),n+=b+"transition-delay: "+z(s,m.transitionDelay,u)+"; ",p.push(b+"transition-delay")),0<m.animationDelay&&0===m.animationDuration&&(n+=b+"animation-delay: "+z(g.animationDelayStyle,m.animationDelay,u)+"; ",p.push(b+"animation-delay")));0<p.length&&(g=l.getAttribute("style")||"",l.setAttribute("style",g+" "+n));a.on(t,k);a.addClass(r);return function(b){a.off(t,k);a.removeClass(r);c(a,d);for(var e in p)l.style.removeProperty(p[e])}}e()}function z(a,
+b,c){var d="";r(a.split(","),function(a,f){d+=(0<f?",":"")+(c*b+parseInt(a,10))+"s"});return d}function J(a,b){if(O(a,b))return function(d){d&&c(a,b)}}function a(a,b,d){if(a.data(y))return L(a,b,d);c(a,b);d()}function d(f,b,c){var d=J(f,b);if(d){var e=d;g(function(){m(f);E(f);e=a(f,b,c)});return function(a){(e||p)(a)}}c()}function c(a,b){a.removeClass(b);a.removeClass(x);a.removeData(y)}function e(a,b){var c="";a=k.isArray(a)?a:a.split(/\s+/);r(a,function(a,f){a&&0<a.length&&(c+=(0<f?" ":"")+a+b)});
+return c}var b="",A,P,w,Q;C.ontransitionend===F&&C.onwebkittransitionend!==F?(b="-webkit-",A="WebkitTransition",P="webkitTransitionEnd transitionend"):(A="transition",P="transitionend");C.onanimationend===F&&C.onwebkitanimationend!==F?(b="-webkit-",w="WebkitAnimation",Q="webkitAnimationEnd animationend"):(w="animation",Q="animationend");var G="Duration",t="Property",u="Delay",M="IterationCount",V="$$ngAnimateKey",y="$$ngAnimateCSS3Data",x="ng-animate-start",N="ng-animate-active",D={},U=0,R=[],S;return{allowCancel:function(a,
+b,c){var d=(a.data(y)||{}).classes;if(!d||0<=["enter","leave","move"].indexOf(b))return!0;var h=a.parent(),g=k.element(a[0].cloneNode());g.attr("style","position:absolute; top:-9999px; left:-9999px");g.removeAttr("id");g.html("");r(d.split(" "),function(a){g.removeClass(a)});g.addClass(e(c,"addClass"==b?"-add":"-remove"));h.append(g);a=s(g);g.remove();return 0<Math.max(a.transitionDuration,a.animationDuration)},enter:function(a,b){return d(a,"ng-enter",b)},leave:function(a,b){return d(a,"ng-leave",
+b)},move:function(a,b){return d(a,"ng-move",b)},beforeAddClass:function(a,b,c){if(b=J(a,e(b,"-add")))return g(function(){m(a);E(a);c()}),b;c()},addClass:function(b,c,d){return a(b,e(c,"-add"),d)},beforeRemoveClass:function(a,b,c){if(b=J(a,e(b,"-remove")))return g(function(){m(a);E(a);c()}),b;c()},removeClass:function(b,c,d){return a(b,e(c,"-remove"),d)}}}])}])})(window,window.angular);
+//# sourceMappingURL=angular-animate.min.js.map
View
8 1.2.3/angular-animate.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-animate.min.js",
+"lineCount":21,
+"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CA2OtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,OAAA,CAgBU,CAAC,UAAD,CAAa,kBAAb,CAAiC,QAAQ,CAACC,CAAD,CAAWC,CAAX,CAA6B,CAC5E,IAAIC,EAAON,CAAAM,KAAX,CACIC,EAAUP,CAAAO,QADd,CAEIC,EAAYH,CAAAI,YAFhB,CAIIC,EAAe,CAJnB,CAKIC,EAAmB,kBALvB,CAMIC,EAAwB,YAN5B,CAOIC,EAAmB,SAAU,CAAA,CAAV,CAEvBT,EAAAU,UAAA,CAAmB,UAAnB,CAA+B,CAAC,WAAD,CAAc,WAAd,CAA2B,UAA3B,CAAuC,cAAvC,CAAuD,UAAvD,CAAmE,YAAnE,CAAiF,WAAjF,CACP,QAAQ,CAACC,CAAD,CAAcC,CAAd,CAA2BC,CAA3B,CAAuCC,CAAvC,CAAuDC,CAAvD,CAAmEC,CAAnE,CAAiFC,CAAjF,CAA4F,CAgB1HC,QAASA,EAAM,CAACC,CAAD,CAAO,CACpB,GAAIA,CAAJ,CAAU,CAAA,IACJC,EAAU,EADN,CAEJC,EAAU,EACVC,EAAAA,CAAUH,CAAAI,OAAA,CAAY,CAAZ,CAAAC,MAAA,CAAqB,GAArB,CAOd,EAAIX,CAAAY,YAAJ,EAA4BZ,CAAAa,WAA5B,GACEJ,CAAAK,KAAA,CAAa,EAAb,CAGF,KAAI,IAAIC,EAAE,CAAV,CAAaA,CAAb,CAAiBN,CAAAO,OAAjB,CAAiCD,CAAA,EAAjC,CAAsC,CAAA,IAChCE,EAAQR,CAAA,CAAQM,CAAR,CADwB,CAEhCG,EAAsB3B,CAAA,CAAU0B,CAAV,CACvBC,EAAH,EAA2B,CAAAV,CAAA,CAAQS,CAAR,CAA3B,GACEV,CAAAO,KAAA,CAAaf,CAAAoB,IAAA,CAAcD,CAAd,CAAb,CACA;AAAAV,CAAA,CAAQS,CAAR,CAAA,CAAiB,CAAA,CAFnB,CAHoC,CAQtC,MAAOV,EAtBC,CADU,CAwRtBa,QAASA,EAAgB,CAACC,CAAD,CAAiBC,CAAjB,CAA4BC,CAA5B,CAAqCC,CAArC,CAAoDC,CAApD,CAAkEC,CAAlE,CAAgFC,CAAhF,CAA8F,CAiHrHC,QAASA,EAA0B,CAACC,CAAD,CAAY,CAC7CC,CAAA,EACA,IAAiB,CAAA,CAAjB,GAAGD,CAAH,CACEE,CAAA,EADF,KAAA,CASA,GADIC,CACJ,CADWT,CAAAS,KAAA,CAAatC,CAAb,CACX,CACEsC,CAAAC,KACA,CADYF,CACZ,CAAAR,CAAAS,KAAA,CAAatC,CAAb,CAA+BsC,CAA/B,CAEFE,EAAA,CAA6BrB,CAA7B,CAAyC,OAAzC,CAAkDkB,CAAlD,CAbA,CAF6C,CAkB/CG,QAASA,EAA4B,CAACrB,CAAD,CAAasB,CAAb,CAAoBC,CAApB,CAA6C,CAChF,IAAIC,EAAYF,CAAZE,CAAoB,KACxB/C,EAAA,CAAQuB,CAAR,CAAoB,QAAQ,CAACyB,CAAD,CAAYC,CAAZ,CAAmB,CAC7C,IAAIC,EAA0BA,QAAQ,EAAG,CAoBX,CAAA,CAAA,CAC9B,IAAIC,EApBcN,CAoBdM,CAA8B,UAAlC,CACIC,EAAmB7B,CAAA,CArBZ0B,CAqBY,CACvBG,EAAA,CAAiBD,CAAjB,CAAA,CAAwC,CAAA,CACvC,EAAAC,CAAA,CAAiBL,CAAjB,CAAA,EAA+BhD,CAA/B,GAED,KAAQ0B,CAAR,CAAU,CAAV,CAAYA,CAAZ,CAAcF,CAAAG,OAAd,CAAgCD,CAAA,EAAhC,CACE,GAAG,CAACF,CAAA,CAAWE,CAAX,CAAA,CAAc0B,CAAd,CAAJ,CAAwC,MAAA,CAG1CL,EAAA,EAV8B,CApBW,CAM7B,SAAZ,EAAGD,CAAH,EAA2C,OAA3C,EAAyBd,CAAzB,EAAwE,MAAxE,EAAsDA,CAAtD,CAKGiB,CAAA,CAAUH,CAAV,CAAH,CACEG,CAAA,CAAUD,CAAV,CADF,CACyBM,CAAA,CACrBL,CAAA,CAAUH,CAAV,CAAA,CAAiBZ,CAAjB,CAA0BD,CAA1B,CAAqCkB,CAArC,CADqB,CAErBF,CAAA,CAAUH,CAAV,CAAA,CAAiBZ,CAAjB,CAA0BiB,CAA1B,CAHJ,CAKEA,CAAA,EAVF,CACEA,CAAA,EAR2C,CAA/C,CAFgF,CAqClFI,QAASA,EAAqB,EAAG,CAC/BjB,CAAA,EAAgBzB,CAAA,CAASyB,CAAT,CAAuB,CAAvB,CAA0B,CAAA,CAA1B,CADe,CAMjCG,QAASA,EAAgB,EAAG,CACtBA,CAAAe,WAAJ,GACEf,CAAAe,WACA,CAD8B,CAAA,CAC9B,CAAAnB,CAAA,EAFF,CAD0B,CAO5BK,QAASA,EAAc,EAAG,CACxB,GAAG,CAACA,CAAAc,WAAJ,CAA+B,CAC7Bd,CAAAc,WAAA,CAA4B,CAAA,CAC5B,KAAIb;AAAOT,CAAAS,KAAA,CAAatC,CAAb,CACRsC,EAAH,GAKKW,CAAH,CACEG,CAAA,CAAQvB,CAAR,CADF,EAGES,CAAAe,sBAGA,CAH6B7C,CAAA,CAAS,QAAQ,EAAG,CAC/C4C,CAAA,CAAQvB,CAAR,CAD+C,CAApB,CAE1B,CAF0B,CAEvB,CAAA,CAFuB,CAG7B,CAAAA,CAAAS,KAAA,CAAatC,CAAb,CAA+BsC,CAA/B,CANF,CALF,CAcAY,EAAA,EAjB6B,CADP,CApL1B,IAAII,EAAmBzB,CAAA0B,KAAA,CAAa,OAAb,CAAnBD,EAA4C,EAAhD,CAEIE,EAAmBC,CAAA,GAAAA,EADTH,CACSG,CADU,GACVA,CADgB7B,CAChB6B,UAAA,CAAuB,MAAvB,CAA8B,GAA9B,CAClB3B,EAAL,GACEA,CADF,CACkBC,CAAA,CAAeA,CAAA2B,OAAA,EAAf,CAAuC7B,CAAA6B,OAAA,EADzD,CAII7C,KAAAA,EAAUF,CAAA,CAAO6C,CAAP,CAAV3C,CACAoC,EAAiC,UAAjCA,EAAetB,CAAfsB,EAAiE,aAAjEA,EAA+CtB,CAC/CgC,EAAAA,CAAiB9B,CAAAS,KAAA,CAAatC,CAAb,CAAjB2D,EAAmD,EAMvD,IAAIC,CAAA,CAAmB/B,CAAnB,CAA4BC,CAA5B,CAAJ,EAAqE,CAArE,GAAkDjB,CAAAS,OAAlD,CACEc,CAAA,EACA,CAAAC,CAAA,EAFF,KAAA,CAMA,IAAIlB,EAAa,EAGbwC,EAAAE,QAAJ,EAAgCZ,CAAhC,EAAgDU,CAAAG,WAAhD,EACElE,CAAA,CAAQiB,CAAR,CAAiB,QAAQ,CAAC+B,CAAD,CAAY,CAEnC,GAAG,CAACA,CAAAmB,YAAJ,EAA6BnB,CAAAmB,YAAA,CAAsBlC,CAAtB,CAA+BF,CAA/B,CAA+CC,CAA/C,CAA7B,CAAwF,CACtF,IAAcoC,EAAUpB,CAAA,CAAUjB,CAAV,CAIH,QAArB,EAAGA,CAAH,EACEsC,CACA,CADWD,CACX,CAAAA,CAAA,CAAU,IAFZ,EAIEC,CAJF,CAIarB,CAAA,CAAU,QAAV,CAAqBjB,CAAAuC,OAAA,CAAsB,CAAtB,CAAAC,YAAA,EAArB,CAA8DxC,CAAAX,OAAA,CAAsB,CAAtB,CAA9D,CAEbG,EAAAC,KAAA,CAAgB,QACL6C,CADK,OAEND,CAFM,CAAhB,CAXsF,CAFrD,CAArC,CAuBuB,EAAzB,GAAG7C,CAAAG,OAAH;CACEc,CAAA,EACA,CAAAc,CAAA,EAFF,GASIkB,CA+BJ,CA/BsB,GA+BtB,CA/B4Bd,CA+B5B,CA/B+C,GA+B/C,CA9BGK,CAAAE,QA8BH,GA3BErD,CAAA6D,OAAA,CAAgBV,CAAAN,sBAAhB,CAOA,CANAD,CAAA,CAAQvB,CAAR,CAMA,CALAyC,CAAA,CAAiBX,CAAAxC,WAAjB,CAKA,CAAGwC,CAAAY,eAAH,CACG,CAAAZ,CAAApB,KAAA,EAAuB5C,CAAvB,EAA6B,CAAA,CAA7B,CADH,CAEUsD,CAFV,EAE2Ba,CAAAH,CAAAG,WAF3B,GASEM,CATF,CAS4C,aAAxB,EAAAT,CAAAa,MAAA,CAChBJ,CAAAX,QAAA,CAAwBE,CAAA/B,UAAxB,CAAkD,EAAlD,CADgB,CAEhBwC,CAFgB,CAEET,CAAA/B,UAFF,CAE6B,GAXjD,CAoBF,EADI6C,CACJ,CADqB,GACrB,CAD2B7C,CAC3B,CADuC,GACvC,CAAsB,UAAtB,EAAID,CAAJ,EAAkF,CAAlF,EAAuCyC,CAAAM,QAAA,CAAwBD,CAAxB,CAAvC,EACsB,aADtB,EACI9C,CADJ,EACmF,EADnF,EACuCyC,CAAAM,QAAA,CAAwBD,CAAxB,CADvC,EAEErC,CAAA,EACA,CAAAc,CAAA,EAHF,GASArB,CAAA8C,SAAA,CAAiB1E,CAAjB,CAaA,CAXA4B,CAAAS,KAAA,CAAatC,CAAb,CAA+B,SACrB,CAAA,CADqB,OAEvB2B,CAFuB,WAGnBC,CAHmB,YAIlB,CAACqB,CAJiB,YAKlB9B,CALkB,MAMxBe,CANwB,CAA/B,CAWA,CAAAM,CAAA,CAA6BrB,CAA7B,CAAyC,QAAzC,CAAmDe,CAAnD,CAtBA,CAxCA,CAjCA,CAhBqH,CA4MvH0C,QAASA,EAAqB,CAAC/C,CAAD,CAAU,CAClCgD,CAAAA,CAAOhD,CAAA,CAAQ,CAAR,CACRgD,EAAAC,SAAH,EAAoB/E,CAApB,EAIAH,CAAA,CAAQiF,CAAAE,iBAAA,CAAsB,GAAtB,CAA4B9E,CAA5B,CAAR,CAA4D,QAAQ,CAAC4B,CAAD,CAAU,CAC5EA,CAAA,CAAUxC,CAAAwC,QAAA,CAAgBA,CAAhB,CACV;IAAIS,EAAOT,CAAAS,KAAA,CAAatC,CAAb,CACRsC,EAAH,GACEgC,CAAA,CAAiBhC,CAAAnB,WAAjB,CACA,CAAAiC,CAAA,CAAQvB,CAAR,CAFF,CAH4E,CAA9E,CANsC,CAgBxCyC,QAASA,EAAgB,CAACnD,CAAD,CAAa,CAEpCvB,CAAA,CAAQuB,CAAR,CAAoB,QAAQ,CAACyB,CAAD,CAAY,CAClCzB,CAAAoD,eAAJ,EACG,CAAA3B,CAAAoC,UAAA,EAAuBrF,CAAvB,EAHiBsF,CAAAA,CAGjB,CAEC9D,EAAA+D,cAAJ,EACG,CAAAtC,CAAAuC,SAAA,EAAsBxF,CAAtB,EANiBsF,CAAAA,CAMjB,CALmC,CAAxC,CAFoC,CAYtC7B,QAASA,EAAO,CAACvB,CAAD,CAAU,CACrBA,CAAA,CAAQ,CAAR,CAAH,EAAiBtB,CAAA,CAAa,CAAb,CAAjB,CACML,CAAAkF,SADN,GAEIlF,CAAA2D,QACA,CAD2B,CAAA,CAC3B,CAAA3D,CAAA4D,WAAA,CAA8B,CAAA,CAHlC,GAMEjC,CAAAwD,YAAA,CAAoBpF,CAApB,CACA,CAAA4B,CAAAyD,WAAA,CAAmBtF,CAAnB,CAPF,CADwB,CAY1B4D,QAASA,EAAkB,CAAC/B,CAAD,CAAUC,CAAV,CAAyB,CAClD,GAAI5B,CAAAkF,SAAJ,CAA+B,MAAO,CAAA,CAEtC,IAAGvD,CAAA,CAAQ,CAAR,CAAH,EAAiBtB,CAAA,CAAa,CAAb,CAAjB,CACE,MAAOL,EAAAkF,SAAP,EAAoClF,CAAA2D,QAGtC,GAAG,CAID,GAA4B,CAA5B,GAAG/B,CAAAR,OAAH,CAA+B,KAE/B,KAAIiE,EAASzD,CAAA,CAAc,CAAd,CAATyD,EAA6BhF,CAAA,CAAa,CAAb,CAAjC,CACIiF,EAAQD,CAAA,CAASrF,CAAT,CAA4B4B,CAAAQ,KAAA,CAAmBtC,CAAnB,CADxC,CAEIyF,EAASD,CAATC,GAAmB,CAAC,CAACD,CAAAJ,SAArBK,EAAuC,CAAC,CAACD,CAAA3B,QAAzC4B,CACJ,IAAGF,CAAH,EAAaE,CAAb,CACE,MAAOA,EAGT,IAAGF,CAAH,CAAW,KAbV,CAAH,MAeMzD,CAfN,CAesBA,CAAA4B,OAAA,EAftB,CAiBA,OAAO,CAAA,CAxB2C,CA1hBpDnD,CAAA+B,KAAA,CAAkBtC,CAAlB,CAAoCE,CAApC,CAQAO,EAAAiF,aAAA,CAAwB,QAAQ,EAAG,CACjCjF,CAAAiF,aAAA,CAAwB,QAAQ,EAAG,CACjCxF,CAAA2D,QAAA;AAA2B,CAAA,CADM,CAAnC,CADiC,CAAnC,CAoDA,OAAO,OA+BG8B,QAAQ,CAAC9D,CAAD,CAAUC,CAAV,CAAyBC,CAAzB,CAAuCE,CAAvC,CAAqD,CACnE,IAAA2D,QAAA,CAAa,CAAA,CAAb,CAAoB/D,CAApB,CACAzB,EAAAuF,MAAA,CAAgB9D,CAAhB,CAAyBC,CAAzB,CAAwCC,CAAxC,CACAtB,EAAAiF,aAAA,CAAwB,QAAQ,EAAG,CACjChE,CAAA,CAAiB,OAAjB,CAA0B,UAA1B,CAAsCG,CAAtC,CAA+CC,CAA/C,CAA8DC,CAA9D,CAA4EpC,CAA5E,CAAkFsC,CAAlF,CADiC,CAAnC,CAHmE,CA/BhE,OAmEG4D,QAAQ,CAAChE,CAAD,CAAUI,CAAV,CAAwB,CACtC2C,CAAA,CAAsB/C,CAAtB,CACA,KAAA+D,QAAA,CAAa,CAAA,CAAb,CAAoB/D,CAApB,CACApB,EAAAiF,aAAA,CAAwB,QAAQ,EAAG,CACjChE,CAAA,CAAiB,OAAjB,CAA0B,UAA1B,CAAsCG,CAAtC,CAA+C,IAA/C,CAAqD,IAArD,CAA2D,QAAQ,EAAG,CACpEzB,CAAAyF,MAAA,CAAgBhE,CAAhB,CADoE,CAAtE,CAEGI,CAFH,CADiC,CAAnC,CAHsC,CAnEnC,MA4GE6D,QAAQ,CAACjE,CAAD,CAAUC,CAAV,CAAyBC,CAAzB,CAAuCE,CAAvC,CAAqD,CAClE2C,CAAA,CAAsB/C,CAAtB,CACA,KAAA+D,QAAA,CAAa,CAAA,CAAb,CAAoB/D,CAApB,CACAzB,EAAA0F,KAAA,CAAejE,CAAf,CAAwBC,CAAxB,CAAuCC,CAAvC,CACAtB,EAAAiF,aAAA,CAAwB,QAAQ,EAAG,CACjChE,CAAA,CAAiB,MAAjB,CAAyB,SAAzB,CAAoCG,CAApC,CAA6CC,CAA7C,CAA4DC,CAA5D,CAA0EpC,CAA1E,CAAgFsC,CAAhF,CADiC,CAAnC,CAJkE,CA5G/D,UAmJM0C,QAAQ,CAAC9C,CAAD,CAAUD,CAAV,CAAqBK,CAArB,CAAmC,CACpDP,CAAA,CAAiB,UAAjB,CAA6BE,CAA7B,CAAwCC,CAAxC,CAAiD,IAAjD,CAAuD,IAAvD,CAA6D,QAAQ,EAAG,CACtEzB,CAAAuE,SAAA,CAAmB9C,CAAnB,CAA4BD,CAA5B,CADsE,CAAxE,CAEGK,CAFH,CADoD,CAnJjD,aAuLSoD,QAAQ,CAACxD,CAAD,CAAUD,CAAV,CAAqBK,CAArB,CAAmC,CACvDP,CAAA,CAAiB,aAAjB;AAAgCE,CAAhC,CAA2CC,CAA3C,CAAoD,IAApD,CAA0D,IAA1D,CAAgE,QAAQ,EAAG,CACzEzB,CAAAiF,YAAA,CAAsBxD,CAAtB,CAA+BD,CAA/B,CADyE,CAA3E,CAEGK,CAFH,CADuD,CAvLpD,SA2MK2D,QAAQ,CAACG,CAAD,CAAQlE,CAAR,CAAiB,CACjC,OAAOmE,SAAA1E,OAAP,EACE,KAAK,CAAL,CACE,GAAGyE,CAAH,CACE3C,CAAA,CAAQvB,CAAR,CADF,KAEO,CACL,IAAIS,EAAOT,CAAAS,KAAA,CAAatC,CAAb,CAAPsC,EAAyC,EAC7CA,EAAA8C,SAAA,CAAgB,CAAA,CAChBvD,EAAAS,KAAA,CAAatC,CAAb,CAA+BsC,CAA/B,CAHK,CAKT,KAEA,MAAK,CAAL,CACEpC,CAAAkF,SAAA,CAA4B,CAACW,CAC/B,MAEA,SACEA,CAAA,CAAQ,CAAC7F,CAAAkF,SAhBb,CAmBA,MAAO,CAAC,CAACW,CApBwB,CA3M9B,CA9DmH,CAD7F,CAA/B,CAyjBArG,EAAAuG,SAAA,CAA0B,EAA1B,CAA8B,CAAC,SAAD,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,QAAQ,CAACC,CAAD,CAAU5F,CAAV,CAAoBE,CAApB,CAA8B,CA2CtG2F,QAASA,EAAW,CAACC,CAAD,CAAW,CAC7BC,CAAAjF,KAAA,CAA0BgF,CAA1B,CACA5F,EAAA6D,OAAA,CAAgBiC,CAAhB,CACAA,EAAA,CAAiB9F,CAAA,CAAS,QAAQ,EAAG,CACnCZ,CAAA,CAAQyG,CAAR,CAA8B,QAAQ,CAACE,CAAD,CAAK,CACzCA,CAAA,EADyC,CAA3C,CAGAF,EAAA,CAAuB,EACvBC,EAAA,CAAiB,IACjBE,EAAA,CAAc,EANqB,CAApB,CAOd,EAPc,CAOV,CAAA,CAPU,CAHY,CAa/BC,QAASA,EAA0B,CAAC5E,CAAD,CAAU6E,CAAV,CAAoB,CACrD,IAAIpE,EAAOoE,CAAA,CAAWF,CAAA,CAAYE,CAAZ,CAAX,CAAmC,IAC9C,IAAG,CAACpE,CAAJ,CAAU,CACR,IAAIqE,EAAqB,CAAzB,CACIC,EAAkB,CADtB,CAEIC,EAAoB,CAFxB,CAGIC,EAAiB,CAHrB,CAIIC,CAJJ,CAKIC,CALJ,CAMIC,CANJ,CAOIC,CAGJtH,EAAA,CAAQiC,CAAR,CAAiB,QAAQ,CAACA,CAAD,CAAU,CACjC,GAAIA,CAAAiD,SAAJ,EAAwB/E,CAAxB,CAAsC,CAChCoH,CAAAA,CAAgBjB,CAAAkB,iBAAA,CAAyBvF,CAAzB,CAAhBsF;AAAqD,EAEzDF,EAAA,CAA0BE,CAAA,CAAcE,CAAd,CAAgCC,CAAhC,CAE1BX,EAAA,CAAqBY,IAAAC,IAAA,CAASC,CAAA,CAAaR,CAAb,CAAT,CAAgDN,CAAhD,CAErBO,EAAA,CAA0BC,CAAA,CAAcE,CAAd,CAAgCK,CAAhC,CAE1BX,EAAA,CAAuBI,CAAA,CAAcE,CAAd,CAAgCM,CAAhC,CAEvBf,EAAA,CAAmBW,IAAAC,IAAA,CAASC,CAAA,CAAaV,CAAb,CAAT,CAA6CH,CAA7C,CAEnBI,EAAA,CAAsBG,CAAA,CAAcS,CAAd,CAA+BD,CAA/B,CAEtBb,EAAA,CAAmBS,IAAAC,IAAA,CAASC,CAAA,CAAaT,CAAb,CAAT,CAA4CF,CAA5C,CAEnB,KAAIe,EAAaJ,CAAA,CAAaN,CAAA,CAAcS,CAAd,CAA+BN,CAA/B,CAAb,CAEF,EAAf,CAAGO,CAAH,GACEA,CADF,EACeC,QAAA,CAASX,CAAA,CAAcS,CAAd,CAA+BG,CAA/B,CAAT,CAAwE,EAAxE,CADf,EAC8F,CAD9F,CAIAlB,EAAA,CAAoBU,IAAAC,IAAA,CAASK,CAAT,CAAoBhB,CAApB,CAvBgB,CADL,CAAnC,CA2BAvE,EAAA,CAAO,OACG,CADH,yBAEoB4E,CAFpB,yBAGoBD,CAHpB,sBAIiBF,CAJjB,iBAKYH,CALZ,oBAMeD,CANf,qBAOgBK,CAPhB,gBAQWF,CARX,mBAScD,CATd,CAWJH,EAAH,GACEF,CAAA,CAAYE,CAAZ,CADF,CAC0BpE,CAD1B,CAjDQ,CAqDV,MAAOA,EAvD8C,CA0DvDmF,QAASA,EAAY,CAACO,CAAD,CAAM,CACzB,IAAIC,EAAW,CACXC,EAAAA,CAAS7I,CAAA8I,SAAA,CAAiBH,CAAjB,CAAA,CACXA,CAAA/G,MAAA,CAAU,SAAV,CADW,CAEX,EACFrB,EAAA,CAAQsI,CAAR,CAAgB,QAAQ,CAACnC,CAAD,CAAQ,CAC9BkC,CAAA,CAAWV,IAAAC,IAAA,CAASY,UAAA,CAAWrC,CAAX,CAAT,EAA8B,CAA9B,CAAiCkC,CAAjC,CADmB,CAAhC,CAGA,OAAOA,EARkB,CAW3BI,QAASA,EAAW,CAACxG,CAAD,CAAU,CAC5B,IAAIC;AAAgBD,CAAA6B,OAAA,EAApB,CACI4E,EAAWxG,CAAAQ,KAAA,CAAmBiG,CAAnB,CACXD,EAAJ,GACExG,CAAAQ,KAAA,CAAmBiG,CAAnB,CAA0C,EAAEC,CAA5C,CACA,CAAAF,CAAA,CAAWE,CAFb,CAIA,OAAOF,EAAP,CAAkB,GAAlB,CAAwBzG,CAAA,CAAQ,CAAR,CAAAD,UAPI,CAU9B6G,QAASA,EAAY,CAAC5G,CAAD,CAAUD,CAAV,CAAqB,CACxC,IAAI8E,EAAW2B,CAAA,CAAYxG,CAAZ,CAAf,CACI6G,EAAgBhC,CAAhBgC,CAA2B,GAA3BA,CAAiC9G,CADrC,CAEI+G,EAAU,EAFd,CAGIC,EAAKpC,CAAA,CAAYkC,CAAZ,CAAA,CAA6B,EAAElC,CAAA,CAAYkC,CAAZ,CAAAG,MAA/B,CAAkE,CAE3E,IAAQ,CAAR,CAAGD,CAAH,CAAW,CACT,IAAIE,EAAmBlH,CAAnBkH,CAA+B,UAAnC,CACIC,EAAkBrC,CAAlBqC,CAA6B,GAA7BA,CAAmCD,CAGvC,EAFIE,CAEJ,CAFmB,CAACxC,CAAA,CAAYuC,CAAZ,CAEpB,GAAgBlH,CAAA8C,SAAA,CAAiBmE,CAAjB,CAEhBH,EAAA,CAAUlC,CAAA,CAA2B5E,CAA3B,CAAoCkH,CAApC,CAEVC,EAAA,EAAgBnH,CAAAwD,YAAA,CAAoByD,CAApB,CATP,CAYXjH,CAAA8C,SAAA,CAAiB/C,CAAjB,CAEIqH,EAAAA,CAAUxC,CAAA,CAA2B5E,CAA3B,CAAoC6G,CAApC,CAMVQ,EAAAA,CAAc3B,IAAAC,IAAA,CAASyB,CAAAtC,mBAAT,CAAqCsC,CAAApC,kBAArC,CAClB,IAAmB,CAAnB,GAAGqC,CAAH,CAEE,MADArH,EAAAwD,YAAA,CAAoBzD,CAApB,CACO,CAAA,CAAA,CAMT,KAAIuH,EAAkB,EACU,EAAhC,CAAGF,CAAAtC,mBAAH,EACE9E,CAAA8C,SAAA,CAAiByE,CAAjB,CAyBF,CAxBED,CAwBF,EAxBqBE,CAwBrB,CAxB6D,GAwB7D,CAvBmBxH,CAuBnB,CAAQ,CAAR,CAAAyH,MAAA,CAAiBjC,CAAjB,CAAmCK,CAAnC,CAAA,CAAmD,MA1BnD,EAK0B7F,CAyB1B,CAAQ,CAAR,CAAAyH,MAAA,CAAiB1B,CAAjB,CA9BA,CA8BmC,SAtBnChI,EAAA,CAAQgC,CAAAX,MAAA,CAAgB,GAAhB,CAAR,CAA8B,QAAQ,CAACM,CAAD,CAAQF,CAAR,CAAW,CAC/C8H,CAAA,GAAwB,CAAJ,CAAA9H,CAAA,CAAQ,GAAR,CAAc,EAAlC,EAAwCE,CAAxC,CAAgD,SADD,CAAjD,CAIAM;CAAAS,KAAA,CAAaiH,CAAb,CAAsC,WACxB3H,CADwB,iBAElBuH,CAFkB,aAGtBD,CAHsB,SAI1BtH,CAJ0B,CAId,GAJc,CAIRuH,CAJQ,SAK1BF,CAL0B,SAM1BN,CAN0B,IAO/BC,CAP+B,CAAtC,CAUA,OAAO,CAAA,CA1DiC,CAqE1CY,QAASA,EAAkB,CAAC3H,CAAD,CAAU,CAC/BgD,CAAAA,CAAOhD,CAAA,CAAQ,CAAR,CAAX,KAAuB4H,EAAOpC,CAAPoC,CAAyB/B,CAC7C7C,EAAAyE,MAAA,CAAWG,CAAX,CAAH,EAAiD,CAAjD,CAAuB5E,CAAAyE,MAAA,CAAWG,CAAX,CAAAnI,OAAvB,GACEuD,CAAAyE,MAAA,CAAWG,CAAX,CADF,CACqB,EADrB,CAFmC,CAOrCC,QAASA,EAAyB,CAAC7H,CAAD,CAAU,CAAA,IACtCgD,EAAOhD,CAAA,CAAQ,CAAR,CAD+B,CACnB4H,EAAO7B,CAC3B/C,EAAAyE,MAAA,CAAWG,CAAX,CAAH,EAAiD,CAAjD,CAAuB5E,CAAAyE,MAAA,CAAWG,CAAX,CAAAnI,OAAvB,GACEO,CAAA,CAAQ,CAAR,CAAAyH,MAAA,CAAiBG,CAAjB,CADF,CAC2B,EAD3B,CAF0C,CAO5CE,QAASA,EAAU,CAAC9H,CAAD,CAAUD,CAAV,CAAqBgI,CAArB,CAA8C,CAqE/DC,QAASA,EAAmB,CAACrF,CAAD,CAAQ,CAClCA,CAAAsF,gBAAA,EACIC,EAAAA,CAAKvF,CAAAwF,cAALD,EAA4BvF,CAChC,KAAIyF,EAAYF,CAAAG,iBAAZD,EAAmCF,CAAAE,UAAnCA,EAAmDE,IAAAC,IAAA,EAQpD7C,KAAAC,IAAA,CAASyC,CAAT,CAAqBI,CAArB,CAAgC,CAAhC,CAAH,EAAyCC,CAAzC,EAAyDP,CAAAQ,YAAzD,EAA2ErB,CAA3E,EACEU,CAAA,EAZgC,CApEpC,IAAItH,EAAOT,CAAAS,KAAA,CAAaiH,CAAb,CACX,IAAI1H,CAAA2I,SAAA,CAAiB5I,CAAjB,CAAJ,EAAoCU,CAApC,CAAA,CAKA,IAAIuC,EAAOhD,CAAA,CAAQ,CAAR,CAAX,CACIoH,EAAU3G,CAAA2G,QADd,CAEIN,EAAUrG,CAAAqG,QAFd;AAGIO,EAAc5G,CAAA4G,YAHlB,CAIIC,EAAkB7G,CAAA6G,gBAJtB,CAKImB,EAA2E,GAA3EA,CAAe/C,IAAAC,IAAA,CAASyB,CAAArC,gBAAT,CAAkCqC,CAAAnC,eAAlC,CALnB,CAMIuD,EAAYF,IAAAC,IAAA,EANhB,CAOIK,EAAsBC,CAAtBD,CAA2C,GAA3CA,CAAiDE,CAPrD,CAQI/B,EAAKtG,CAAAsG,GART,CAUIgC,CAVJ,CAUwBtB,EAAQ,EAVhC,CAUoCuB,EAAgB,EACpD,IAAgC,CAAhC,CAAG5B,CAAAtC,mBAAH,CAAmC,CACjC,IAAImE,EAAgB7B,CAAA/B,wBACgB,GAApC,EAAG4D,CAAApG,QAAA,CAAsB,KAAtB,CAAH,GACEkG,CAKA,CALqB,CAAA,CAKrB,CAHAtB,CAGA,EAHSyB,CAGT,CAHsB,uBAGtB,CAHgDD,CAGhD,CAHgE,IAGhE,EAJuBxK,CAAA0K,KAAAC,CAAgB,UAAhBA,CAA6B,gBAIpD,EAH0F,IAG1F,CAFA3B,CAEA,EAFSyB,CAET,CAFsB,uBAEtB,CAFgD9B,CAAAhC,wBAEhD,CAFkF,IAElF,CAFyFgC,CAAAtC,mBAEzF,CAFsH,KAEtH,CADAkE,CAAAzJ,KAAA,CAAmB2J,CAAnB,CAAgC,qBAAhC,CACA,CAAAF,CAAAzJ,KAAA,CAAmB2J,CAAnB,CAAgC,qBAAhC,CANF,CAFiC,CAY3B,CAAR,CAAGnC,CAAH,GAC+B,CAW7B,CAXGD,CAAA/B,gBAWH,EAXiE,CAWjE,GAXkC+B,CAAAhC,mBAWlC,GAVMuE,CAOJ;AAPiBjC,CAAAlC,qBAOjB,CANG6D,CAMH,GALEM,CAKF,EALgB,IAKhB,CALuBjC,CAAArC,gBAKvB,CALiD,GAKjD,EAFA0C,CAEA,EAFSyB,CAET,CAFsB,oBAEtB,CADSI,CAAA,CAAoBD,CAApB,CAAgCvC,CAAA/B,gBAAhC,CAAyDgC,CAAzD,CACT,CADwE,IACxE,CAAAiC,CAAAzJ,KAAA,CAAmB2J,CAAnB,CAAgC,kBAAhC,CAGF,EAA4B,CAA5B,CAAGpC,CAAA7B,eAAH,EAA+D,CAA/D,GAAiC6B,CAAA9B,kBAAjC,GACEyC,CAEA,EAFSyB,CAET,CAFsB,mBAEtB,CADSI,CAAA,CAAoBlC,CAAAjC,oBAApB,CAAiD2B,CAAA7B,eAAjD,CAAyE8B,CAAzE,CACT,CADwF,IACxF,CAAAiC,CAAAzJ,KAAA,CAAmB2J,CAAnB,CAAgC,iBAAhC,CAHF,CAZF,CAmB0B,EAA1B,CAAGF,CAAAvJ,OAAH,GACM8J,CACJ,CADevG,CAAAwG,aAAA,CAAkB,OAAlB,CACf,EAD6C,EAC7C,CAAAxG,CAAAyG,aAAA,CAAkB,OAAlB,CAA2BF,CAA3B,CAAsC,GAAtC,CAA4C9B,CAA5C,CAFF,CAKAzH,EAAA0J,GAAA,CAAWd,CAAX,CAAgCZ,CAAhC,CACAhI,EAAA8C,SAAA,CAAiBwE,CAAjB,CAKA,OAAOqC,SAAc,CAACrJ,CAAD,CAAY,CAC/BN,CAAA4J,IAAA,CAAYhB,CAAZ,CAAiCZ,CAAjC,CACAhI,EAAAwD,YAAA,CAAoB8D,CAApB,CACAuC,EAAA,CAAa7J,CAAb,CAAsBD,CAAtB,CACA,KAAKP,IAAIA,CAAT,GAAcwJ,EAAd,CACEhG,CAAAyE,MAAAqC,eAAA,CAA0Bd,CAAA,CAAcxJ,CAAd,CAA1B,CAL6B,CA1DjC,CACEuI,CAAA,EAH6D,CAsFjEuB,QAASA,EAAmB,CAACD,CAAD;AAAaU,CAAb,CAA2B/I,CAA3B,CAAkC,CAC5D,IAAIyG,EAAQ,EACZ1J,EAAA,CAAQsL,CAAAjK,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAAC4K,CAAD,CAAMxK,CAAN,CAAS,CAC9CiI,CAAA,GAAc,CAAJ,CAAAjI,CAAA,CAAQ,GAAR,CAAc,EAAxB,GACUwB,CADV,CACkB+I,CADlB,CACiC9D,QAAA,CAAS+D,CAAT,CAAc,EAAd,CADjC,EACsD,GAFR,CAAhD,CAIA,OAAOvC,EANqD,CAS9DwC,QAASA,EAAa,CAACjK,CAAD,CAAUD,CAAV,CAAqB,CACzC,GAAG6G,CAAA,CAAa5G,CAAb,CAAsBD,CAAtB,CAAH,CACE,MAAO,SAAQ,CAACO,CAAD,CAAY,CACzBA,CAAA,EAAauJ,CAAA,CAAa7J,CAAb,CAAsBD,CAAtB,CADY,CAFY,CAQ3CmK,QAASA,EAAY,CAAClK,CAAD,CAAUD,CAAV,CAAqBoK,CAArB,CAA6C,CAChE,GAAGnK,CAAAS,KAAA,CAAaiH,CAAb,CAAH,CACE,MAAOI,EAAA,CAAW9H,CAAX,CAAoBD,CAApB,CAA+BoK,CAA/B,CAEPN,EAAA,CAAa7J,CAAb,CAAsBD,CAAtB,CACAoK,EAAA,EAL8D,CASlEC,QAASA,EAAO,CAACpK,CAAD,CAAUD,CAAV,CAAqBsK,CAArB,CAAwC,CAItD,IAAIC,EAAwBL,CAAA,CAAcjK,CAAd,CAAuBD,CAAvB,CAC5B,IAAIuK,CAAJ,CAAA,CAUA,IAAI9H,EAAS8H,CACbhG,EAAA,CAAY,QAAQ,EAAG,CACrBqD,CAAA,CAAmB3H,CAAnB,CACA6H,EAAA,CAA0B7H,CAA1B,CAIAwC,EAAA,CAAS0H,CAAA,CAAalK,CAAb,CAAsBD,CAAtB,CAAiCsK,CAAjC,CANY,CAAvB,CASA,OAAO,SAAQ,CAAC/J,CAAD,CAAY,CACxB,CAAAkC,CAAA,EAAU1E,CAAV,EAAgBwC,CAAhB,CADwB,CApB3B,CACE+J,CAAA,EANoD,CA8BxDR,QAASA,EAAY,CAAC7J,CAAD,CAAUD,CAAV,CAAqB,CACxCC,CAAAwD,YAAA,CAAoBzD,CAApB,CACAC,EAAAwD,YAAA,CAAoB+D,CAApB,CACAvH,EAAAyD,WAAA,CAAmBiE,CAAnB,CAHwC,CAoF1C6C,QAASA,EAAa,CAACrL,CAAD,CAAUsL,CAAV,CAAkB,CACtC,IAAIzK,EAAY,EAChBb,EAAA,CAAU1B,CAAAiN,QAAA,CAAgBvL,CAAhB,CAAA,CAA2BA,CAA3B,CAAqCA,CAAAE,MAAA,CAAc,KAAd,CAC/CrB,EAAA,CAAQmB,CAAR,CAAiB,QAAQ,CAACQ,CAAD,CAAQF,CAAR,CAAW,CAC/BE,CAAH,EAA2B,CAA3B,CAAYA,CAAAD,OAAZ,GACEM,CADF,GACoB,CAAJ,CAAAP,CAAA,CAAQ,GAAR,CAAc,EAD9B,EACoCE,CADpC,CAC4C8K,CAD5C,CADkC,CAApC,CAKA;MAAOzK,EAR+B,CA5b8D,IAElGmJ,EAAa,EAFqF,CAEjF1D,CAFiF,CAEhEsD,CAFgE,CAE3C/C,CAF2C,CAE3B8C,CAUvEtL,EAAAmN,gBAAJ,GAA+BjN,CAA/B,EAA4CF,CAAAoN,sBAA5C,GAA6ElN,CAA7E,EACEyL,CAEA,CAFa,UAEb,CADA1D,CACA,CADkB,kBAClB,CAAAsD,CAAA,CAAsB,mCAHxB,GAKEtD,CACA,CADkB,YAClB,CAAAsD,CAAA,CAAsB,eANxB,CASIvL,EAAAqN,eAAJ,GAA8BnN,CAA9B,EAA2CF,CAAAsN,qBAA3C,GAA2EpN,CAA3E,EACEyL,CAEA,CAFa,UAEb,CADAnD,CACA,CADiB,iBACjB,CAAA8C,CAAA,CAAqB,iCAHvB,GAKE9C,CACA,CADiB,WACjB,CAAA8C,CAAA,CAAqB,cANvB,CASA,KAAIpD,EAAe,UAAnB,CACII,EAAe,UADnB,CAEIC,EAAY,OAFhB,CAGII,EAAgC,gBAHpC,CAIIQ,EAAwB,gBAJ5B,CAKIgB,EAA0B,qBAL9B,CAMIH,EAAiC,kBANrC,CAOIC,EAAwC,mBAP5C,CASI7C,EAAc,EATlB,CAUIgC,EAAgB,CAVpB,CAYInC,EAAuB,EAZ3B,CAY+BC,CAoU/B,OAAO,aACSvC,QAAQ,CAAClC,CAAD;AAAUF,CAAV,CAA0BC,CAA1B,CAAqC,CAGzD,IAAI+K,EAAc5L,CAAAc,CAAAS,KAAA,CAAaiH,CAAb,CAAAxI,EAAyC,EAAzCA,SAClB,IAAG,CAAC4L,CAAJ,EAAsE,CAAtE,EAAkB,CAAC,OAAD,CAAS,OAAT,CAAiB,MAAjB,CAAAjI,QAAA,CAAiC/C,CAAjC,CAAlB,CACE,MAAO,CAAA,CAGT,KAAIG,EAAgBD,CAAA6B,OAAA,EAApB,CACIkJ,EAAQvN,CAAAwC,QAAA,CAAgBA,CAAA,CAAQ,CAAR,CAAAgL,UAAA,EAAhB,CAGZD,EAAArJ,KAAA,CAAW,OAAX,CAAmB,8CAAnB,CACAqJ,EAAAE,WAAA,CAAiB,IAAjB,CACAF,EAAAG,KAAA,CAAW,EAAX,CAEAnN,EAAA,CAAQ+M,CAAA1L,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAACM,CAAD,CAAQ,CAC7CqL,CAAAvH,YAAA,CAAkB9D,CAAlB,CAD6C,CAA/C,CAKAqL,EAAAjI,SAAA,CAAeyH,CAAA,CAAcxK,CAAd,CADgB,UAAlByK,EAAA1K,CAAA0K,CAA+B,MAA/BA,CAAwC,SACtC,CAAf,CACAvK,EAAAkL,OAAA,CAAqBJ,CAArB,CAEI3D,EAAAA,CAAUxC,CAAA,CAA2BmG,CAA3B,CACdA,EAAAK,OAAA,EAEA,OAAyE,EAAzE,CAAO1F,IAAAC,IAAA,CAASyB,CAAAtC,mBAAT,CAAqCsC,CAAApC,kBAArC,CA3BkD,CADtD,OA+BGlB,QAAQ,CAAC9D,CAAD,CAAUqL,CAAV,CAA8B,CAC5C,MAAOjB,EAAA,CAAQpK,CAAR,CAAiB,UAAjB,CAA6BqL,CAA7B,CADqC,CA/BzC,OAmCGrH,QAAQ,CAAChE,CAAD,CAAUqL,CAAV,CAA8B,CAC5C,MAAOjB,EAAA,CAAQpK,CAAR,CAAiB,UAAjB;AAA6BqL,CAA7B,CADqC,CAnCzC,MAuCEpH,QAAQ,CAACjE,CAAD,CAAUqL,CAAV,CAA8B,CAC3C,MAAOjB,EAAA,CAAQpK,CAAR,CAAiB,SAAjB,CAA4BqL,CAA5B,CADoC,CAvCxC,gBA2CYC,QAAQ,CAACtL,CAAD,CAAUD,CAAV,CAAqBsL,CAArB,CAAyC,CAEhE,GADIE,CACJ,CADyBtB,CAAA,CAAcjK,CAAd,CAAuBuK,CAAA,CAAcxK,CAAd,CAAyB,MAAzB,CAAvB,CACzB,CAME,MALAuE,EAAA,CAAY,QAAQ,EAAG,CACrBqD,CAAA,CAAmB3H,CAAnB,CACA6H,EAAA,CAA0B7H,CAA1B,CACAqL,EAAA,EAHqB,CAAvB,CAKOE,CAAAA,CAETF,EAAA,EAVgE,CA3C7D,UAwDMvI,QAAQ,CAAC9C,CAAD,CAAUD,CAAV,CAAqBsL,CAArB,CAAyC,CAC1D,MAAOnB,EAAA,CAAalK,CAAb,CAAsBuK,CAAA,CAAcxK,CAAd,CAAyB,MAAzB,CAAtB,CAAwDsL,CAAxD,CADmD,CAxDvD,mBA4DeG,QAAQ,CAACxL,CAAD,CAAUD,CAAV,CAAqBsL,CAArB,CAAyC,CAEnE,GADIE,CACJ,CADyBtB,CAAA,CAAcjK,CAAd,CAAuBuK,CAAA,CAAcxK,CAAd,CAAyB,SAAzB,CAAvB,CACzB,CAME,MALAuE,EAAA,CAAY,QAAQ,EAAG,CACrBqD,CAAA,CAAmB3H,CAAnB,CACA6H,EAAA,CAA0B7H,CAA1B,CACAqL,EAAA,EAHqB,CAAvB,CAKOE,CAAAA,CAETF,EAAA,EAVmE,CA5DhE,aAyES7H,QAAQ,CAACxD,CAAD,CAAUD,CAAV,CAAqBsL,CAArB,CAAyC,CAC7D,MAAOnB,EAAA,CAAalK,CAAb,CAAsBuK,CAAA,CAAcxK,CAAd,CAAyB,SAAzB,CAAtB,CAA2DsL,CAA3D,CADsD,CAzE1D,CA9W+F,CAA1E,CAA9B,CAnkB4E,CAAtE,CAhBV,CA3OsC,CAArC,CAAA,CAwwCE9N,MAxwCF,CAwwCUA,MAAAC,QAxwCV;",
+"sources":["angular-animate.js"],
+"names":["window","angular","undefined","module","config","$provide","$animateProvider","noop","forEach","selectors","$$selectors","ELEMENT_NODE","NG_ANIMATE_STATE","NG_ANIMATE_CLASS_NAME","rootAnimateState","decorator","$delegate","$injector","$sniffer","$rootElement","$timeout","$rootScope","$document","lookup","name","matches","flagMap","classes","substr","split","transitions","animations","push","i","length","klass","selectorFactoryName","get","performAnimation","animationEvent","className","element","parentElement","afterElement","domOperation","doneCallback","onBeforeAnimationsComplete","cancelled","fireDOMOperation","closeAnimation","data","done","invokeRegisteredAnimationFns","phase","allAnimationFnsComplete","endFnName","animation","index","animationPhaseCompleted","phaseCompletionFlag","currentAnimation","isClassBased","fireDoneCallbackAsync","hasBeenRun","cleanup","closeAnimationTimeout","currentClassName","attr","animationLookup","replace","parent","ngAnimateState","animationsDisabled","running","structural","allowCancel","afterFn","beforeFn","charAt","toUpperCase","futureClassName","cancel","cancelAnimations","beforeComplete","event","classNameToken","indexOf","addClass","cancelChildAnimations","node","nodeType","querySelectorAll","beforeEnd","isCancelledFlag","afterComplete","afterEnd","disabled","removeClass","removeData","isRoot","state","result","$$postDigest","enter","enabled","leave","move","value","arguments","register","$window","afterReflow","callback","animationReflowQueue","animationTimer","fn","lookupCache","getElementAnimationDetails","cacheKey","transitionDuration","transitionDelay","animationDuration","animationDelay","transitionDelayStyle","animationDelayStyle","transitionDurationStyle","transitionPropertyStyle","elementStyles","getComputedStyle","TRANSITION_PROP","DURATION_KEY","Math","max","parseMaxTime","PROPERTY_KEY","DELAY_KEY","ANIMATION_PROP","aDuration","parseInt","ANIMATION_ITERATION_COUNT_KEY","str","maxValue","values","isString","parseFloat","getCacheKey","parentID","NG_ANIMATE_PARENT_KEY","parentCounter","animateSetup","eventCacheKey","stagger","ii","total","staggerClassName","staggerCacheKey","applyClasses","timings","maxDuration","activeClassName","NG_ANIMATE_FALLBACK_CLASS_NAME","NG_ANIMATE_FALLBACK_ACTIVE_CLASS_NAME","style","NG_ANIMATE_CSS_DATA_KEY","unblockTransitions","prop","unblockKeyframeAnimations","animateRun","activeAnimationComplete","onAnimationProgress","stopPropagation","ev","originalEvent","timeStamp","$manualTimeStamp","Date","now","startTime","maxDelayTime","elapsedTime","hasClass","css3AnimationEvents","ANIMATIONEND_EVENT","TRANSITIONEND_EVENT","applyFallbackStyle","appliedStyles","propertyStyle","CSS_PREFIX","msie","fallbackProperty","delayStyle","prepareStaggerDelay","oldStyle","getAttribute","setAttribute","on","onEnd","off","animateClose","removeProperty","staggerDelay","val","animateBefore","animateAfter","afterAnimationComplete","animate","animationComplete","preReflowCancellation","suffixClasses","suffix","isArray","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","oldClasses","clone","cloneNode","removeAttr","html","append","remove","animationCompleted","beforeAddClass","cancellationMethod","beforeRemoveClass"]
+}
View
202 1.2.3/angular-cookies.js
@@ -0,0 +1,202 @@
+/**
+ * @license AngularJS v1.2.3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {'use strict';
+
+/**
+ * @ngdoc overview
+ * @name ngCookies
+ * @description
+ *
+ * # ngCookies
+ *
+ * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
+ *
+ * {@installModule cookies}
+ *
+ * <div doc-module-components="ngCookies"></div>
+ *
+ * See {@link ngCookies.$cookies `$cookies`} and
+ * {@link ngCookies.$cookieStore `$cookieStore`} for usage.
+ */
+
+
+angular.module('ngCookies', ['ng']).
+ /**
+ * @ngdoc object
+ * @name ngCookies.$cookies
+ * @requires $browser
+ *
+ * @description
+ * Provides read/write access to browser's cookies.
+ *
+ * Only a simple Object is exposed and by adding or removing properties to/from
+ * this object, new cookies are created/deleted at the end of current $eval.
+ *
+ * Requires the {@link ngCookies `ngCookies`} module to be installed.
+ *
+ * @example
+ <doc:example>
+ <doc:source>
+ <script>
+ function ExampleController($cookies) {
+ // Retrieving a cookie
+ var favoriteCookie = $cookies.myFavorite;
+ // Setting a cookie
+ $cookies.myFavorite = 'oatmeal';
+ }
+ </script>
+ </doc:source>
+ </doc:example>
+ */
+ factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) {
+ var cookies = {},
+ lastCookies = {},
+ lastBrowserCookies,
+ runEval = false,
+ copy = angular.copy,
+ isUndefined = angular.isUndefined;
+
+ //creates a poller fn that copies all cookies from the $browser to service & inits the service
+ $browser.addPollFn(function() {
+ var currentCookies = $browser.cookies();
+ if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl
+ lastBrowserCookies = currentCookies;
+ copy(currentCookies, lastCookies);
+ copy(currentCookies, cookies);
+ if (runEval) $rootScope.$apply();
+ }
+ })();
+
+ runEval = true;
+
+ //at the end of each eval, push cookies
+ //TODO: this should happen before the "delayed" watches fire, because if some cookies are not
+ // strings or browser refuses to store some cookies, we update the model in the push fn.
+ $rootScope.$watch(push);
+
+ return cookies;
+
+
+ /**
+ * Pushes all the cookies from the service to the browser and verifies if all cookies were
+ * stored.
+ */
+ function push() {
+ var name,
+ value,
+ browserCookies,
+ updated;
+
+ //delete any cookies deleted in $cookies
+ for (name in lastCookies) {
+ if (isUndefined(cookies[name])) {
+ $browser.cookies(name, undefined);
+ }
+ }
+
+ //update all cookies updated in $cookies
+ for(name in cookies) {
+ value = cookies[name];
+ if (!angular.isString(value)) {
+ if (angular.isDefined(lastCookies[name])) {
+ cookies[name] = lastCookies[name];
+ } else {
+ delete cookies[name];
+ }
+ } else if (value !== lastCookies[name]) {
+ $browser.cookies(name, value);
+ updated = true;
+ }
+ }
+
+ //verify what was actually stored
+ if (updated){
+ updated = false;
+ browserCookies = $browser.cookies();
+
+ for (name in cookies) {
+ if (cookies[name] !== browserCookies[name]) {
+ //delete or reset all cookies that the browser dropped from $cookies
+ if (isUndefined(browserCookies[name])) {
+ delete cookies[name];
+ } else {
+ cookies[name] = browserCookies[name];
+ }
+ updated = true;
+ }
+ }
+ }
+ }
+ }]).
+
+
+ /**
+ * @ngdoc object
+ * @name ngCookies.$cookieStore
+ * @requires $cookies
+ *
+ * @description
+ * Provides a key-value (string-object) storage, that is backed by session cookies.
+ * Objects put or retrieved from this storage are automatically serialized or
+ * deserialized by angular's toJson/fromJson.
+ *
+ * Requires the {@link ngCookies `ngCookies`} module to be installed.
+ *
+ * @example
+ */
+ factory('$cookieStore', ['$cookies', function($cookies) {
+
+ return {
+ /**
+ * @ngdoc method
+ * @name ngCookies.$cookieStore#get
+ * @methodOf ngCookies.$cookieStore
+ *
+ * @description
+ * Returns the value of given cookie key
+ *
+ * @param {string} key Id to use for lookup.
+ * @returns {Object} Deserialized cookie value.
+ */
+ get: function(key) {
+ var value = $cookies[key];
+ return value ? angular.fromJson(value) : value;
+ },
+
+ /**
+ * @ngdoc method
+ * @name ngCookies.$cookieStore#put
+ * @methodOf ngCookies.$cookieStore
+ *
+ * @description
+ * Sets a value for given cookie key
+ *
+ * @param {string} key Id for the `value`.
+ * @param {Object} value Value to be stored.
+ */
+ put: function(key, value) {
+ $cookies[key] = angular.toJson(value);
+ },
+
+ /**
+ * @ngdoc method
+ * @name ngCookies.$cookieStore#remove
+ * @methodOf ngCookies.$cookieStore
+ *
+ * @description
+ * Remove given cookie
+ *
+ * @param {string} key Id of the key-value pair to delete.
+ */
+ remove: function(key) {
+ delete $cookies[key];
+ }
+ };
+
+ }]);
+
+
+})(window, window.angular);
View
8 1.2.3/angular-cookies.min.js
@@ -0,0 +1,8 @@
+/*
+ AngularJS v1.2.3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(d,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&d.$apply())})();k=!0;d.$watch(function(){var a,e,d;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)(e=c[a],f.isString(e))?e!==g[a]&&(b.cookies(a,e),d=!0):f.isDefined(g[a])?c[a]=g[a]:delete c[a];if(d)for(a in e=b.cookies(),c)c[a]!==e[a]&&(m(e[a])?delete c[a]:c[a]=e[a])});
+return c}]).factory("$cookieStore",["$cookies",function(d){return{get:function(b){return(b=d[b])?f.fromJson(b):b},put:function(b,c){d[b]=f.toJson(c)},remove:function(b){delete d[b]}}}])})(window,window.angular);
+//# sourceMappingURL=angular-cookies.min.js.map
View
8 1.2.3/angular-cookies.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-cookies.min.js",
+"lineCount":7,
+"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAoBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA4BW,UA5BX,CA4BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CAEE,CADAY,CACK,CADGZ,CAAA,CAAQW,CAAR,CACH,CAAAjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAAL,EAMWA,CANX,GAMqBX,CAAA,CAAYU,CAAZ,CANrB,GAOEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CARZ,EACMnB,CAAAqB,UAAA,CAAkBd,CAAA,CAAYU,CAAZ,CAAlB,CAAJ,CACEX,CAAA,CAAQW,CAAR,CADF,CACkBV,CAAA,CAAYU,CAAZ,CADlB,CAGE,OAAOX,CAAA,CAAQW,CAAR,CASb,IAAIE,CAAJ,CAIE,IAAKF,CAAL,GAFAK,EAEahB,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBK,CAAA,CAAeL,CAAf,CAAtB,GAEMN,CAAA,CAAYW,CAAA,CAAeL,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBK,CAAA,CAAeL,CAAf,CALpB,CAlCU,CAThB,CAEA;MAAOX,EA1BqE,CAA3D,CA5BvB,CAAAH,QAAA,CA4HW,cA5HX,CA4H2B,CAAC,UAAD,CAAa,QAAQ,CAACoB,CAAD,CAAW,CAErD,MAAO,KAYAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHP,CACG,CADKK,CAAA,CAASE,CAAT,CACL,EAAQzB,CAAA0B,SAAA,CAAiBR,CAAjB,CAAR,CAAkCA,CAFxB,CAZd,KA4BAS,QAAQ,CAACF,CAAD,CAAMP,CAAN,CAAa,CACxBK,CAAA,CAASE,CAAT,CAAA,CAAgBzB,CAAA4B,OAAA,CAAeV,CAAf,CADQ,CA5BrB,QA0CGW,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CA1CjB,CAF8C,CAAhC,CA5H3B,CApBsC,CAArC,CAAA,CAoME1B,MApMF,CAoMUA,MAAAC,QApMV;",
+"sources":["angular-cookies.js"],
+"names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","isDefined","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"]
+}
View
24 1.2.3/angular-csp.css
@@ -0,0 +1,24 @@
+/* Include this file in your html if you are using the CSP mode. */
+
+@charset "UTF-8";
+
+[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
+.ng-cloak, .x-ng-cloak,
+.ng-hide {
+ display: none !important;
+}
+
+ng\:form {
+ display: block;
+}
+
+/* The styles below ensure that the CSS transition will ALWAYS
+ * animate and close. A nasty bug occurs with CSS transitions where
+ * when the active class isn't set, or if the active class doesn't
+ * contain any styles to transition to, then, if ngAnimate is used,
+ * it will appear as if the webpage is broken due to the forever hanging
+ * animations. The border-spacing (!ie) and zoom (ie) CSS properties are
+ * used below since they trigger a transition without making the browser
+ * animate anything and they're both highly underused CSS properties */
+.ng-animate-start { border-spacing:1px 1px; -ms-zoom:1.0001; }
+.ng-animate-active { border-spacing:0px 0px; -ms-zoom:1; }
View
410 1.2.3/angular-loader.js
@@ -0,0 +1,410 @@
+/**
+ * @license AngularJS v1.2.3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+
+(function() {'use strict';
+
+/**
+ * @description
+ *
+ * This object provides a utility for producing rich Error messages within
+ * Angular. It can be called as follows:
+ *
+ * var exampleMinErr = minErr('example');
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
+ *
+ * The above creates an instance of minErr in the example namespace. The
+ * resulting error will have a namespaced error code of example.one. The
+ * resulting error will replace {0} with the value of foo, and {1} with the
+ * value of bar. The object is not restricted in the number of arguments it can
+ * take.
+ *
+ * If fewer arguments are specified than necessary for interpolation, the extra
+ * interpolation markers will be preserved in the final string.
+ *
+ * Since data will be parsed statically during a build step, some restrictions
+ * are applied with respect to how minErr instances are created and called.
+ * Instances should have names of the form namespaceMinErr for a minErr created
+ * using minErr('namespace') . Error codes, namespaces and template strings
+ * should all be static strings, not variables or general expressions.
+ *
+ * @param {string} module The namespace to use for the new minErr instance.
+ * @returns {function(string, string, ...): Error} instance
+ */
+
+function minErr(module) {
+ return function () {
+ var code = arguments[0],
+ prefix = '[' + (module ? module + ':' : '') + code + '] ',
+ template = arguments[1],
+ templateArgs = arguments,
+ stringify = function (obj) {
+ if (typeof obj === 'function') {
+ return obj.toString().replace(/ \{[\s\S]*$/, '');
+ } else if (typeof obj === 'undefined') {
+ return 'undefined';
+ } else if (typeof obj !== 'string') {
+ return JSON.stringify(obj);
+ }
+ return obj;
+ },
+ message, i;
+
+ message = prefix + template.replace(/\{\d+\}/g, function (match) {
+ var index = +match.slice(1, -1), arg;
+
+ if (index + 2 < templateArgs.length) {
+ arg = templateArgs[index + 2];
+ if (typeof arg === 'function') {
+ return arg.toString().replace(/ ?\{[\s\S]*$/, '');
+ } else if (typeof arg === 'undefined') {
+ return 'undefined';
+ } else if (typeof arg !== 'string') {
+ return toJson(arg);
+ }
+ return arg;
+ }
+ return match;
+ });
+
+ message = message + '\nhttp://errors.angularjs.org/1.2.3/' +
+ (module ? module + '/' : '') + code;
+ for (i = 2; i < arguments.length; i++) {
+ message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
+ encodeURIComponent(stringify(arguments[i]));
+ }
+
+ return new Error(message);
+ };
+}
+
+/**
+ * @ngdoc interface
+ * @name angular.Module
+ * @description
+ *
+ * Interface for configuring angular {@link angular.module modules}.
+ */
+
+function setupModuleLoader(window) {
+
+ var $injectorMinErr = minErr('$injector');
+ var ngMinErr = minErr('ng');
+
+ function ensure(obj, name, factory) {
+ return obj[name] || (obj[name] = factory());
+ }
+
+ var angular = ensure(window, 'angular', Object);
+
+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
+ angular.$$minErr = angular.$$minErr || minErr;
+
+ return ensure(angular, 'module', function() {
+ /** @type {Object.<string, angular.Module>} */
+ var modules = {};
+
+ /**
+ * @ngdoc function
+ * @name angular.module
+ * @description
+ *
+ * The `angular.module` is a global place for creating, registering and retrieving Angular
+ * modules.
+ * All modules (angular core or 3rd party) that should be available to an application must be
+ * registered using this mechanism.
+ *
+ * When passed two or more arguments, a new module is created. If passed only one argument, an
+ * existing module (the name passed as the first argument to `module`) is retrieved.
+ *
+ *
+ * # Module
+ *
+ * A module is a collection of services, directives, filters, and configuration information.
+ * `angular.module` is used to configure the {@link AUTO.$injector $injector}.
+ *
+ * <pre>
+ * // Create a new module
+ * var myModule = angular.module('myModule', []);
+ *
+ * // register a new service
+ * myModule.value('appName', 'MyCoolApp');
+ *
+ * // configure existing services inside initialization blocks.
+ * myModule.config(function($locationProvider) {
+ * // Configure existing providers
+ * $locationProvider.hashPrefix('!');
+ * });
+ * </pre>
+ *
+ * Then you can create an injector and load your modules like this:
+ *
+ * <pre>
+ * var injector = angular.injector(['ng', 'MyModule'])
+ * </pre>
+ *
+ * However it's more likely that you'll just use
+ * {@link ng.directive:ngApp ngApp} or
+ * {@link angular.bootstrap} to simplify this process for you.
+ *
+ * @param {!string} name The name of the module to create or retrieve.
+ * @param {Array.<string>=} requires If specified then new module is being created. If
+ * unspecified then the the module is being retrieved for further configuration.
+ * @param {Function} configFn Optional configuration function for the module. Same as
+ * {@link angular.Module#methods_config Module#config()}.
+ * @returns {module} new module with the {@link angular.Module} api.
+ */
+ return function module(name, requires, configFn) {
+ var assertNotHasOwnProperty = function(name, context) {
+ if (name === 'hasOwnProperty') {
+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
+ }
+ };
+
+ assertNotHasOwnProperty(name, 'module');
+ if (requires && modules.hasOwnProperty(name)) {
+ modules[name] = null;
+ }
+ return ensure(modules, name, function() {
+ if (!requires) {
+ throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
+ "the module name or forgot to load it. If registering a module ensure that you " +
+ "specify the dependencies as the second argument.", name);
+ }
+
+ /** @type {!Array.<Array.<*>>} */
+ var invokeQueue = [];
+
+ /** @type {!Array.<Function>} */
+ var runBlocks = [];
+
+ var config = invokeLater('$injector', 'invoke');
+
+ /** @type {angular.Module} */
+ var moduleInstance = {
+ // Private state
+ _invokeQueue: invokeQueue,
+ _runBlocks: runBlocks,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#requires
+ * @propertyOf angular.Module
+ * @returns {Array.<string>} List of module names which must be loaded before this module.
+ * @description
+ * Holds the list of modules which the injector will load before the current module is
+ * loaded.
+ */
+ requires: requires,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#name
+ * @propertyOf angular.Module
+ * @returns {string} Name of the module.
+ * @description
+ */
+ name: name,
+
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#provider
+ * @methodOf angular.Module
+ * @param {string} name service name
+ * @param {Function} providerType Construction function for creating new instance of the
+ * service.
+ * @description
+ * See {@link AUTO.$provide#provider $provide.provider()}.
+ */
+ provider: invokeLater('$provide', 'provider'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#factory
+ * @methodOf angular.Module
+ * @param {string} name service name
+ * @param {Function} providerFunction Function for creating new instance of the service.
+ * @description
+ * See {@link AUTO.$provide#factory $provide.factory()}.
+ */
+ factory: invokeLater('$provide', 'factory'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#service
+ * @methodOf angular.Module
+ * @param {string} name service name
+ * @param {Function} constructor A constructor function that will be instantiated.
+ * @description
+ * See {@link AUTO.$provide#service $provide.service()}.
+ */
+ service: invokeLater('$provide', 'service'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#value
+ * @methodOf angular.Module
+ * @param {string} name service name
+ * @param {*} object Service instance object.
+ * @description
+ * See {@link AUTO.$provide#value $provide.value()}.
+ */
+ value: invokeLater('$provide', 'value'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#constant
+ * @methodOf angular.Module
+ * @param {string} name constant name
+ * @param {*} object Constant value.
+ * @description
+ * Because the constant are fixed, they get applied before other provide methods.
+ * See {@link AUTO.$provide#constant $provide.constant()}.
+ */
+ constant: invokeLater('$provide', 'constant', 'unshift'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#animation
+ * @methodOf angular.Module
+ * @param {string} name animation name
+ * @param {Function} animationFactory Factory function for creating new instance of an
+ * animation.
+ * @description
+ *
+ * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
+ *
+ *
+ * Defines an animation hook that can be later used with
+ * {@link ngAnimate.$animate $animate} service and directives that use this service.
+ *
+ * <pre>
+ * module.animation('.animation-name', function($inject1, $inject2) {
+ * return {
+ * eventName : function(element, done) {
+ * //code to run the animation
+ * //once complete, then run done()
+ * return function cancellationFunction(element) {
+ * //code to cancel the animation
+ * }
+ * }
+ * }
+ * })
+ * </pre>
+ *
+ * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and
+ * {@link ngAnimate ngAnimate module} for more information.
+ */
+ animation: invokeLater('$animateProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#filter
+ * @methodOf angular.Module
+ * @param {string} name Filter name.
+ * @param {Function} filterFactory Factory function for creating new instance of filter.
+ * @description
+ * See {@link ng.$filterProvider#register $filterProvider.register()}.
+ */
+ filter: invokeLater('$filterProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#controller
+ * @methodOf angular.Module
+ * @param {string|Object} name Controller name, or an object map of controllers where the
+ * keys are the names and the values are the constructors.
+ * @param {Function} constructor Controller constructor function.
+ * @description
+ * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
+ */
+ controller: invokeLater('$controllerProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#directive
+ * @methodOf angular.Module
+ * @param {string|Object} name Directive name, or an object map of directives where the
+ * keys are the names and the values are the factories.
+ * @param {Function} directiveFactory Factory function for creating new instance of
+ * directives.
+ * @description
+ * See {@link ng.$compileProvider#methods_directive $compileProvider.directive()}.
+ */
+ directive: invokeLater('$compileProvider', 'directive'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#config
+ * @methodOf angular.Module
+ * @param {Function} configFn Execute this function on module load. Useful for service
+ * configuration.
+ * @description
+ * Use this method to register work which needs to be performed on module loading.
+ */
+ config: config,
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#run
+ * @methodOf angular.Module
+ * @param {Function} initializationFn Execute this function after injector creation.
+ * Useful for application initialization.
+ * @description
+ * Use this method to register work which should be performed when the injector is done
+ * loading all modules.
+ */
+ run: function(block) {
+ runBlocks.push(block);
+ return this;
+ }
+ };
+
+ if (configFn) {
+ config(configFn);
+ }
+
+ return moduleInstance;
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @param {String=} insertMethod
+ * @returns {angular.Module}
+ */
+ function invokeLater(provider, method, insertMethod) {
+ return function() {
+ invokeQueue[insertMethod || 'push']([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+ });
+ };
+ });
+
+}
+
+setupModuleLoader(window);
+})(window);
+
+/**
+ * Closure compiler type information
+ *
+ * @typedef { {
+ * requires: !Array.<string>,
+ * invokeQueue: !Array.<Array.<*>>,
+ *
+ * service: function(string, Function):angular.Module,
+ * factory: function(string, Function):angular.Module,
+ * value: function(string, *):angular.Module,
+ *
+ * filter: function(string, Function):angular.Module,
+ *
+ * init: function(Function):angular.Module
+ * } }
+ */
+angular.Module;
+
View
9 1.2.3/angular-loader.min.js
@@ -0,0 +1,9 @@
+/*
+ AngularJS v1.2.3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(){'use strict';function d(a){return function(){var c=arguments[0],b,c="["+(a?a+":":"")+c+"] http://errors.angularjs.org/1.2.3/"+(a?a+"/":"")+c;for(b=1;b<arguments.length;b++)c=c+(1==b?"?":"&")+"p"+(b-1)+"="+encodeURIComponent("function"==typeof arguments[b]?arguments[b].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[b]?"undefined":"string"!=typeof arguments[b]?JSON.stringify(arguments[b]):arguments[b]);return Error(c)}}(function(a){var c=d("$injector"),b=d("ng");a=a.angular||
+(a.angular={});a.$$minErr=a.$$minErr||d;return a.module||(a.module=function(){var a={};return function(e,d,f){if("hasOwnProperty"===e)throw b("badname","module");d&&a.hasOwnProperty(e)&&(a[e]=null);return a[e]||(a[e]=function(){function a(c,d,e){return function(){b[e||"push"]([c,d,arguments]);return g}}if(!d)throw c("nomod",e);var b=[],h=[],k=a("$injector","invoke"),g={_invokeQueue:b,_runBlocks:h,requires:d,name:e,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide",
+"service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:k,run:function(a){h.push(a);return this}};f&&k(f);return g}())}}())})(window)})(window);
+//# sourceMappingURL=angular-loader.min.js.map
View
8 1.2.3/angular-loader.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-loader.min.js",
+"lineCount":8,
+"mappings":"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",
+"sources":["angular-loader.js","MINERR_ASSET"],
+"names":["minErr","setupModuleLoader","window","$injectorMinErr","ngMinErr","angular","$$minErr","factory","modules","module","name","requires","configFn","context","hasOwnProperty","invokeLater","provider","method","insertMethod","invokeQueue","arguments","moduleInstance","runBlocks","config","run","block","push"]
+}
View
2,115 1.2.3/angular-mocks.js
2,115 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.