@@ -105,61 +105,64 @@ var $$CoreAnimateQueueProvider = function() {
105
105
}
106
106
} ;
107
107
108
- function addRemoveClassesPostDigest ( element , add , remove ) {
109
- var classVal , data = postDigestQueue . get ( element ) ;
110
108
111
- if ( ! data ) {
112
- postDigestQueue . put ( element , data = { } ) ;
113
- postDigestElements . push ( element ) ;
109
+ function updateData ( data , classes , value ) {
110
+ var changed = false ;
111
+ if ( classes ) {
112
+ classes = isString ( classes ) ? classes . split ( ' ' ) :
113
+ isArray ( classes ) ? classes : [ ] ;
114
+ forEach ( classes , function ( className ) {
115
+ if ( className ) {
116
+ changed = true ;
117
+ data [ className ] = value ;
118
+ }
119
+ } ) ;
114
120
}
121
+ return changed ;
122
+ }
115
123
116
- var updateData = function ( classes , value ) {
117
- var changed = false ;
118
- if ( classes ) {
119
- classes = isString ( classes ) ? classes . split ( ' ' ) :
120
- isArray ( classes ) ? classes : [ ] ;
121
- forEach ( classes , function ( className ) {
122
- if ( className ) {
123
- changed = true ;
124
- data [ className ] = value ;
124
+ function handleCSSClassChanges ( ) {
125
+ forEach ( postDigestElements , function ( element ) {
126
+ var data = postDigestQueue . get ( element ) ;
127
+ if ( data ) {
128
+ var existing = splitClasses ( element . attr ( 'class' ) ) ;
129
+ var toAdd = '' ;
130
+ var toRemove = '' ;
131
+ forEach ( data , function ( status , className ) {
132
+ var hasClass = ! ! existing [ className ] ;
133
+ if ( status !== hasClass ) {
134
+ if ( status ) {
135
+ toAdd += ( toAdd . length ? ' ' : '' ) + className ;
136
+ } else {
137
+ toRemove += ( toRemove . length ? ' ' : '' ) + className ;
138
+ }
125
139
}
126
140
} ) ;
141
+
142
+ forEach ( element , function ( elm ) {
143
+ toAdd && jqLiteAddClass ( elm , toAdd ) ;
144
+ toRemove && jqLiteRemoveClass ( elm , toRemove ) ;
145
+ } ) ;
146
+ postDigestQueue . remove ( element ) ;
127
147
}
128
- return changed ;
129
- } ;
148
+ } ) ;
149
+ postDigestElements . length = 0 ;
150
+ }
130
151
131
- var classesAdded = updateData ( add , true ) ;
132
- var classesRemoved = updateData ( remove , false ) ;
133
- if ( ( ! classesAdded && ! classesRemoved ) || postDigestElements . length > 1 ) return ;
134
152
135
- $rootScope . $$postDigest ( function ( ) {
136
- forEach ( postDigestElements , function ( element ) {
137
- var data = postDigestQueue . get ( element ) ;
138
- if ( data ) {
139
- var existing = splitClasses ( element . attr ( 'class' ) ) ;
140
- var toAdd = '' ;
141
- var toRemove = '' ;
142
- forEach ( data , function ( status , className ) {
143
- var hasClass = ! ! existing [ className ] ;
144
- if ( status !== hasClass ) {
145
- if ( status ) {
146
- toAdd += ( toAdd . length ? ' ' : '' ) + className ;
147
- } else {
148
- toRemove += ( toRemove . length ? ' ' : '' ) + className ;
149
- }
150
- }
151
- } ) ;
153
+ function addRemoveClassesPostDigest ( element , add , remove ) {
154
+ var classVal , data = postDigestQueue . get ( element ) ;
152
155
153
- forEach ( element , function ( elm ) {
154
- toAdd && jqLiteAddClass ( elm , toAdd ) ;
155
- toRemove && jqLiteRemoveClass ( elm , toRemove ) ;
156
- } ) ;
157
- postDigestQueue . remove ( element ) ;
158
- }
159
- } ) ;
156
+ if ( ! data ) {
157
+ postDigestQueue . put ( element , data = { } ) ;
158
+ postDigestElements . push ( element ) ;
159
+ }
160
160
161
- postDigestElements . length = 0 ;
162
- } ) ;
161
+ var classesAdded = updateData ( data , add , true ) ;
162
+ var classesRemoved = updateData ( data , remove , false ) ;
163
+ if ( ( ! classesAdded && ! classesRemoved ) || postDigestElements . length > 1 ) return ;
164
+
165
+ $rootScope . $$postDigest ( handleCSSClassChanges ) ;
163
166
}
164
167
} ] ;
165
168
} ;
0 commit comments