angular-rails-engine 1.2.0.2 → 1.2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 311cfea803229fe75b0974e9c83fca8707d7d979
4
- data.tar.gz: f1c4ce66799b86708f742e0bf29e037fa0a11bf3
3
+ metadata.gz: e813091ed284e69523789a33e22493fd55f9d3a3
4
+ data.tar.gz: e117f4a5536f1dc2ddbfc635aecada09449dbb5e
5
5
  SHA512:
6
- metadata.gz: 914648d580411a984e773e7f0b477732ab79583d504ef29fbe32321a24d1fea5c73b7f95990592f23ddf7689112ac0795a64079dbcf694c36e27a39898e9060f
7
- data.tar.gz: 3729e21eb7679f3f222222727205bb14cb855523a188312a29966829020084f95aec28d562b70c7cb6d2eafe89eee65fddbdd11aa56794c27faedf1c71c1a005
6
+ metadata.gz: fd26d69a064ab5c2b737e2ca3822ab215ca3c93ca569db04563934d370894af92235d49cd1f481537ed6567893808e91b3980bea2cdd5fa9ce981eb5ba9042c0
7
+ data.tar.gz: 94acd59c22494b938b7bba7cbe9da6503db6650c720ad7a31d571a786412ae0ea5b3c2f7bc9521635698a008a31364221ced9061fd3b57dcac70909daf7ada7a
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @license AngularJS v1.2.0
3
- * (c) 2010-2012 Google, Inc. http://angularjs.org
2
+ * @license AngularJS v1.2.3
3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
6
6
  (function(window, angular, undefined) {'use strict';
@@ -165,7 +165,7 @@
165
165
  * }
166
166
  * </pre>
167
167
  *
168
- * Staggering animations work by default in ngRepeat (so long as the CSS class is defiend). Outside of ngRepeat, to use staggering animations
168
+ * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations
169
169
  * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this
170
170
  * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation
171
171
  * will also be reset if more than 10ms has passed after the last animation has been fired.
@@ -228,7 +228,7 @@
228
228
  * JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run
229
229
  * a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits
230
230
  * the element's CSS class attribute value and then run the matching animation event function (if found).
231
- * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function
231
+ * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will
232
232
  * be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported).
233
233
  *
234
234
  * Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned.
@@ -269,9 +269,16 @@ angular.module('ngAnimate', ['ng'])
269
269
 
270
270
  $rootElement.data(NG_ANIMATE_STATE, rootAnimateState);
271
271
 
272
- // disable animations during bootstrap, but once we bootstrapped, enable animations
272
+ // disable animations during bootstrap, but once we bootstrapped, wait again
273
+ // for another digest until enabling animations. The reason why we digest twice
274
+ // is because all structural animations (enter, leave and move) all perform a
275
+ // post digest operation before animating. If we only wait for a single digest
276
+ // to pass then the structural animation would render its animation on page load.
277
+ // (which is what we're trying to avoid when the application first boots up.)
273
278
  $rootScope.$$postDigest(function() {
274
- rootAnimateState.running = false;
279
+ $rootScope.$$postDigest(function() {
280
+ rootAnimateState.running = false;
281
+ });
275
282
  });
276
283
 
277
284
  function lookup(name) {
@@ -516,6 +523,7 @@ angular.module('ngAnimate', ['ng'])
516
523
  * @function
517
524
  *
518
525
  * @param {boolean=} value If provided then set the animation on or off.
526
+ * @param {jQuery/jqLite element=} element If provided then the element will be used to represent the enable/disable operation
519
527
  * @return {boolean} Current animation state.
520
528
  *
521
529
  * @description
@@ -554,7 +562,8 @@ angular.module('ngAnimate', ['ng'])
554
562
  and the onComplete callback will be fired once the animation is fully complete.
555
563
  */
556
564
  function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, doneCallback) {
557
- var classes = (element.attr('class') || '') + ' ' + className;
565
+ var currentClassName = element.attr('class') || '';
566
+ var classes = currentClassName + ' ' + className;
558
567
  var animationLookup = (' ' + classes).replace(/\s+/g,'.');
559
568
  if (!parentElement) {
560
569
  parentElement = afterElement ? afterElement.parent() : element.parent();
@@ -569,7 +578,7 @@ angular.module('ngAnimate', ['ng'])
569
578
  //the animation if any matching animations are not found at all.
570
579
  //NOTE: IE8 + IE9 should close properly (run closeAnimation()) in case a NO animation is not found.
571
580
  if (animationsDisabled(element, parentElement) || matches.length === 0) {
572
- domOperation();
581
+ fireDOMOperation();
573
582
  closeAnimation();
574
583
  return;
575
584
  }
@@ -602,27 +611,48 @@ angular.module('ngAnimate', ['ng'])
602
611
  //this would mean that an animation was not allowed so let the existing
603
612
  //animation do it's thing and close this one early
604
613
  if(animations.length === 0) {
605
- domOperation();
614
+ fireDOMOperation();
606
615
  fireDoneCallbackAsync();
607
616
  return;
608
617
  }
609
618
 
619
+ //this value will be searched for class-based CSS className lookup. Therefore,
620
+ //we prefix and suffix the current className value with spaces to avoid substring
621
+ //lookups of className tokens
622
+ var futureClassName = ' ' + currentClassName + ' ';
610
623
  if(ngAnimateState.running) {
611
624
  //if an animation is currently running on the element then lets take the steps
612
625
  //to cancel that animation and fire any required callbacks
613
626
  $timeout.cancel(ngAnimateState.closeAnimationTimeout);
614
627
  cleanup(element);
615
628
  cancelAnimations(ngAnimateState.animations);
616
- (ngAnimateState.done || noop)(true);
629
+
630
+ //if the class is removed during the reflow then it will revert the styles temporarily
631
+ //back to the base class CSS styling causing a jump-like effect to occur. This check
632
+ //here ensures that the domOperation is only performed after the reflow has commenced
633
+ if(ngAnimateState.beforeComplete) {
634
+ (ngAnimateState.done || noop)(true);
635
+ } else if(isClassBased && !ngAnimateState.structural) {
636
+ //class-based animations will compare element className values after cancelling the
637
+ //previous animation to see if the element properties already contain the final CSS
638
+ //class and if so then the animation will be skipped. Since the domOperation will
639
+ //be performed only after the reflow is complete then our element's className value
640
+ //will be invalid. Therefore the same string manipulation that would occur within the
641
+ //DOM operation will be performed below so that the class comparison is valid...
642
+ futureClassName = ngAnimateState.event == 'removeClass' ?
643
+ futureClassName.replace(ngAnimateState.className, '') :
644
+ futureClassName + ngAnimateState.className + ' ';
645
+ }
617
646
  }
618
647
 
619
648
  //There is no point in perform a class-based animation if the element already contains
620
649
  //(on addClass) or doesn't contain (on removeClass) the className being animated.
621
650
  //The reason why this is being called after the previous animations are cancelled
622
651
  //is so that the CSS classes present on the element can be properly examined.
623
- if((animationEvent == 'addClass' && element.hasClass(className)) ||
624
- (animationEvent == 'removeClass' && !element.hasClass(className))) {
625
- domOperation();
652
+ var classNameToken = ' ' + className + ' ';
653
+ if((animationEvent == 'addClass' && futureClassName.indexOf(classNameToken) >= 0) ||
654
+ (animationEvent == 'removeClass' && futureClassName.indexOf(classNameToken) == -1)) {
655
+ fireDOMOperation();
626
656
  fireDoneCallbackAsync();
627
657
  return;
628
658
  }
@@ -633,6 +663,8 @@ angular.module('ngAnimate', ['ng'])
633
663
 
634
664
  element.data(NG_ANIMATE_STATE, {
635
665
  running:true,
666
+ event:animationEvent,
667
+ className:className,
636
668
  structural:!isClassBased,
637
669
  animations:animations,
638
670
  done:onBeforeAnimationsComplete
@@ -643,7 +675,7 @@ angular.module('ngAnimate', ['ng'])
643
675
  invokeRegisteredAnimationFns(animations, 'before', onBeforeAnimationsComplete);
644
676
 
645
677
  function onBeforeAnimationsComplete(cancelled) {
646
- domOperation();
678
+ fireDOMOperation();
647
679
  if(cancelled === true) {
648
680
  closeAnimation();
649
681
  return;
@@ -701,6 +733,15 @@ angular.module('ngAnimate', ['ng'])
701
733
  doneCallback && $timeout(doneCallback, 0, false);
702
734
  }
703
735
 
736
+ //it is less complicated to use a flag than managing and cancelling
737
+ //timeouts containing multiple callbacks.
738
+ function fireDOMOperation() {
739
+ if(!fireDOMOperation.hasBeenRun) {
740
+ fireDOMOperation.hasBeenRun = true;
741
+ domOperation();
742
+ }
743
+ }
744
+
704
745
  function closeAnimation() {
705
746
  if(!closeAnimation.hasBeenRun) {
706
747
  closeAnimation.hasBeenRun = true;
@@ -743,10 +784,10 @@ angular.module('ngAnimate', ['ng'])
743
784
  function cancelAnimations(animations) {
744
785
  var isCancelledFlag = true;
745
786
  forEach(animations, function(animation) {
746
- if(!animations['beforeComplete']) {
787
+ if(!animations.beforeComplete) {
747
788
  (animation.beforeEnd || noop)(isCancelledFlag);
748
789
  }
749
- if(!animations['afterComplete']) {
790
+ if(!animations.afterComplete) {
750
791
  (animation.afterEnd || noop)(isCancelledFlag);
751
792
  }
752
793
  });
@@ -848,13 +889,6 @@ angular.module('ngAnimate', ['ng'])
848
889
  }, 10, false);
849
890
  }
850
891
 
851
- function applyStyle(node, style) {
852
- var oldStyle = node.getAttribute('style') || '';
853
- var newStyle = (oldStyle.length > 0 ? '; ' : '') + style;
854
- node.setAttribute('style', newStyle);
855
- return oldStyle;
856
- }
857
-
858
892
  function getElementAnimationDetails(element, cacheKey) {
859
893
  var data = cacheKey ? lookupCache[cacheKey] : null;
860
894
  if(!data) {
@@ -973,7 +1007,9 @@ angular.module('ngAnimate', ['ng'])
973
1007
  if(timings.transitionDuration > 0) {
974
1008
  element.addClass(NG_ANIMATE_FALLBACK_CLASS_NAME);
975
1009
  activeClassName += NG_ANIMATE_FALLBACK_ACTIVE_CLASS_NAME + ' ';
976
- node.style[TRANSITION_PROP + PROPERTY_KEY] = 'none';
1010
+ blockTransitions(element);
1011
+ } else {
1012
+ blockKeyframeAnimations(element);
977
1013
  }
978
1014
 
979
1015
  forEach(className.split(' '), function(klass, i) {
@@ -993,6 +1029,28 @@ angular.module('ngAnimate', ['ng'])
993
1029
  return true;
994
1030
  }
995
1031
 
1032
+ function blockTransitions(element) {
1033
+ element[0].style[TRANSITION_PROP + PROPERTY_KEY] = 'none';
1034
+ }
1035
+
1036
+ function blockKeyframeAnimations(element) {
1037
+ element[0].style[ANIMATION_PROP] = 'none 0s';
1038
+ }
1039
+
1040
+ function unblockTransitions(element) {
1041
+ var node = element[0], prop = TRANSITION_PROP + PROPERTY_KEY;
1042
+ if(node.style[prop] && node.style[prop].length > 0) {
1043
+ node.style[prop] = '';
1044
+ }
1045
+ }
1046
+
1047
+ function unblockKeyframeAnimations(element) {
1048
+ var node = element[0], prop = ANIMATION_PROP;
1049
+ if(node.style[prop] && node.style[prop].length > 0) {
1050
+ element[0].style[prop] = '';
1051
+ }
1052
+ }
1053
+
996
1054
  function animateRun(element, className, activeAnimationComplete) {
997
1055
  var data = element.data(NG_ANIMATE_CSS_DATA_KEY);
998
1056
  if(!element.hasClass(className) || !data) {
@@ -1008,19 +1066,18 @@ angular.module('ngAnimate', ['ng'])
1008
1066
  var maxDelayTime = Math.max(timings.transitionDelay, timings.animationDelay) * 1000;
1009
1067
  var startTime = Date.now();
1010
1068
  var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT;
1011
- var formerStyle;
1012
1069
  var ii = data.ii;
1013
1070
 
1014
- var applyFallbackStyle, style = '';
1071
+ var applyFallbackStyle, style = '', appliedStyles = [];
1015
1072
  if(timings.transitionDuration > 0) {
1016
- node.style[TRANSITION_PROP + PROPERTY_KEY] = '';
1017
-
1018
1073
  var propertyStyle = timings.transitionPropertyStyle;
1019
1074
  if(propertyStyle.indexOf('all') == -1) {
1020
1075
  applyFallbackStyle = true;
1021
- var fallbackProperty = $sniffer.msie ? '-ms-zoom' : 'clip';
1076
+ var fallbackProperty = $sniffer.msie ? '-ms-zoom' : 'border-spacing';
1022
1077
  style += CSS_PREFIX + 'transition-property: ' + propertyStyle + ', ' + fallbackProperty + '; ';
1023
1078
  style += CSS_PREFIX + 'transition-duration: ' + timings.transitionDurationStyle + ', ' + timings.transitionDuration + 's; ';
1079
+ appliedStyles.push(CSS_PREFIX + 'transition-property');
1080
+ appliedStyles.push(CSS_PREFIX + 'transition-duration');
1024
1081
  }
1025
1082
  }
1026
1083
 
@@ -1033,16 +1090,19 @@ angular.module('ngAnimate', ['ng'])
1033
1090
 
1034
1091
  style += CSS_PREFIX + 'transition-delay: ' +
1035
1092
  prepareStaggerDelay(delayStyle, stagger.transitionDelay, ii) + '; ';
1093
+ appliedStyles.push(CSS_PREFIX + 'transition-delay');
1036
1094
  }
1037
1095
 
1038
1096
  if(stagger.animationDelay > 0 && stagger.animationDuration === 0) {
1039
1097
  style += CSS_PREFIX + 'animation-delay: ' +
1040
1098
  prepareStaggerDelay(timings.animationDelayStyle, stagger.animationDelay, ii) + '; ';
1099
+ appliedStyles.push(CSS_PREFIX + 'animation-delay');
1041
1100
  }
1042
1101
  }
1043
1102
 
1044
- if(style.length > 0) {
1045
- formerStyle = applyStyle(node, style);
1103
+ if(appliedStyles.length > 0) {
1104
+ var oldStyle = node.getAttribute('style') || '';
1105
+ node.setAttribute('style', oldStyle + ' ' + style);
1046
1106
  }
1047
1107
 
1048
1108
  element.on(css3AnimationEvents, onAnimationProgress);
@@ -1055,10 +1115,8 @@ angular.module('ngAnimate', ['ng'])
1055
1115
  element.off(css3AnimationEvents, onAnimationProgress);
1056
1116
  element.removeClass(activeClassName);
1057
1117
  animateClose(element, className);
1058
- if(formerStyle != null) {
1059
- formerStyle.length > 0 ?
1060
- node.setAttribute('style', formerStyle) :
1061
- node.removeAttribute('style');
1118
+ for (var i in appliedStyles) {
1119
+ node.style.removeProperty(appliedStyles[i]);
1062
1120
  }
1063
1121
  };
1064
1122
 
@@ -1122,6 +1180,8 @@ angular.module('ngAnimate', ['ng'])
1122
1180
  //happen in the first place
1123
1181
  var cancel = preReflowCancellation;
1124
1182
  afterReflow(function() {
1183
+ unblockTransitions(element);
1184
+ unblockKeyframeAnimations(element);
1125
1185
  //once the reflow is complete then we point cancel to
1126
1186
  //the new cancellation function which will remove all of the
1127
1187
  //animation properties from the active animation
@@ -1185,7 +1245,11 @@ angular.module('ngAnimate', ['ng'])
1185
1245
  beforeAddClass : function(element, className, animationCompleted) {
1186
1246
  var cancellationMethod = animateBefore(element, suffixClasses(className, '-add'));
1187
1247
  if(cancellationMethod) {
1188
- afterReflow(animationCompleted);
1248
+ afterReflow(function() {
1249
+ unblockTransitions(element);
1250
+ unblockKeyframeAnimations(element);
1251
+ animationCompleted();
1252
+ });
1189
1253
  return cancellationMethod;
1190
1254
  }
1191
1255
  animationCompleted();
@@ -1198,7 +1262,11 @@ angular.module('ngAnimate', ['ng'])
1198
1262
  beforeRemoveClass : function(element, className, animationCompleted) {
1199
1263
  var cancellationMethod = animateBefore(element, suffixClasses(className, '-remove'));
1200
1264
  if(cancellationMethod) {
1201
- afterReflow(animationCompleted);
1265
+ afterReflow(function() {
1266
+ unblockTransitions(element);
1267
+ unblockKeyframeAnimations(element);
1268
+ animationCompleted();
1269
+ });
1202
1270
  return cancellationMethod;
1203
1271
  }
1204
1272
  animationCompleted();
@@ -1,21 +1,22 @@
1
1
  /*
2
- AngularJS v1.2.0
3
- (c) 2010-2012 Google, Inc. http://angularjs.org
2
+ AngularJS v1.2.3
3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  License: MIT
5
5
  */
6
- (function(A,s,B){'use strict';s.module("ngAnimate",["ng"]).config(["$provide","$animateProvider",function(N,D){var z=s.noop,k=s.forEach,X=D.$$selectors,T=1,f="$$ngAnimateState",E="ng-animate",g={running:!0};N.decorator("$animate",["$delegate","$injector","$sniffer","$rootElement","$timeout","$rootScope","$document",function(t,A,F,m,G,p,H){function B(a){if(a){var d=[],b={};a=a.substr(1).split(".");(F.transitions||F.animations)&&a.push("");for(var c=0;c<a.length;c++){var h=a[c],f=X[h];f&&!b[h]&&(d.push(A.get(f)),
7
- b[h]=!0)}return d}}function n(a,d,b,c,h,g,m){function p(a){g();if(!0===a)u();else{if(a=b.data(f))a.done=u,b.data(f,a);s(v,"after",u)}}function s(c,h,g){var f=h+"End";k(c,function(k,t){var e=function(){a:{var e=h+"Complete",a=c[t];a[e]=!0;(a[f]||z)();for(a=0;a<c.length;a++)if(!c[a][e])break a;g()}};"before"!=h||"enter"!=a&&"move"!=a?k[h]?k[f]=n?k[h](b,d,e):k[h](b,e):e():e()})}function t(){m&&G(m,0,!1)}function u(){if(!u.hasBeenRun){u.hasBeenRun=!0;var a=b.data(f);a&&(n?q(b):(a.closeAnimationTimeout=
8
- G(function(){q(b)},0,!1),b.data(f,a)));t()}}var r=(" "+((b.attr("class")||"")+" "+d)).replace(/\s+/g,".");c||(c=h?h.parent():b.parent());h=B(r);var n="addClass"==a||"removeClass"==a,r=b.data(f)||{};if(J(b,c)||0===h.length)g(),u();else{var v=[];r.running&&n&&r.structural||k(h,function(c){if(!c.allowCancel||c.allowCancel(b,a,d)){var h=c[a];"leave"==a?(c=h,h=null):c=c["before"+a.charAt(0).toUpperCase()+a.substr(1)];v.push({before:c,after:h})}});0===v.length?(g(),t()):(r.running&&(G.cancel(r.closeAnimationTimeout),
9
- q(b),K(r.animations),(r.done||z)(!0)),"addClass"==a&&b.hasClass(d)||"removeClass"==a&&!b.hasClass(d)?(g(),t()):(b.addClass(E),b.data(f,{running:!0,structural:!n,animations:v,done:p}),s(v,"before",p)))}}function L(a){a=a[0];a.nodeType==T&&k(a.querySelectorAll("."+E),function(a){a=s.element(a);var b=a.data(f);b&&(K(b.animations),q(a))})}function K(a){k(a,function(d){a.beforeComplete||(d.beforeEnd||z)(!0);a.afterComplete||(d.afterEnd||z)(!0)})}function q(a){a[0]==m[0]?g.disabled||(g.running=!1,g.structural=
10
- !1):(a.removeClass(E),a.removeData(f))}function J(a,d){if(g.disabled)return!0;if(a[0]==m[0])return g.disabled||g.running;do{if(0===d.length)break;var b=d[0]==m[0],c=b?g:d.data(f),c=c&&(!!c.disabled||!!c.running);if(b||c)return c;if(b)break}while(d=d.parent());return!0}m.data(f,g);p.$$postDigest(function(){g.running=!1});return{enter:function(a,d,b,c){this.enabled(!1,a);t.enter(a,d,b);p.$$postDigest(function(){n("enter","ng-enter",a,d,b,z,c)})},leave:function(a,d){L(a);this.enabled(!1,a);p.$$postDigest(function(){n("leave",
11
- "ng-leave",a,null,null,function(){t.leave(a)},d)})},move:function(a,d,b,c){L(a);this.enabled(!1,a);t.move(a,d,b);p.$$postDigest(function(){n("move","ng-move",a,d,b,z,c)})},addClass:function(a,d,b){n("addClass",d,a,null,null,function(){t.addClass(a,d)},b)},removeClass:function(a,d,b){n("removeClass",d,a,null,null,function(){t.removeClass(a,d)},b)},enabled:function(a,d){switch(arguments.length){case 2:if(a)q(d);else{var b=d.data(f)||{};b.disabled=!0;d.data(f,b)}break;case 1:g.disabled=!a;break;default:a=
12
- !g.disabled}return!!a}}}]);D.register("",["$window","$sniffer","$timeout",function(f,g,F){function m(e){Q.push(e);F.cancel(R);R=F(function(){k(Q,function(e){e()});Q=[];R=null;C={}},10,!1)}function G(e,a){var w=e.getAttribute("style")||"";e.setAttribute("style",(0<w.length?"; ":"")+a);return w}function p(e,a){var w=a?C[a]:null;if(!w){var b=0,d=0,c=0,l=0,g,n,m,p;k(e,function(e){if(e.nodeType==T){e=f.getComputedStyle(e)||{};m=e[h+D];b=Math.max(H(m),b);p=e[h+S];g=e[h+u];d=Math.max(H(g),d);n=e[I+u];l=
13
- Math.max(H(n),l);var a=H(e[I+D]);0<a&&(a*=parseInt(e[I+r],10)||1);c=Math.max(a,c)}});w={total:0,transitionPropertyStyle:p,transitionDurationStyle:m,transitionDelayStyle:g,transitionDelay:d,transitionDuration:b,animationDelayStyle:n,animationDelay:l,animationDuration:c};a&&(C[a]=w)}return w}function H(e){var a=0;e=s.isString(e)?e.split(/\s*,\s*/):[];k(e,function(e){a=Math.max(parseFloat(e)||0,a)});return a}function E(e){var a=e.parent(),b=a.data(W);b||(a.data(W,++V),b=V);return b+"-"+e[0].className}
14
- function n(e,a){var b=E(e),d=b+" "+a,c={},g=C[d]?++C[d].total:0;if(0<g){var l=a+"-stagger",c=b+" "+l;(b=!C[c])&&e.addClass(l);c=p(e,c);b&&e.removeClass(l)}e.addClass(a);d=p(e,d);l=Math.max(d.transitionDuration,d.animationDuration);if(0===l)return e.removeClass(a),!1;var b=e[0],f="";0<d.transitionDuration&&(e.addClass(U),f+=N+" ",b.style[h+S]="none");k(a.split(" "),function(a,e){f+=(0<e?" ":"")+a+"-active"});e.data(v,{className:a,activeClassName:f,maxDuration:l,classes:a+" "+f,timings:d,stagger:c,
15
- ii:g});return!0}function L(a,b,w){function f(a){a.stopPropagation();a=a.originalEvent||a;var e=a.$manualTimeStamp||a.timeStamp||Date.now();Math.max(e-t,0)>=p&&a.elapsedTime>=n&&w()}var x=a.data(v);if(a.hasClass(b)&&x){var M=a[0],l=x.timings,k=x.stagger,n=x.maxDuration,m=x.activeClassName,p=1E3*Math.max(l.transitionDelay,l.animationDelay),t=Date.now(),s=P+" "+O,r,x=x.ii,u,y="";if(0<l.transitionDuration){M.style[h+S]="";var q=l.transitionPropertyStyle;-1==q.indexOf("all")&&(u=!0,y+=c+"transition-property: "+
16
- q+", "+(g.msie?"-ms-zoom":"clip")+"; ",y+=c+"transition-duration: "+l.transitionDurationStyle+", "+l.transitionDuration+"s; ")}0<x&&(0<k.transitionDelay&&0===k.transitionDuration&&(q=l.transitionDelayStyle,u&&(q+=", "+l.transitionDelay+"s"),y+=c+"transition-delay: "+K(q,k.transitionDelay,x)+"; "),0<k.animationDelay&&0===k.animationDuration&&(y+=c+"animation-delay: "+K(l.animationDelayStyle,k.animationDelay,x)+"; "));0<y.length&&(r=G(M,y));a.on(s,f);a.addClass(m);return function(c){a.off(s,f);a.removeClass(m);
17
- d(a,b);null!=r&&(0<r.length?M.setAttribute("style",r):M.removeAttribute("style"))}}w()}function K(a,b,d){var c="";k(a.split(","),function(a,e){c+=(0<e?",":"")+(d*b+parseInt(a,10))+"s"});return c}function q(a,b){if(n(a,b))return function(c){c&&d(a,b)}}function J(a,b,c){if(a.data(v))return L(a,b,c);d(a,b);c()}function a(a,b,c){var d=q(a,b);if(d){var f=d;m(function(){f=J(a,b,c)});return function(a){(f||z)(a)}}c()}function d(a,b){a.removeClass(b);a.removeClass(U);a.removeData(v)}function b(a,b){var c=
18
- "";a=s.isArray(a)?a:a.split(/\s+/);k(a,function(a,e){a&&0<a.length&&(c+=(0<e?" ":"")+a+b)});return c}var c="",h,O,I,P;A.ontransitionend===B&&A.onwebkittransitionend!==B?(c="-webkit-",h="WebkitTransition",O="webkitTransitionEnd transitionend"):(h="transition",O="transitionend");A.onanimationend===B&&A.onwebkitanimationend!==B?(c="-webkit-",I="WebkitAnimation",P="webkitAnimationEnd animationend"):(I="animation",P="animationend");var D="Duration",S="Property",u="Delay",r="IterationCount",W="$$ngAnimateKey",
19
- v="$$ngAnimateCSS3Data",U="ng-animate-start",N="ng-animate-active",C={},V=0,Q=[],R;return{allowCancel:function(a,c,d){var f=(a.data(v)||{}).classes;if(!f||0<=["enter","leave","move"].indexOf(c))return!0;var h=a.parent(),g=s.element(a[0].cloneNode());g.attr("style","position:absolute; top:-9999px; left:-9999px");g.removeAttr("id");g.html("");k(f.split(" "),function(a){g.removeClass(a)});g.addClass(b(d,"addClass"==c?"-add":"-remove"));h.append(g);a=p(g);g.remove();return 0<Math.max(a.transitionDuration,
20
- a.animationDuration)},enter:function(b,c){return a(b,"ng-enter",c)},leave:function(b,c){return a(b,"ng-leave",c)},move:function(b,c){return a(b,"ng-move",c)},beforeAddClass:function(a,c,d){if(a=q(a,b(c,"-add")))return m(d),a;d()},addClass:function(a,c,d){return J(a,b(c,"-add"),d)},beforeRemoveClass:function(a,c,d){if(a=q(a,b(c,"-remove")))return m(d),a;d()},removeClass:function(a,c,d){return J(a,b(c,"-remove"),d)}}}])}])})(window,window.angular);
6
+ (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)),
7
+ 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=
8
+ 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?
9
+ (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);
10
+ 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=
11
+ !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",
12
+ 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)||
13
+ {};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=
14
+ 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"});
15
+ 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,
16
+ 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=
17
+ 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,
18
+ 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)});
19
+ 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,
20
+ 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",
21
+ 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);
21
22
  //# sourceMappingURL=angular-animate.min.js.map
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @license AngularJS v1.2.0
3
- * (c) 2010-2012 Google, Inc. http://angularjs.org
2
+ * @license AngularJS v1.2.3
3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
6
6
  (function(window, angular, undefined) {'use strict';
@@ -1,6 +1,6 @@
1
1
  /*
2
- AngularJS v1.2.0
3
- (c) 2010-2012 Google, Inc. http://angularjs.org
2
+ AngularJS v1.2.3
3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  License: MIT
5
5
  */
6
6
  (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])});
@@ -1,10 +1,84 @@
1
1
  /**
2
- * @license AngularJS v1.2.0
3
- * (c) 2010-2012 Google, Inc. http://angularjs.org
2
+ * @license AngularJS v1.2.3
3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
6
6
 
7
- (
7
+ (function() {'use strict';
8
+
9
+ /**
10
+ * @description
11
+ *
12
+ * This object provides a utility for producing rich Error messages within
13
+ * Angular. It can be called as follows:
14
+ *
15
+ * var exampleMinErr = minErr('example');
16
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
17
+ *
18
+ * The above creates an instance of minErr in the example namespace. The
19
+ * resulting error will have a namespaced error code of example.one. The
20
+ * resulting error will replace {0} with the value of foo, and {1} with the
21
+ * value of bar. The object is not restricted in the number of arguments it can
22
+ * take.
23
+ *
24
+ * If fewer arguments are specified than necessary for interpolation, the extra
25
+ * interpolation markers will be preserved in the final string.
26
+ *
27
+ * Since data will be parsed statically during a build step, some restrictions
28
+ * are applied with respect to how minErr instances are created and called.
29
+ * Instances should have names of the form namespaceMinErr for a minErr created
30
+ * using minErr('namespace') . Error codes, namespaces and template strings
31
+ * should all be static strings, not variables or general expressions.
32
+ *
33
+ * @param {string} module The namespace to use for the new minErr instance.
34
+ * @returns {function(string, string, ...): Error} instance
35
+ */
36
+
37
+ function minErr(module) {
38
+ return function () {
39
+ var code = arguments[0],
40
+ prefix = '[' + (module ? module + ':' : '') + code + '] ',
41
+ template = arguments[1],
42
+ templateArgs = arguments,
43
+ stringify = function (obj) {
44
+ if (typeof obj === 'function') {
45
+ return obj.toString().replace(/ \{[\s\S]*$/, '');
46
+ } else if (typeof obj === 'undefined') {
47
+ return 'undefined';
48
+ } else if (typeof obj !== 'string') {
49
+ return JSON.stringify(obj);
50
+ }
51
+ return obj;
52
+ },
53
+ message, i;
54
+
55
+ message = prefix + template.replace(/\{\d+\}/g, function (match) {
56
+ var index = +match.slice(1, -1), arg;
57
+
58
+ if (index + 2 < templateArgs.length) {
59
+ arg = templateArgs[index + 2];
60
+ if (typeof arg === 'function') {
61
+ return arg.toString().replace(/ ?\{[\s\S]*$/, '');
62
+ } else if (typeof arg === 'undefined') {
63
+ return 'undefined';
64
+ } else if (typeof arg !== 'string') {
65
+ return toJson(arg);
66
+ }
67
+ return arg;
68
+ }
69
+ return match;
70
+ });
71
+
72
+ message = message + '\nhttp://errors.angularjs.org/1.2.3/' +
73
+ (module ? module + '/' : '') + code;
74
+ for (i = 2; i < arguments.length; i++) {
75
+ message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
76
+ encodeURIComponent(stringify(arguments[i]));
77
+ }
78
+
79
+ return new Error(message);
80
+ };
81
+ }
8
82
 
9
83
  /**
10
84
  * @ngdoc interface
@@ -17,12 +91,18 @@
17
91
  function setupModuleLoader(window) {
18
92
 
19
93
  var $injectorMinErr = minErr('$injector');
94
+ var ngMinErr = minErr('ng');
20
95
 
21
96
  function ensure(obj, name, factory) {
22
97
  return obj[name] || (obj[name] = factory());
23
98
  }
24
99
 
25
- return ensure(ensure(window, 'angular', Object), 'module', function() {
100
+ var angular = ensure(window, 'angular', Object);
101
+
102
+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
103
+ angular.$$minErr = angular.$$minErr || minErr;
104
+
105
+ return ensure(angular, 'module', function() {
26
106
  /** @type {Object.<string, angular.Module>} */
27
107
  var modules = {};
28
108
 
@@ -53,7 +133,7 @@ function setupModuleLoader(window) {
53
133
  * myModule.value('appName', 'MyCoolApp');
54
134
  *
55
135
  * // configure existing services inside initialization blocks.
56
- * myModule.config(function($locationProvider) {'use strict';
136
+ * myModule.config(function($locationProvider) {
57
137
  * // Configure existing providers
58
138
  * $locationProvider.hashPrefix('!');
59
139
  * });
@@ -77,6 +157,12 @@ function setupModuleLoader(window) {
77
157
  * @returns {module} new module with the {@link angular.Module} api.
78
158
  */
79
159
  return function module(name, requires, configFn) {
160
+ var assertNotHasOwnProperty = function(name, context) {
161
+ if (name === 'hasOwnProperty') {
162
+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
163
+ }
164
+ };
165
+
80
166
  assertNotHasOwnProperty(name, 'module');
81
167
  if (requires && modules.hasOwnProperty(name)) {
82
168
  modules[name] = null;
@@ -301,7 +387,8 @@ function setupModuleLoader(window) {
301
387
 
302
388
  }
303
389
 
304
- )(window);
390
+ setupModuleLoader(window);
391
+ })(window);
305
392
 
306
393
  /**
307
394
  * Closure compiler type information