angular-rails-engine 1.2.0.2 → 1.2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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