@@ -19,8 +19,8 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
19
19
return element . data ( RUNNER_STORAGE_KEY ) ;
20
20
}
21
21
22
- this . $get = [ '$$jqLite' , '$rootScope' , '$injector' , '$$AnimateRunner' , '$$HashMap' ,
23
- function ( $$jqLite , $rootScope , $injector , $$AnimateRunner , $$HashMap ) {
22
+ this . $get = [ '$$jqLite' , '$rootScope' , '$injector' , '$$AnimateRunner' , '$$HashMap' , '$$rAFScheduler' ,
23
+ function ( $$jqLite , $rootScope , $injector , $$AnimateRunner , $$HashMap , $$rAFScheduler ) {
24
24
25
25
var animationQueue = [ ] ;
26
26
var applyAnimationClasses = applyAnimationClassesFactory ( $$jqLite ) ;
@@ -88,26 +88,27 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
88
88
if ( remainingLevelEntries <= 0 ) {
89
89
remainingLevelEntries = nextLevelEntries ;
90
90
nextLevelEntries = 0 ;
91
- result = result . concat ( row ) ;
91
+ result . push ( row ) ;
92
92
row = [ ] ;
93
93
}
94
94
row . push ( entry . fn ) ;
95
- forEach ( entry . children , function ( childEntry ) {
95
+ entry . children . forEach ( function ( childEntry ) {
96
96
nextLevelEntries ++ ;
97
97
queue . push ( childEntry ) ;
98
98
} ) ;
99
99
remainingLevelEntries -- ;
100
100
}
101
101
102
102
if ( row . length ) {
103
- result = result . concat ( row ) ;
103
+ result . push ( row ) ;
104
104
}
105
+
105
106
return result ;
106
107
}
107
108
}
108
109
109
110
// TODO(matsko): document the signature in a better way
110
- return function ( element , event , options , onBeforeClassesAppliedCb ) {
111
+ return function ( element , event , options ) {
111
112
options = prepareAnimationOptions ( options ) ;
112
113
var isStructural = [ 'enter' , 'move' , 'leave' ] . indexOf ( event ) >= 0 ;
113
114
@@ -159,8 +160,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
159
160
// the element was destroyed early on which removed the runner
160
161
// form its storage. This means we can't animate this element
161
162
// at all and it already has been closed due to destruction.
162
- var elm = entry . element ;
163
- if ( getRunner ( elm ) && getDomNode ( elm ) . parentNode ) {
163
+ if ( getRunner ( entry . element ) ) {
164
164
animations . push ( entry ) ;
165
165
} else {
166
166
entry . close ( ) ;
@@ -191,7 +191,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
191
191
: animationEntry . element ;
192
192
193
193
if ( getRunner ( targetElement ) ) {
194
- var operation = invokeFirstDriver ( animationEntry , onBeforeClassesAppliedCb ) ;
194
+ var operation = invokeFirstDriver ( animationEntry ) ;
195
195
if ( operation ) {
196
196
startAnimationFn = operation . start ;
197
197
}
@@ -211,11 +211,9 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
211
211
} ) ;
212
212
213
213
// we need to sort each of the animations in order of parent to child
214
- // relationships. This ensures that the parent to child classes are
215
- // applied at the right time.
216
- forEach ( sortAnimations ( toBeSortedAnimations ) , function ( triggerAnimation ) {
217
- triggerAnimation ( ) ;
218
- } ) ;
214
+ // relationships. This ensures that the child classes are applied at the
215
+ // right time.
216
+ $$rAFScheduler ( sortAnimations ( toBeSortedAnimations ) ) ;
219
217
} ) ;
220
218
221
219
return runner ;
@@ -285,7 +283,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
285
283
var lookupKey = from . animationID . toString ( ) ;
286
284
if ( ! anchorGroups [ lookupKey ] ) {
287
285
var group = anchorGroups [ lookupKey ] = {
288
- // TODO(matsko): double-check this code
286
+ structural : true ,
289
287
beforeStart : function ( ) {
290
288
fromAnimation . beforeStart ( ) ;
291
289
toAnimation . beforeStart ( ) ;
@@ -339,15 +337,15 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
339
337
return matches . join ( ' ' ) ;
340
338
}
341
339
342
- function invokeFirstDriver ( animationDetails , onBeforeClassesAppliedCb ) {
340
+ function invokeFirstDriver ( animationDetails ) {
343
341
// we loop in reverse order since the more general drivers (like CSS and JS)
344
342
// may attempt more elements, but custom drivers are more particular
345
343
for ( var i = drivers . length - 1 ; i >= 0 ; i -- ) {
346
344
var driverName = drivers [ i ] ;
347
345
if ( ! $injector . has ( driverName ) ) continue ; // TODO(matsko): remove this check
348
346
349
347
var factory = $injector . get ( driverName ) ;
350
- var driver = factory ( animationDetails , onBeforeClassesAppliedCb ) ;
348
+ var driver = factory ( animationDetails ) ;
351
349
if ( driver ) {
352
350
return driver ;
353
351
}
0 commit comments