@@ -21,67 +21,21 @@ function extractElementNode(element) {
21
21
}
22
22
}
23
23
24
- var $$AnimateClassResolverProvider = function ( ) {
25
- var ADD_CLASS = 1 ;
26
- var REMOVE_CLASS = - 1 ;
27
-
28
- this . $get = function ( ) {
29
- return function ( existing , toAdd , toRemove ) {
30
- var flags = { } ;
31
- existing = splitClasses ( existing ) ;
32
-
33
- toAdd = splitClasses ( toAdd ) ;
34
- forEach ( toAdd , function ( value , key ) {
35
- flags [ key ] = ADD_CLASS ;
36
- } ) ;
37
-
38
- toRemove = splitClasses ( toRemove ) ;
39
- forEach ( toRemove , function ( value , key ) {
40
- flags [ key ] = flags [ key ] === ADD_CLASS ? null : REMOVE_CLASS ;
41
- } ) ;
42
-
43
- var classes = {
44
- addClass : '' ,
45
- removeClass : ''
46
- } ;
47
-
48
- forEach ( flags , function ( val , klass ) {
49
- var prop , allow ;
50
- if ( val === ADD_CLASS ) {
51
- prop = 'addClass' ;
52
- allow = ! existing [ klass ] ;
53
- } else if ( val === REMOVE_CLASS ) {
54
- prop = 'removeClass' ;
55
- allow = existing [ klass ] ;
56
- }
57
- if ( allow ) {
58
- if ( classes [ prop ] . length ) {
59
- classes [ prop ] += ' ' ;
60
- }
61
- classes [ prop ] += klass ;
62
- }
63
- } ) ;
64
-
65
- return classes ;
66
- } ;
67
- } ;
24
+ function splitClasses ( classes ) {
25
+ if ( isString ( classes ) ) {
26
+ classes = classes . split ( ' ' ) ;
27
+ }
68
28
69
- function splitClasses ( classes ) {
70
- if ( isString ( classes ) ) {
71
- classes = classes . split ( ' ' ) ;
29
+ var obj = { } ;
30
+ forEach ( classes , function ( klass ) {
31
+ // sometimes the split leaves empty string values
32
+ // incase extra spaces were applied to the options
33
+ if ( klass . length ) {
34
+ obj [ klass ] = true ;
72
35
}
73
-
74
- var obj = { } ;
75
- forEach ( classes , function ( klass ) {
76
- // sometimes the split leaves empty string values
77
- // incase extra spaces were applied to the options
78
- if ( klass . length ) {
79
- obj [ klass ] = true ;
80
- }
81
- } ) ;
82
- return obj ;
83
- }
84
- } ;
36
+ } ) ;
37
+ return obj ;
38
+ }
85
39
86
40
var $$CoreAnimateRunnerProvider = function ( ) {
87
41
this . $get = [ '$q' , '$$rAF' , function ( $q , $$rAF ) {
@@ -112,8 +66,8 @@ var $$CoreAnimateQueueProvider = function() {
112
66
var postDigestQueue = new HashMap ( ) ;
113
67
var postDigestElements = [ ] ;
114
68
115
- this . $get = [ '$$AnimateRunner' , '$rootScope' , '$$animateClassResolver' ,
116
- function ( $$AnimateRunner , $rootScope , $$animateClassResolver ) {
69
+ this . $get = [ '$$AnimateRunner' , '$rootScope' ,
70
+ function ( $$AnimateRunner , $rootScope ) {
117
71
return {
118
72
enabled : noop ,
119
73
on : noop ,
@@ -144,17 +98,19 @@ var $$CoreAnimateQueueProvider = function() {
144
98
}
145
99
146
100
if ( add ) {
147
- classVal = add . split ( ' ' ) ;
148
- data . addClass = data . addClass
149
- ? data . addClass . concat ( classVal )
150
- : classVal ;
101
+ forEach ( add . split ( ' ' ) , function ( className ) {
102
+ if ( className ) {
103
+ data [ className ] = true ;
104
+ }
105
+ } ) ;
151
106
}
152
107
153
108
if ( remove ) {
154
- classVal = remove . split ( ' ' ) ;
155
- data . removeClass = data . removeClass
156
- ? data . removeClass . concat ( classVal )
157
- : classVal ;
109
+ forEach ( remove . split ( ' ' ) , function ( className ) {
110
+ if ( className ) {
111
+ data [ className ] = false ;
112
+ }
113
+ } ) ;
158
114
}
159
115
160
116
if ( postDigestElements . length > 1 ) return ;
@@ -163,12 +119,23 @@ var $$CoreAnimateQueueProvider = function() {
163
119
forEach ( postDigestElements , function ( element ) {
164
120
var data = postDigestQueue . get ( element ) ;
165
121
if ( data ) {
166
- var classes = $$animateClassResolver ( element . attr ( 'class' ) ,
167
- data . addClass ,
168
- data . removeClass ) ;
122
+ var existing = splitClasses ( element . attr ( 'class' ) ) ;
123
+ var toAdd = '' ;
124
+ var toRemove = '' ;
125
+ forEach ( data , function ( status , className ) {
126
+ var hasClass = ! ! existing [ className ] ;
127
+ if ( status !== hasClass ) {
128
+ if ( status ) {
129
+ toAdd += ( toAdd . length ? ' ' : '' ) + className ;
130
+ } else {
131
+ toRemove += ( toRemove . length ? ' ' : '' ) + className ;
132
+ }
133
+ }
134
+ } ) ;
135
+
169
136
forEach ( element , function ( elm ) {
170
- classes . addClass && jqLiteAddClass ( elm , classes . addClass ) ;
171
- classes . removeClass && jqLiteRemoveClass ( elm , classes . removeClass ) ;
137
+ toAdd && jqLiteAddClass ( elm , toAdd ) ;
138
+ toRemove && jqLiteRemoveClass ( elm , toRemove ) ;
172
139
} ) ;
173
140
postDigestQueue . remove ( element ) ;
174
141
}
0 commit comments