nl_tokens: this is prefixed with Core since it conflicts with the animateQueueProvider defined in ngAnimate / animateQueue . js
pl_tokens: function ( ) { var postDigestQueue = new NgMap ( ) ; var postDigestElements = [ ] ; this . $get = [ '$$AnimateRunner' , '$rootScope' , function ( $$AnimateRunner , $rootScope ) { return { enabled : noop , on : noop , off : noop , pin : noop , push : function ( element , event , options , domOperation ) { if ( domOperation ) { domOperation ( ) ; } options = options || { } ; if ( options . from ) { element . css ( options . from ) ; } if ( options . to ) { element . css ( options . to ) ; } if ( options . addClass || options . removeClass ) { addRemoveClassesPostDigest ( element , options . addClass , options . removeClass ) ; } var runner = new $$AnimateRunner ( ) ; // since there are no animations to run the runner needs to be // notified that the animation call is complete. runner . complete ( ) ; return runner ; } } ; function updateData ( data , classes , value ) { var changed = false ; if ( classes ) { classes = isString ( classes ) ? classes . split ( ' ' ) : isArray ( classes ) ? classes : [ ] ; forEach ( classes , function ( className ) { if ( className ) { changed = true ; data [ className ] = value ; } } ) ; } return changed ; } function handleCSSClassChanges ( ) { forEach ( postDigestElements , function ( element ) { var data = postDigestQueue . get ( element ) ; if ( data ) { var existing = splitClasses ( element . attr ( 'class' ) ) ; var toAdd = '' ; var toRemove = '' ; forEach ( data , function ( status , className ) { var hasClass = ! ! <mask> [ className ] ; if ( status !== hasClass ) { if ( status ) { toAdd += ( toAdd . length ? ' ' : '' ) + className ; } else { toRemove += ( toRemove . length ? ' ' : '' ) + className ; } } } ) ; forEach ( element , function ( elm ) { if ( toAdd ) { jqLiteAddClass ( elm , toAdd ) ; } if ( toRemove ) { jqLiteRemoveClass ( elm , toRemove ) ; } } ) ; postDigestQueue . delete ( element ) ; } } ) ; postDigestElements . length = 0 ; } function addRemoveClassesPostDigest ( element , add , remove ) { var data = postDigestQueue . get ( element ) || { } ; var classesAdded = updateData ( data , add , true ) ; var classesRemoved = updateData ( data , remove , false ) ; if ( classesAdded || classesRemoved ) { postDigestQueue . set ( element , data ) ; postDigestElements . push ( element ) ; if ( postDigestElements . length === 1 ) { $rootScope . $$postDigest ( handleCSSClassChanges ) ; } } } } ] ; }