/usr/share/javascript/angular.js/angular-animate.min.js is in libjs-angularjs 1.2.28-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 | (function(window,angular,undefined){'use strict';angular.module('ngAnimate',['ng']).directive('ngAnimateChildren',function(){var NG_ANIMATE_CHILDREN='$$ngAnimateChildren';return function(scope,element,attrs){var val=attrs.ngAnimateChildren;if(angular.isString(val)&&val.length===0)element.data(NG_ANIMATE_CHILDREN,true);else scope.$watch(val,function(value){element.data(NG_ANIMATE_CHILDREN,!!value);});};}).factory('$$animateReflow',['$$rAF','$document',function($$rAF,$document){var bod=$document[0].body;return function(fn){return $$rAF(function(){var a=bod.offsetWidth+1;fn();});};}]).config(['$provide','$animateProvider',function($provide,$animateProvider){var noop=angular.noop;var forEach=angular.forEach;var selectors=$animateProvider.$$selectors;var ELEMENT_NODE=1;var NG_ANIMATE_STATE='$$ngAnimateState';var NG_ANIMATE_CHILDREN='$$ngAnimateChildren';var NG_ANIMATE_CLASS_NAME='ng-animate';var rootAnimateState={running:true};function extractElementNode(element){for(var i=0;i<element.length;i++){var elm=element[i];if(elm.nodeType==ELEMENT_NODE)return elm;}}function prepareElement(element){return element&&angular.element(element);}function stripCommentsFromElement(element){return angular.element(extractElementNode(element));}function isMatchingElement(elm1,elm2){return extractElementNode(elm1)==extractElementNode(elm2);}$provide.decorator('$animate',['$delegate','$injector','$sniffer','$rootElement','$$asyncCallback','$rootScope','$document',function($delegate,$injector,$sniffer,$rootElement,$$asyncCallback,$rootScope,$document){var globalAnimationCounter=0;$rootElement.data(NG_ANIMATE_STATE,rootAnimateState);$rootScope.$$postDigest(function(){$rootScope.$$postDigest(function(){rootAnimateState.running=false;});});var classNameFilter=$animateProvider.classNameFilter();var isAnimatableClassName=!classNameFilter?function(){return true;}:function(className){return classNameFilter.test(className);};function blockElementAnimations(element){var data=element.data(NG_ANIMATE_STATE)||{};data.running=true;element.data(NG_ANIMATE_STATE,data);}function lookup(name){if(name){var matches=[],flagMap={},classes=name.substr(1).split('.');if($sniffer.transitions||$sniffer.animations)matches.push($injector.get(selectors['']));for(var i=0;i<classes.length;i++){var klass=classes[i],selectorFactoryName=selectors[klass];if(selectorFactoryName&&!flagMap[klass]){matches.push($injector.get(selectorFactoryName));flagMap[klass]=true;}}return matches;}}function animationRunner(element,animationEvent,className){var node=element[0];if(!node)return;var isSetClassOperation=animationEvent=='setClass';var isClassBased=isSetClassOperation||animationEvent=='addClass'||animationEvent=='removeClass';var classNameAdd,classNameRemove;if(angular.isArray(className)){classNameAdd=className[0];classNameRemove=className[1];className=classNameAdd+' '+classNameRemove;}var currentClassName=element.attr('class');var classes=currentClassName+' '+className;if(!isAnimatableClassName(classes))return;var beforeComplete=noop,beforeCancel=[],before=[],afterComplete=noop,afterCancel=[],after=[];var animationLookup=(' '+classes).replace(/\s+/g,'.');forEach(lookup(animationLookup),function(animationFactory){var created=registerAnimation(animationFactory,animationEvent);if(!created&&isSetClassOperation){registerAnimation(animationFactory,'addClass');registerAnimation(animationFactory,'removeClass');}});function registerAnimation(animationFactory,event){var afterFn=animationFactory[event];var beforeFn=animationFactory['before'+event.charAt(0).toUpperCase()+event.substr(1)];if(afterFn||beforeFn){if(event=='leave'){beforeFn=afterFn;afterFn=null;}after.push({event:event,fn:afterFn});before.push({event:event,fn:beforeFn});return true;}}function run(fns,cancellations,allCompleteFn){var animations=[];forEach(fns,function(animation){animation.fn&&animations.push(animation);});var count=0;function afterAnimationComplete(index){if(cancellations){(cancellations[index]||noop)();if(++count<animations.length)return;cancellations=null;}allCompleteFn();}forEach(animations,function(animation,index){var progress=function(){afterAnimationComplete(index);};switch(animation.event){case 'setClass':cancellations.push(animation.fn(element,classNameAdd,classNameRemove,progress));break;case 'addClass':cancellations.push(animation.fn(element,classNameAdd||className,progress));break;case 'removeClass':cancellations.push(animation.fn(element,classNameRemove||className,progress));break;default:cancellations.push(animation.fn(element,progress));break;}});if(cancellations&&cancellations.length===0)allCompleteFn();}return{node:node,event:animationEvent,className:className,isClassBased:isClassBased,isSetClassOperation:isSetClassOperation,before:function(allCompleteFn){beforeComplete=allCompleteFn;run(before,beforeCancel,function(){beforeComplete=noop;allCompleteFn();});},after:function(allCompleteFn){afterComplete=allCompleteFn;run(after,afterCancel,function(){afterComplete=noop;allCompleteFn();});},cancel:function(){if(beforeCancel){forEach(beforeCancel,function(cancelFn){(cancelFn||noop)(true);});beforeComplete(true);}if(afterCancel){forEach(afterCancel,function(cancelFn){(cancelFn||noop)(true);});afterComplete(true);}}};}return{enter:function(element,parentElement,afterElement,doneCallback){element=angular.element(element);parentElement=prepareElement(parentElement);afterElement=prepareElement(afterElement);blockElementAnimations(element);$delegate.enter(element,parentElement,afterElement);$rootScope.$$postDigest(function(){element=stripCommentsFromElement(element);performAnimation('enter','ng-enter',element,parentElement,afterElement,noop,doneCallback);});},leave:function(element,doneCallback){element=angular.element(element);cancelChildAnimations(element);blockElementAnimations(element);$rootScope.$$postDigest(function(){performAnimation('leave','ng-leave',stripCommentsFromElement(element),null,null,function(){$delegate.leave(element);},doneCallback);});},move:function(element,parentElement,afterElement,doneCallback){element=angular.element(element);parentElement=prepareElement(parentElement);afterElement=prepareElement(afterElement);cancelChildAnimations(element);blockElementAnimations(element);$delegate.move(element,parentElement,afterElement);$rootScope.$$postDigest(function(){element=stripCommentsFromElement(element);performAnimation('move','ng-move',element,parentElement,afterElement,noop,doneCallback);});},addClass:function(element,className,doneCallback){element=angular.element(element);element=stripCommentsFromElement(element);performAnimation('addClass',className,element,null,null,function(){$delegate.addClass(element,className);},doneCallback);},removeClass:function(element,className,doneCallback){element=angular.element(element);element=stripCommentsFromElement(element);performAnimation('removeClass',className,element,null,null,function(){$delegate.removeClass(element,className);},doneCallback);},setClass:function(element,add,remove,doneCallback){element=angular.element(element);element=stripCommentsFromElement(element);performAnimation('setClass',[add,remove],element,null,null,function(){$delegate.setClass(element,add,remove);},doneCallback);},enabled:function(value,element){switch(arguments.length){case 2:if(value)cleanup(element);else{var data=element.data(NG_ANIMATE_STATE)||{};data.disabled=true;element.data(NG_ANIMATE_STATE,data);}break;case 1:rootAnimateState.disabled=!value;break;default:value=!rootAnimateState.disabled;break;}return !!value;}};function performAnimation(animationEvent,className,element,parentElement,afterElement,domOperation,doneCallback){var runner=animationRunner(element,animationEvent,className);if(!runner){fireDOMOperation();fireBeforeCallbackAsync();fireAfterCallbackAsync();closeAnimation();return;}className=runner.className;var elementEvents=angular.element._data(runner.node);elementEvents=elementEvents&&elementEvents.events;if(!parentElement)parentElement=afterElement?afterElement.parent():element.parent();var ngAnimateState=element.data(NG_ANIMATE_STATE)||{};var runningAnimations=ngAnimateState.active||{};var totalActiveAnimations=ngAnimateState.totalActive||0;var lastAnimation=ngAnimateState.last;var skipAnimations;if(runner.isClassBased)skipAnimations=ngAnimateState.running||ngAnimateState.disabled||(lastAnimation&&!lastAnimation.isClassBased);if(skipAnimations||animationsDisabled(element,parentElement)){fireDOMOperation();fireBeforeCallbackAsync();fireAfterCallbackAsync();closeAnimation();return;}var skipAnimation=false;if(totalActiveAnimations>0){var animationsToCancel=[];if(!runner.isClassBased)if(animationEvent=='leave'&&runningAnimations['ng-leave'])skipAnimation=true;else{for(var klass in runningAnimations){animationsToCancel.push(runningAnimations[klass]);cleanup(element,klass);}runningAnimations={};totalActiveAnimations=0;}else if(lastAnimation.event=='setClass'){animationsToCancel.push(lastAnimation);cleanup(element,className);}else if(runningAnimations[className]){var current=runningAnimations[className];if(current.event==animationEvent)skipAnimation=true;else{animationsToCancel.push(current);cleanup(element,className);}}if(animationsToCancel.length>0)forEach(animationsToCancel,function(operation){operation.cancel();});}if(runner.isClassBased&&!runner.isSetClassOperation&&!skipAnimation)skipAnimation=(animationEvent=='addClass')==element.hasClass(className);if(skipAnimation){fireDOMOperation();fireBeforeCallbackAsync();fireAfterCallbackAsync();fireDoneCallbackAsync();return;}if(animationEvent=='leave')element.one('$destroy',function(e){var element=angular.element(this);var state=element.data(NG_ANIMATE_STATE);if(state){var activeLeaveAnimation=state.active['ng-leave'];if(activeLeaveAnimation){activeLeaveAnimation.cancel();cleanup(element,'ng-leave');}}});element.addClass(NG_ANIMATE_CLASS_NAME);var localAnimationCount=globalAnimationCounter++;totalActiveAnimations++;runningAnimations[className]=runner;element.data(NG_ANIMATE_STATE,{last:runner,active:runningAnimations,index:localAnimationCount,totalActive:totalActiveAnimations});fireBeforeCallbackAsync();runner.before(function(cancelled){var data=element.data(NG_ANIMATE_STATE);cancelled=cancelled||!data||!data.active[className]||(runner.isClassBased&&data.active[className].event!=animationEvent);fireDOMOperation();if(cancelled===true)closeAnimation();else{fireAfterCallbackAsync();runner.after(closeAnimation);}});function fireDOMCallback(animationPhase){var eventName='$animate:'+animationPhase;if(elementEvents&&elementEvents[eventName]&&elementEvents[eventName].length>0)$$asyncCallback(function(){element.triggerHandler(eventName,{event:animationEvent,className:className});});}function fireBeforeCallbackAsync(){fireDOMCallback('before');}function fireAfterCallbackAsync(){fireDOMCallback('after');}function fireDoneCallbackAsync(){fireDOMCallback('close');if(doneCallback)$$asyncCallback(function(){doneCallback();});}function fireDOMOperation(){if(!fireDOMOperation.hasBeenRun){fireDOMOperation.hasBeenRun=true;domOperation();}}function closeAnimation(){if(!closeAnimation.hasBeenRun){closeAnimation.hasBeenRun=true;var data=element.data(NG_ANIMATE_STATE);if(data)if(runner&&runner.isClassBased)cleanup(element,className);else{$$asyncCallback(function(){var data=element.data(NG_ANIMATE_STATE)||{};if(localAnimationCount==data.index)cleanup(element,className,animationEvent);});element.data(NG_ANIMATE_STATE,data);}fireDoneCallbackAsync();}}}function cancelChildAnimations(element){var node=extractElementNode(element);if(node){var nodes=angular.isFunction(node.getElementsByClassName)?node.getElementsByClassName(NG_ANIMATE_CLASS_NAME):node.querySelectorAll('.'+NG_ANIMATE_CLASS_NAME);forEach(nodes,function(element){element=angular.element(element);var data=element.data(NG_ANIMATE_STATE);if(data&&data.active)forEach(data.active,function(runner){runner.cancel();});});}}function cleanup(element,className){if(isMatchingElement(element,$rootElement)){if(!rootAnimateState.disabled){rootAnimateState.running=false;rootAnimateState.structural=false;}}else if(className){var data=element.data(NG_ANIMATE_STATE)||{};var removeAnimations=className===true;if(!removeAnimations&&data.active&&data.active[className]){data.totalActive--;delete data.active[className];}if(removeAnimations||!data.totalActive){element.removeClass(NG_ANIMATE_CLASS_NAME);element.removeData(NG_ANIMATE_STATE);}}}function animationsDisabled(element,parentElement){if(rootAnimateState.disabled)return true;if(isMatchingElement(element,$rootElement))return rootAnimateState.running;var allowChildAnimations,parentRunningAnimation,hasParent;do{if(parentElement.length===0)break;var isRoot=isMatchingElement(parentElement,$rootElement);var state=isRoot?rootAnimateState:(parentElement.data(NG_ANIMATE_STATE)||{});if(state.disabled)return true;if(isRoot)hasParent=true;if(allowChildAnimations!==false){var animateChildrenFlag=parentElement.data(NG_ANIMATE_CHILDREN);if(angular.isDefined(animateChildrenFlag))allowChildAnimations=animateChildrenFlag;}parentRunningAnimation=parentRunningAnimation||state.running||(state.last&&!state.last.isClassBased);}while(parentElement=parentElement.parent());return !hasParent||(!allowChildAnimations&&parentRunningAnimation);}}]);$animateProvider.register('',['$window','$sniffer','$timeout','$$animateReflow',function($window,$sniffer,$timeout,$$animateReflow){var CSS_PREFIX='',TRANSITION_PROP,TRANSITIONEND_EVENT,ANIMATION_PROP,ANIMATIONEND_EVENT;if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){CSS_PREFIX='-webkit-';TRANSITION_PROP='WebkitTransition';TRANSITIONEND_EVENT='webkitTransitionEnd transitionend';}else{TRANSITION_PROP='transition';TRANSITIONEND_EVENT='transitionend';}if(window.onanimationend===undefined&&window.onwebkitanimationend!==undefined){CSS_PREFIX='-webkit-';ANIMATION_PROP='WebkitAnimation';ANIMATIONEND_EVENT='webkitAnimationEnd animationend';}else{ANIMATION_PROP='animation';ANIMATIONEND_EVENT='animationend';}var DURATION_KEY='Duration';var PROPERTY_KEY='Property';var DELAY_KEY='Delay';var ANIMATION_ITERATION_COUNT_KEY='IterationCount';var NG_ANIMATE_PARENT_KEY='$$ngAnimateKey';var NG_ANIMATE_CSS_DATA_KEY='$$ngAnimateCSS3Data';var NG_ANIMATE_BLOCK_CLASS_NAME='ng-animate-block-transitions';var ELAPSED_TIME_MAX_DECIMAL_PLACES=3;var CLOSING_TIME_BUFFER=1.5;var ONE_SECOND=1000;var lookupCache={};var parentCounter=0;var animationReflowQueue=[];var cancelAnimationReflow;function clearCacheAfterReflow(){if(!cancelAnimationReflow)cancelAnimationReflow=$$animateReflow(function(){animationReflowQueue=[];cancelAnimationReflow=null;lookupCache={};});}function afterReflow(element,callback){if(cancelAnimationReflow)cancelAnimationReflow();animationReflowQueue.push(callback);cancelAnimationReflow=$$animateReflow(function(){forEach(animationReflowQueue,function(fn){fn();});animationReflowQueue=[];cancelAnimationReflow=null;lookupCache={};});}var closingTimer=null;var closingTimestamp=0;var animationElementQueue=[];function animationCloseHandler(element,totalTime){var node=extractElementNode(element);element=angular.element(node);animationElementQueue.push(element);var futureTimestamp=Date.now()+totalTime;if(futureTimestamp<=closingTimestamp)return;$timeout.cancel(closingTimer);closingTimestamp=futureTimestamp;closingTimer=$timeout(function(){closeAllAnimations(animationElementQueue);animationElementQueue=[];},totalTime,false);}function closeAllAnimations(elements){forEach(elements,function(element){var elementData=element.data(NG_ANIMATE_CSS_DATA_KEY);if(elementData)(elementData.closeAnimationFn||noop)();});}function getElementAnimationDetails(element,cacheKey){var data=cacheKey?lookupCache[cacheKey]:null;if(!data){var transitionDuration=0;var transitionDelay=0;var animationDuration=0;var animationDelay=0;var transitionDelayStyle;var animationDelayStyle;var transitionDurationStyle;var transitionPropertyStyle;forEach(element,function(element){if(element.nodeType==ELEMENT_NODE){var elementStyles=$window.getComputedStyle(element)||{};transitionDurationStyle=elementStyles[TRANSITION_PROP+DURATION_KEY];transitionDuration=Math.max(parseMaxTime(transitionDurationStyle),transitionDuration);transitionPropertyStyle=elementStyles[TRANSITION_PROP+PROPERTY_KEY];transitionDelayStyle=elementStyles[TRANSITION_PROP+DELAY_KEY];transitionDelay=Math.max(parseMaxTime(transitionDelayStyle),transitionDelay);animationDelayStyle=elementStyles[ANIMATION_PROP+DELAY_KEY];animationDelay=Math.max(parseMaxTime(animationDelayStyle),animationDelay);var aDuration=parseMaxTime(elementStyles[ANIMATION_PROP+DURATION_KEY]);if(aDuration>0)aDuration*=parseInt(elementStyles[ANIMATION_PROP+ANIMATION_ITERATION_COUNT_KEY],10)||1;animationDuration=Math.max(aDuration,animationDuration);}});data={total:0,transitionPropertyStyle:transitionPropertyStyle,transitionDurationStyle:transitionDurationStyle,transitionDelayStyle:transitionDelayStyle,transitionDelay:transitionDelay,transitionDuration:transitionDuration,animationDelayStyle:animationDelayStyle,animationDelay:animationDelay,animationDuration:animationDuration};if(cacheKey)lookupCache[cacheKey]=data;}return data;}function parseMaxTime(str){var maxValue=0;var values=angular.isString(str)?str.split(/\s*,\s*/):[];forEach(values,function(value){maxValue=Math.max(parseFloat(value)||0,maxValue);});return maxValue;}function getCacheKey(element){var parentElement=element.parent();var parentID=parentElement.data(NG_ANIMATE_PARENT_KEY);if(!parentID){parentElement.data(NG_ANIMATE_PARENT_KEY,++parentCounter);parentID=parentCounter;}return parentID+'-'+extractElementNode(element).getAttribute('class');}function animateSetup(animationEvent,element,className,calculationDecorator){var cacheKey=getCacheKey(element);var eventCacheKey=cacheKey+' '+className;var itemIndex=lookupCache[eventCacheKey]?++lookupCache[eventCacheKey].total:0;var stagger={};if(itemIndex>0){var staggerClassName=className+'-stagger';var staggerCacheKey=cacheKey+' '+staggerClassName;var applyClasses=!lookupCache[staggerCacheKey];applyClasses&&element.addClass(staggerClassName);stagger=getElementAnimationDetails(element,staggerCacheKey);applyClasses&&element.removeClass(staggerClassName);}calculationDecorator=calculationDecorator||function(fn){return fn();};element.addClass(className);var formerData=element.data(NG_ANIMATE_CSS_DATA_KEY)||{};var timings=calculationDecorator(function(){return getElementAnimationDetails(element,eventCacheKey);});var transitionDuration=timings.transitionDuration;var animationDuration=timings.animationDuration;if(transitionDuration===0&&animationDuration===0){element.removeClass(className);return false;}element.data(NG_ANIMATE_CSS_DATA_KEY,{running:formerData.running||0,itemIndex:itemIndex,stagger:stagger,timings:timings,closeAnimationFn:noop});var isCurrentlyAnimating=formerData.running>0||animationEvent=='setClass';if(transitionDuration>0)blockTransitions(element,className,isCurrentlyAnimating);if(animationDuration>0&&stagger.animationDelay>0&&stagger.animationDuration===0)blockKeyframeAnimations(element);return true;}function isStructuralAnimation(className){return className=='ng-enter'||className=='ng-move'||className=='ng-leave';}function blockTransitions(element,className,isAnimating){if(isStructuralAnimation(className)||!isAnimating)extractElementNode(element).style[TRANSITION_PROP+PROPERTY_KEY]='none';else element.addClass(NG_ANIMATE_BLOCK_CLASS_NAME);}function blockKeyframeAnimations(element){extractElementNode(element).style[ANIMATION_PROP]='none 0s';}function unblockTransitions(element,className){var prop=TRANSITION_PROP+PROPERTY_KEY;var node=extractElementNode(element);if(node.style[prop]&&node.style[prop].length>0)node.style[prop]='';element.removeClass(NG_ANIMATE_BLOCK_CLASS_NAME);}function unblockKeyframeAnimations(element){var prop=ANIMATION_PROP;var node=extractElementNode(element);if(node.style[prop]&&node.style[prop].length>0)node.style[prop]='';}function animateRun(animationEvent,element,className,activeAnimationComplete){var node=extractElementNode(element);var elementData=element.data(NG_ANIMATE_CSS_DATA_KEY);if(node.getAttribute('class').indexOf(className)==-1||!elementData){activeAnimationComplete();return;}var activeClassName='';forEach(className.split(' '),function(klass,i){activeClassName+=(i>0?' ':'')+klass+'-active';});var stagger=elementData.stagger;var timings=elementData.timings;var itemIndex=elementData.itemIndex;var maxDuration=Math.max(timings.transitionDuration,timings.animationDuration);var maxDelay=Math.max(timings.transitionDelay,timings.animationDelay);var maxDelayTime=maxDelay*ONE_SECOND;var startTime=Date.now();var css3AnimationEvents=ANIMATIONEND_EVENT+' '+TRANSITIONEND_EVENT;var style='',appliedStyles=[];if(timings.transitionDuration>0){var propertyStyle=timings.transitionPropertyStyle;if(propertyStyle.indexOf('all')==-1){style+=CSS_PREFIX+'transition-property: '+propertyStyle+';';style+=CSS_PREFIX+'transition-duration: '+timings.transitionDurationStyle+';';appliedStyles.push(CSS_PREFIX+'transition-property');appliedStyles.push(CSS_PREFIX+'transition-duration');}}if(itemIndex>0){if(stagger.transitionDelay>0&&stagger.transitionDuration===0){var delayStyle=timings.transitionDelayStyle;style+=CSS_PREFIX+'transition-delay: '+prepareStaggerDelay(delayStyle,stagger.transitionDelay,itemIndex)+'; ';appliedStyles.push(CSS_PREFIX+'transition-delay');}if(stagger.animationDelay>0&&stagger.animationDuration===0){style+=CSS_PREFIX+'animation-delay: '+prepareStaggerDelay(timings.animationDelayStyle,stagger.animationDelay,itemIndex)+'; ';appliedStyles.push(CSS_PREFIX+'animation-delay');}}if(appliedStyles.length>0){var oldStyle=node.getAttribute('style')||'';node.setAttribute('style',oldStyle+'; '+style);}element.on(css3AnimationEvents,onAnimationProgress);element.addClass(activeClassName);elementData.closeAnimationFn=function(){onEnd();activeAnimationComplete();};var staggerTime=itemIndex*(Math.max(stagger.animationDelay,stagger.transitionDelay)||0);var animationTime=(maxDelay+maxDuration)*CLOSING_TIME_BUFFER;var totalTime=(staggerTime+animationTime)*ONE_SECOND;elementData.running++;animationCloseHandler(element,totalTime);return onEnd;function onEnd(cancelled){element.off(css3AnimationEvents,onAnimationProgress);element.removeClass(activeClassName);animateClose(element,className);var node=extractElementNode(element);for(var i in appliedStyles)node.style.removeProperty(appliedStyles[i]);}function onAnimationProgress(event){event.stopPropagation();var ev=event.originalEvent||event;var timeStamp=ev.$manualTimeStamp||ev.timeStamp||Date.now();var elapsedTime=parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES));if(Math.max(timeStamp-startTime,0)>=maxDelayTime&&elapsedTime>=maxDuration)activeAnimationComplete();}}function prepareStaggerDelay(delayStyle,staggerDelay,index){var style='';forEach(delayStyle.split(','),function(val,i){style+=(i>0?',':'')+(index*staggerDelay+parseInt(val,10))+'s';});return style;}function animateBefore(animationEvent,element,className,calculationDecorator){if(animateSetup(animationEvent,element,className,calculationDecorator))return function(cancelled){cancelled&&animateClose(element,className);};}function animateAfter(animationEvent,element,className,afterAnimationComplete){if(element.data(NG_ANIMATE_CSS_DATA_KEY))return animateRun(animationEvent,element,className,afterAnimationComplete);else{animateClose(element,className);afterAnimationComplete();}}function animate(animationEvent,element,className,animationComplete){var preReflowCancellation=animateBefore(animationEvent,element,className);if(!preReflowCancellation){clearCacheAfterReflow();animationComplete();return;}var cancel=preReflowCancellation;afterReflow(element,function(){unblockTransitions(element,className);unblockKeyframeAnimations(element);cancel=animateAfter(animationEvent,element,className,animationComplete);});return function(cancelled){(cancel||noop)(cancelled);};}function animateClose(element,className){element.removeClass(className);var data=element.data(NG_ANIMATE_CSS_DATA_KEY);if(data){if(data.running)data.running--;if(!data.running||data.running===0)element.removeData(NG_ANIMATE_CSS_DATA_KEY);}}return{enter:function(element,animationCompleted){return animate('enter',element,'ng-enter',animationCompleted);},leave:function(element,animationCompleted){return animate('leave',element,'ng-leave',animationCompleted);},move:function(element,animationCompleted){return animate('move',element,'ng-move',animationCompleted);},beforeSetClass:function(element,add,remove,animationCompleted){var className=suffixClasses(remove,'-remove')+' '+suffixClasses(add,'-add');var cancellationMethod=animateBefore('setClass',element,className,function(fn){var klass=element.attr('class');element.removeClass(remove);element.addClass(add);var timings=fn();element.attr('class',klass);return timings;});if(cancellationMethod){afterReflow(element,function(){unblockTransitions(element,className);unblockKeyframeAnimations(element);animationCompleted();});return cancellationMethod;}clearCacheAfterReflow();animationCompleted();},beforeAddClass:function(element,className,animationCompleted){var cancellationMethod=animateBefore('addClass',element,suffixClasses(className,'-add'),function(fn){element.addClass(className);var timings=fn();element.removeClass(className);return timings;});if(cancellationMethod){afterReflow(element,function(){unblockTransitions(element,className);unblockKeyframeAnimations(element);animationCompleted();});return cancellationMethod;}clearCacheAfterReflow();animationCompleted();},setClass:function(element,add,remove,animationCompleted){remove=suffixClasses(remove,'-remove');add=suffixClasses(add,'-add');var className=remove+' '+add;return animateAfter('setClass',element,className,animationCompleted);},addClass:function(element,className,animationCompleted){return animateAfter('addClass',element,suffixClasses(className,'-add'),animationCompleted);},beforeRemoveClass:function(element,className,animationCompleted){var cancellationMethod=animateBefore('removeClass',element,suffixClasses(className,'-remove'),function(fn){var klass=element.attr('class');element.removeClass(className);var timings=fn();element.attr('class',klass);return timings;});if(cancellationMethod){afterReflow(element,function(){unblockTransitions(element,className);unblockKeyframeAnimations(element);animationCompleted();});return cancellationMethod;}animationCompleted();},removeClass:function(element,className,animationCompleted){return animateAfter('removeClass',element,suffixClasses(className,'-remove'),animationCompleted);}};function suffixClasses(classes,suffix){var className='';classes=angular.isArray(classes)?classes:classes.split(/\s+/);forEach(classes,function(klass,i){if(klass&&klass.length>0)className+=(i>0?' ':'')+klass+suffix;});return className;}}]);}]);})(window,window.angular);
|