rails-angularjs 1.4.0.pre.rc.2 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/rails-angularjs/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +179 -42
- data/vendor/assets/javascripts/angular-animate.min.js +47 -45
- data/vendor/assets/javascripts/angular-animate.min.js.map +3 -3
- data/vendor/assets/javascripts/angular-aria.js +1 -1
- data/vendor/assets/javascripts/angular-aria.min.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.min.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +2 -2
- data/vendor/assets/javascripts/angular-loader.min.js +3 -3
- data/vendor/assets/javascripts/angular-loader.min.js.map +1 -1
- data/vendor/assets/javascripts/angular-message-format.js +1 -1
- data/vendor/assets/javascripts/angular-message-format.min.js +1 -1
- data/vendor/assets/javascripts/angular-messages.js +1 -1
- data/vendor/assets/javascripts/angular-messages.min.js +1 -1
- data/vendor/assets/javascripts/angular-mocks.js +1 -1
- data/vendor/assets/javascripts/angular-resource.js +1 -1
- data/vendor/assets/javascripts/angular-resource.min.js +1 -1
- data/vendor/assets/javascripts/angular-route.js +1 -1
- data/vendor/assets/javascripts/angular-route.min.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.min.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +125 -37
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular-touch.min.js +1 -1
- data/vendor/assets/javascripts/angular.js +125 -37
- data/vendor/assets/javascripts/angular.min.js +265 -265
- data/vendor/assets/javascripts/angular.min.js.map +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c000bd9c282d3537d402975917d0aea01a858456
|
4
|
+
data.tar.gz: 7fd7afeb43650ce543870d5c81940da21728521e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81783b8b112b61803b11da43292a4df999423e8d92773ce653a82a66632f54cfb01a7ebad25a1e2728b1022d6878ecece9913332b42413812b428def70e550f1
|
7
|
+
data.tar.gz: b66f1e10d01be8954adaa727207642c273bfcf428a48caba87c7934f6bf52f4a7d4de5d129bbfffdf1c1ddacf6abfb3d0fa6e0b4b6f5e6926a0c227c5349a0bd
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.4.0
|
2
|
+
* @license AngularJS v1.4.0
|
3
3
|
* (c) 2010-2015 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -256,6 +256,64 @@ function getDomNode(element) {
|
|
256
256
|
return (element instanceof angular.element) ? element[0] : element;
|
257
257
|
}
|
258
258
|
|
259
|
+
var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
|
260
|
+
var tickQueue = [];
|
261
|
+
var cancelFn;
|
262
|
+
|
263
|
+
function scheduler(tasks) {
|
264
|
+
// we make a copy since RAFScheduler mutates the state
|
265
|
+
// of the passed in array variable and this would be difficult
|
266
|
+
// to track down on the outside code
|
267
|
+
tickQueue.push([].concat(tasks));
|
268
|
+
nextTick();
|
269
|
+
}
|
270
|
+
|
271
|
+
/* waitUntilQuiet does two things:
|
272
|
+
* 1. It will run the FINAL `fn` value only when an uncancelled RAF has passed through
|
273
|
+
* 2. It will delay the next wave of tasks from running until the quiet `fn` has run.
|
274
|
+
*
|
275
|
+
* The motivation here is that animation code can request more time from the scheduler
|
276
|
+
* before the next wave runs. This allows for certain DOM properties such as classes to
|
277
|
+
* be resolved in time for the next animation to run.
|
278
|
+
*/
|
279
|
+
scheduler.waitUntilQuiet = function(fn) {
|
280
|
+
if (cancelFn) cancelFn();
|
281
|
+
|
282
|
+
cancelFn = $$rAF(function() {
|
283
|
+
cancelFn = null;
|
284
|
+
fn();
|
285
|
+
nextTick();
|
286
|
+
});
|
287
|
+
};
|
288
|
+
|
289
|
+
return scheduler;
|
290
|
+
|
291
|
+
function nextTick() {
|
292
|
+
if (!tickQueue.length) return;
|
293
|
+
|
294
|
+
var updatedQueue = [];
|
295
|
+
for (var i = 0; i < tickQueue.length; i++) {
|
296
|
+
var innerQueue = tickQueue[i];
|
297
|
+
runNextTask(innerQueue);
|
298
|
+
if (innerQueue.length) {
|
299
|
+
updatedQueue.push(innerQueue);
|
300
|
+
}
|
301
|
+
}
|
302
|
+
tickQueue = updatedQueue;
|
303
|
+
|
304
|
+
if (!cancelFn) {
|
305
|
+
$$rAF(function() {
|
306
|
+
if (!cancelFn) nextTick();
|
307
|
+
});
|
308
|
+
}
|
309
|
+
}
|
310
|
+
|
311
|
+
function runNextTask(tasks) {
|
312
|
+
var nextTask = tasks.shift();
|
313
|
+
nextTask();
|
314
|
+
}
|
315
|
+
}];
|
316
|
+
|
259
317
|
var $$AnimateChildrenDirective = [function() {
|
260
318
|
return function(scope, element, attrs) {
|
261
319
|
var val = attrs.ngAnimateChildren;
|
@@ -662,9 +720,9 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
|
|
662
720
|
var gcsStaggerLookup = createLocalCacheLookup();
|
663
721
|
|
664
722
|
this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout',
|
665
|
-
'$document', '$sniffer', '$$
|
723
|
+
'$document', '$sniffer', '$$rAFScheduler',
|
666
724
|
function($window, $$jqLite, $$AnimateRunner, $timeout,
|
667
|
-
$document, $sniffer, $$
|
725
|
+
$document, $sniffer, $$rAFScheduler) {
|
668
726
|
|
669
727
|
var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
|
670
728
|
|
@@ -722,15 +780,10 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
|
|
722
780
|
}
|
723
781
|
|
724
782
|
var bod = getDomNode($document).body;
|
725
|
-
var cancelLastRAFRequest;
|
726
783
|
var rafWaitQueue = [];
|
727
784
|
function waitUntilQuiet(callback) {
|
728
|
-
if (cancelLastRAFRequest) {
|
729
|
-
cancelLastRAFRequest(); //cancels the request
|
730
|
-
}
|
731
785
|
rafWaitQueue.push(callback);
|
732
|
-
|
733
|
-
cancelLastRAFRequest = null;
|
786
|
+
$$rAFScheduler.waitUntilQuiet(function() {
|
734
787
|
gcsLookup.flush();
|
735
788
|
gcsStaggerLookup.flush();
|
736
789
|
|
@@ -935,7 +988,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
|
|
935
988
|
// we need to recalculate the delay value since we used a pre-emptive negative
|
936
989
|
// delay value and the delay value is required for the final event checking. This
|
937
990
|
// property will ensure that this will happen after the RAF phase has passed.
|
938
|
-
if (timings.transitionDuration > 0) {
|
991
|
+
if (options.duration == null && timings.transitionDuration > 0) {
|
939
992
|
flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst;
|
940
993
|
}
|
941
994
|
|
@@ -1452,18 +1505,20 @@ var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationPro
|
|
1452
1505
|
var element = animationDetails.element;
|
1453
1506
|
var options = animationDetails.options || {};
|
1454
1507
|
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1508
|
+
if (animationDetails.structural) {
|
1509
|
+
// structural animations ensure that the CSS classes are always applied
|
1510
|
+
// before the detection starts.
|
1511
|
+
options.structural = options.applyClassesEarly = true;
|
1512
|
+
|
1513
|
+
// we special case the leave animation since we want to ensure that
|
1514
|
+
// the element is removed as soon as the animation is over. Otherwise
|
1515
|
+
// a flicker might appear or the element may not be removed at all
|
1516
|
+
options.event = animationDetails.event;
|
1517
|
+
if (options.event === 'leave') {
|
1518
|
+
options.onDone = options.domOperation;
|
1519
|
+
}
|
1520
|
+
} else {
|
1521
|
+
options.event = null;
|
1467
1522
|
}
|
1468
1523
|
|
1469
1524
|
var animator = $animateCss(element, options);
|
@@ -1855,6 +1910,14 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
|
1855
1910
|
return currentAnimation.state === RUNNING_STATE && newAnimation.structural;
|
1856
1911
|
});
|
1857
1912
|
|
1913
|
+
rules.cancel.push(function(element, newAnimation, currentAnimation) {
|
1914
|
+
var nO = newAnimation.options;
|
1915
|
+
var cO = currentAnimation.options;
|
1916
|
+
|
1917
|
+
// if the exact same CSS class is added/removed then it's safe to cancel it
|
1918
|
+
return (nO.addClass && nO.addClass === cO.removeClass) || (nO.removeClass && nO.removeClass === cO.addClass);
|
1919
|
+
});
|
1920
|
+
|
1858
1921
|
this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap',
|
1859
1922
|
'$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite',
|
1860
1923
|
function($$rAF, $rootScope, $rootElement, $document, $$HashMap,
|
@@ -2089,6 +2152,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
|
2089
2152
|
structural: isStructural,
|
2090
2153
|
element: element,
|
2091
2154
|
event: event,
|
2155
|
+
close: close,
|
2092
2156
|
options: options,
|
2093
2157
|
runner: runner
|
2094
2158
|
};
|
@@ -2108,8 +2172,17 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
|
2108
2172
|
var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation);
|
2109
2173
|
if (cancelAnimationFlag) {
|
2110
2174
|
if (existingAnimation.state === RUNNING_STATE) {
|
2175
|
+
// this will end the animation right away and it is safe
|
2176
|
+
// to do so since the animation is already running and the
|
2177
|
+
// runner callback code will run in async
|
2111
2178
|
existingAnimation.runner.end();
|
2179
|
+
} else if (existingAnimation.structural) {
|
2180
|
+
// this means that the animation is queued into a digest, but
|
2181
|
+
// hasn't started yet. Therefore it is safe to run the close
|
2182
|
+
// method which will call the runner methods in async.
|
2183
|
+
existingAnimation.close();
|
2112
2184
|
} else {
|
2185
|
+
// this will merge the existing animation options into this new follow-up animation
|
2113
2186
|
mergeAnimationOptions(element, newAnimation.options, existingAnimation.options);
|
2114
2187
|
}
|
2115
2188
|
} else {
|
@@ -2145,10 +2218,13 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
|
2145
2218
|
|
2146
2219
|
if (!isValidAnimation) {
|
2147
2220
|
close();
|
2221
|
+
clearElementAnimationState(element);
|
2148
2222
|
return runner;
|
2149
2223
|
}
|
2150
2224
|
|
2151
|
-
|
2225
|
+
if (isStructural) {
|
2226
|
+
closeParentClassBasedAnimations(parent);
|
2227
|
+
}
|
2152
2228
|
|
2153
2229
|
// the counter keeps track of cancelled animations
|
2154
2230
|
var counter = (existingAnimation.counter || 0) + 1;
|
@@ -2191,6 +2267,13 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
|
2191
2267
|
runner.end();
|
2192
2268
|
}
|
2193
2269
|
|
2270
|
+
// in the event that the element animation was not cancelled or a follow-up animation
|
2271
|
+
// isn't allowed to animate from here then we need to clear the state of the element
|
2272
|
+
// so that any future animations won't read the expired animation data.
|
2273
|
+
if (!isValidAnimation) {
|
2274
|
+
clearElementAnimationState(element);
|
2275
|
+
}
|
2276
|
+
|
2194
2277
|
return;
|
2195
2278
|
}
|
2196
2279
|
|
@@ -2200,7 +2283,9 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
|
2200
2283
|
? 'setClass'
|
2201
2284
|
: animationDetails.event;
|
2202
2285
|
|
2203
|
-
|
2286
|
+
if (animationDetails.structural) {
|
2287
|
+
closeParentClassBasedAnimations(parentElement);
|
2288
|
+
}
|
2204
2289
|
|
2205
2290
|
markElementAnimationState(element, RUNNING_STATE);
|
2206
2291
|
var realRunner = $$animation(element, event, animationDetails.options);
|
@@ -2542,12 +2627,16 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
|
2542
2627
|
return element.data(RUNNER_STORAGE_KEY);
|
2543
2628
|
}
|
2544
2629
|
|
2545
|
-
this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner',
|
2546
|
-
function($$jqLite, $rootScope, $injector, $$AnimateRunner) {
|
2630
|
+
this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$rAFScheduler',
|
2631
|
+
function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$rAFScheduler) {
|
2547
2632
|
|
2548
2633
|
var animationQueue = [];
|
2549
2634
|
var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
|
2550
2635
|
|
2636
|
+
var totalPendingClassBasedAnimations = 0;
|
2637
|
+
var totalActiveClassBasedAnimations = 0;
|
2638
|
+
var classBasedAnimationsQueue = [];
|
2639
|
+
|
2551
2640
|
// TODO(matsko): document the signature in a better way
|
2552
2641
|
return function(element, event, options) {
|
2553
2642
|
options = prepareAnimationOptions(options);
|
@@ -2576,12 +2665,19 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
|
2576
2665
|
options.tempClasses = null;
|
2577
2666
|
}
|
2578
2667
|
|
2668
|
+
var classBasedIndex;
|
2669
|
+
if (!isStructural) {
|
2670
|
+
classBasedIndex = totalPendingClassBasedAnimations;
|
2671
|
+
totalPendingClassBasedAnimations += 1;
|
2672
|
+
}
|
2673
|
+
|
2579
2674
|
animationQueue.push({
|
2580
2675
|
// this data is used by the postDigest code and passed into
|
2581
2676
|
// the driver step function
|
2582
2677
|
element: element,
|
2583
2678
|
classes: classes,
|
2584
2679
|
event: event,
|
2680
|
+
classBasedIndex: classBasedIndex,
|
2585
2681
|
structural: isStructural,
|
2586
2682
|
options: options,
|
2587
2683
|
beforeStart: beforeStart,
|
@@ -2596,6 +2692,10 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
|
2596
2692
|
if (animationQueue.length > 1) return runner;
|
2597
2693
|
|
2598
2694
|
$rootScope.$$postDigest(function() {
|
2695
|
+
totalActiveClassBasedAnimations = totalPendingClassBasedAnimations;
|
2696
|
+
totalPendingClassBasedAnimations = 0;
|
2697
|
+
classBasedAnimationsQueue.length = 0;
|
2698
|
+
|
2599
2699
|
var animations = [];
|
2600
2700
|
forEach(animationQueue, function(entry) {
|
2601
2701
|
// the element was destroyed early on which removed the runner
|
@@ -2610,23 +2710,58 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
|
2610
2710
|
animationQueue.length = 0;
|
2611
2711
|
|
2612
2712
|
forEach(groupAnimations(animations), function(animationEntry) {
|
2613
|
-
|
2614
|
-
|
2615
|
-
// CSS classes may be required for proper CSS detection.
|
2616
|
-
animationEntry.beforeStart();
|
2617
|
-
|
2618
|
-
var operation = invokeFirstDriver(animationEntry);
|
2619
|
-
var triggerAnimationStart = operation && operation.start; /// TODO(matsko): only recognize operation.start()
|
2620
|
-
|
2621
|
-
var closeFn = animationEntry.close;
|
2622
|
-
if (!triggerAnimationStart) {
|
2623
|
-
closeFn();
|
2713
|
+
if (animationEntry.structural) {
|
2714
|
+
triggerAnimationStart();
|
2624
2715
|
} else {
|
2625
|
-
|
2626
|
-
|
2627
|
-
|
2716
|
+
classBasedAnimationsQueue.push({
|
2717
|
+
node: getDomNode(animationEntry.element),
|
2718
|
+
fn: triggerAnimationStart
|
2628
2719
|
});
|
2629
|
-
|
2720
|
+
|
2721
|
+
if (animationEntry.classBasedIndex === totalActiveClassBasedAnimations - 1) {
|
2722
|
+
// we need to sort each of the animations in order of parent to child
|
2723
|
+
// relationships. This ensures that the child classes are applied at the
|
2724
|
+
// right time.
|
2725
|
+
classBasedAnimationsQueue = classBasedAnimationsQueue.sort(function(a,b) {
|
2726
|
+
return b.node.contains(a.node);
|
2727
|
+
}).map(function(entry) {
|
2728
|
+
return entry.fn;
|
2729
|
+
});
|
2730
|
+
|
2731
|
+
$$rAFScheduler(classBasedAnimationsQueue);
|
2732
|
+
}
|
2733
|
+
}
|
2734
|
+
|
2735
|
+
function triggerAnimationStart() {
|
2736
|
+
// it's important that we apply the `ng-animate` CSS class and the
|
2737
|
+
// temporary classes before we do any driver invoking since these
|
2738
|
+
// CSS classes may be required for proper CSS detection.
|
2739
|
+
animationEntry.beforeStart();
|
2740
|
+
|
2741
|
+
var startAnimationFn, closeFn = animationEntry.close;
|
2742
|
+
|
2743
|
+
// in the event that the element was removed before the digest runs or
|
2744
|
+
// during the RAF sequencing then we should not trigger the animation.
|
2745
|
+
var targetElement = animationEntry.anchors
|
2746
|
+
? (animationEntry.from.element || animationEntry.to.element)
|
2747
|
+
: animationEntry.element;
|
2748
|
+
|
2749
|
+
if (getRunner(targetElement)) {
|
2750
|
+
var operation = invokeFirstDriver(animationEntry);
|
2751
|
+
if (operation) {
|
2752
|
+
startAnimationFn = operation.start;
|
2753
|
+
}
|
2754
|
+
}
|
2755
|
+
|
2756
|
+
if (!startAnimationFn) {
|
2757
|
+
closeFn();
|
2758
|
+
} else {
|
2759
|
+
var animationRunner = startAnimationFn();
|
2760
|
+
animationRunner.done(function(status) {
|
2761
|
+
closeFn(!status);
|
2762
|
+
});
|
2763
|
+
updateAnimationRunners(animationEntry, animationRunner);
|
2764
|
+
}
|
2630
2765
|
}
|
2631
2766
|
});
|
2632
2767
|
});
|
@@ -2698,7 +2833,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
|
2698
2833
|
var lookupKey = from.animationID.toString();
|
2699
2834
|
if (!anchorGroups[lookupKey]) {
|
2700
2835
|
var group = anchorGroups[lookupKey] = {
|
2701
|
-
|
2836
|
+
structural: true,
|
2702
2837
|
beforeStart: function() {
|
2703
2838
|
fromAnimation.beforeStart();
|
2704
2839
|
toAnimation.beforeStart();
|
@@ -2816,6 +2951,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
|
2816
2951
|
/* global angularAnimateModule: true,
|
2817
2952
|
|
2818
2953
|
$$rAFMutexFactory,
|
2954
|
+
$$rAFSchedulerFactory,
|
2819
2955
|
$$AnimateChildrenDirective,
|
2820
2956
|
$$AnimateRunnerFactory,
|
2821
2957
|
$$AnimateQueueProvider,
|
@@ -3555,6 +3691,7 @@ angular.module('ngAnimate', [])
|
|
3555
3691
|
.directive('ngAnimateChildren', $$AnimateChildrenDirective)
|
3556
3692
|
|
3557
3693
|
.factory('$$rAFMutex', $$rAFMutexFactory)
|
3694
|
+
.factory('$$rAFScheduler', $$rAFSchedulerFactory)
|
3558
3695
|
|
3559
3696
|
.factory('$$AnimateRunner', $$AnimateRunnerFactory)
|
3560
3697
|
|