@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 27.7 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _lib=require("../lib");var _schedular=require("../schedular");var _componentInterface=require("../component-interface");var _dependencyManager=require("../dependency-manager");var UNDEF;var isIE8=!_lib.hasSVG,OBJECT="object",CHART="chart",GROUP="group",HTML="html",TEXT="text",PAPER="paper",DISAPPEARING="disappearing",APPEARING="appearing",STRING="string",UPDATING="updating",FUNCTION="function",LINEAR="linear",CHARTSPECIFIC="chartSpecific",GLOBAL="global",DEFAULT="default",HYPHEN_STR="-",STARSTRING="*",durationList={initial:1,update:0,realTimeUpdate:0,resize:0,dispose:0,legendInteraction:0,scroll:0,mouseOut:0,mouseOver:0,default:0,slicing:.25,timenavSqueeze:0,selectedRange:0,timenavScroll:0},transposeAnimationCharts={MSColumn2D:true,MSColumn3D:true,MSBar2D:true,MSBar3D:true,StackedColumn2D:true,StackedColumn3D:true,StackedBar2D:true,StackedBar3D:true,MSStackedColumn2D:true,MSStackedBar2D:true,ScrollColumn2D:true,ScrollMSStackedColumn2D:true,ScrollBar2D:true,ScrollStackedColumn2D:true,ScrollStackedBar2D:true},rulePriorityList=[DEFAULT,GLOBAL,CHARTSPECIFIC],animMap={fadeIn:{opacity:{start:0,end:1}},fadeOut:{opacity:{start:1,end:0}}},callbackMap={fadeIn:function fadeIn(){this&&this.show()},fadeOut:function fadeOut(){this&&this.hide()}},isNull=function isNull(v){return v===null},getRegisteredThemes=function getRegisteredThemes(addedThemes){var themes={},theme;for(var key in addedThemes){if(addedThemes.hasOwnProperty(key)){theme=addedThemes[key];themes[theme.name]=theme}}return themes},fetchRulesFromTheme=function fetchRulesFromTheme(themes,themeList){if(themeList===void 0){themeList=""}var themeArr=themeList.split(","),rules=[];themeArr.forEach((function(v){if(themes[v]&&themes[v].animation){rules.push(themes[v].animation)}}));return rules},shiftAnimTime=function shiftAnimTime(paramsConfig,duration,shiftTime){var config=Object.assign({},paramsConfig),shiftRatio=shiftTime/duration,MAX_SHIFT=.2,diff;if(shiftRatio>MAX_SHIFT){shiftRatio=MAX_SHIFT}diff=config.end-config.start;config.start*=1-shiftRatio;config.start+=shiftRatio;config.end=config.start+(1-shiftRatio)*diff;config.start=Math.round(config.start*100)/100;config.end=Math.round(config.end*100)/100;return config},_applyAnim=function _applyAnim(ob,type,applyCallback){var attrs=animMap[type],key=_lib.BLANKSTRING,origCallback,origAttr={};if(!attrs||!ob||!ob.el||!ob.el[0]){return}for(key in attrs){origAttr[key]=ob.el.attrs[key];if(origAttr[key]===UNDEF){origAttr[key]=null}ob.attrs[key]=attrs[key].end;ob.el.attr(key,attrs[key].start)}origCallback=ob.callback;ob.callback=function callback(){applyCallback&&callbackMap[type]&&callbackMap[type].call(this);origCallback&&origCallback.call&&origCallback.call(this);this.attr(origAttr)}},applyType=function applyType(ob,_type){var i,type=_type,delimeter=HYPHEN_STR,applyCallback=true;if(!type){return}ob.attrs=ob.attrs||{};type=type.split(delimeter);if(~type.indexOf("nc")){applyCallback=false}for(i=type.length;i--;){_applyAnim(ob,type[i],applyCallback)}return ob},animateEl=function animateEl(el,attrs,callback,animConfig,dummyObj,animObj,animationDuration,effect){el.animateWith(dummyObj,animObj,attrs,animationDuration,effect,callback,animConfig)},execPreAnimFns=function execPreAnimFns(arr){var i=0,ii=arr.length;for(i=0;i<ii;++i){arr[i].fn&&arr[i].fn.call(arr[i].el)}},ruleReducer=function ruleReducer(animations){var ob={};for(var definition in animations){if(animations.hasOwnProperty(definition)&&definition!=="__esModule"){var animDef=animations[definition];merge(ob,animDef)}}return ob},merge=function merge(source,sink){for(var def in sink){if(sink.hasOwnProperty(def)){!source[def]&&(source[def]=[]);source[def].push(sink[def])}}},isFunction=function isFunction(arg){return typeof arg===FUNCTION};function hasAnimation(arr,animationName){var retBool=false,objBool,animObj,i,ii,j,jj;if(!arr){return false}for(i=0,ii=arr.length;i<ii;i+=1){animObj=arr[i];if(!Array.isArray(animObj)){objBool=false;if(animationName.indexOf(animObj.name)!==-1){objBool=true}else if(animObj.child){objBool=animObj.hasAnimation=hasAnimation(animObj.child,animationName)}retBool=retBool||objBool;animObj.hasAnimation=objBool}else{for(j=0,jj=arr[i].length;j<jj;j+=1){animObj=arr[i][j];objBool=false;if(animationName.indexOf(animObj.name)!==-1){objBool=true}else if(animObj.child){objBool=animObj.hasAnimation=hasAnimation(animObj.child,animationName)}retBool=retBool||objBool;animObj.hasAnimation=objBool}}}return retBool}function buildDynamicRules(arr,start,end,workingRules){var animObj,addTime,addTimeCounter,diff,i,ii=arr.length,s=0,durationSum=0,e=start;addTime=0;addTimeCounter=0;for(i=0;i<ii;i+=1){animObj=arr[i];if(!animObj.hasAnimation&&animObj.collapsible!==false){addTime+=animObj.duration}else{addTimeCounter+=1}durationSum+=animObj.duration}addTime/=addTimeCounter;for(i=0;i<ii;i+=1){animObj=arr[i];if(!animObj.hasAnimation){continue}s=e;diff=end-start;e=s+(animObj.duration/durationSum+addTime)*diff;workingRules[animObj.name]={start:s,end:e,effect:animObj.effect,transition:animObj.transition};animObj.child&&buildWorkingRule(animObj.child,s,e,workingRules)}}function buildStaticRules(obj,start,end,workingRules){var diff,s,e;s=obj.start;e=obj.end;diff=end-start;s=start+s*diff;e=start+e*diff;workingRules[obj.name]={start:s,end:e,effect:obj.effect,transition:obj.transition};obj.child&&buildWorkingRule(obj.child,s,e,workingRules)}function buildWorkingRule(arr,start,end,workingRules){var len=arr.length,i,arrItem;for(i=0;i<len;i++){arrItem=arr[i];Array.isArray(arrItem)?buildDynamicRules(arrItem,start,end,workingRules):buildStaticRules(arrItem,start,end,workingRules)}}animMap.fadein=animMap.fadeIn;animMap.fadeout=animMap.fadeOut;var AnimationManager=function(_ComponentInterface){function AnimationManager(){var _this;_this=_ComponentInterface.call(this)||this;var animationManager=_this;animationManager._removedGraphics=[];animationManager._animCallBack=function(){if(!animationManager.getState("removed")&&!this.removed){var currAnimState=animationManager.getAnimationState();animationManager._removeElems();animationManager.reset();animationManager.fireEvent("animationComplete",{currAnimState:currAnimState})}};animationManager.startAnimation=function(){animationManager.kickStart();animationManager.animate()};return _this}(0,_inheritsLoose2.default)(AnimationManager,_ComponentInterface);var _proto=AnimationManager.prototype;_proto.getType=function getType(){return"animationManager"};_proto.getName=function getName(){return"animationManager"};_proto.stopAnimation=function stopAnimation(){if(!this.getState("chartAnimating")){return}var animationManager=this,dummyObj,config=animationManager.config,animationObj=config.animationObj,duration=animationObj&&animationObj.duration;if(duration){dummyObj=animationManager.getGraphicalElement().dummyObj;dummyObj&&dummyObj.stop(UNDEF,true,true)}else if(duration===0){animationManager.removeJob("anim-callBack");animationManager._animCallBack()}};_proto.kickStart=function kickStart(){var animationManager=this,config=animationManager.config,graphics=animationManager.getGraphicalElement(),paper=animationManager.getFromEnv(PAPER),animation=config.animationObj,dummyObj,animationDuration,animObj,animType=config.animationeffect;animationDuration=animation.duration;animation.animObj=animObj=(0,_dependencyManager.getDep)("redraphael","plugin").animation({x:0},animationDuration,animType,animationManager._animCallBack,true);animation.animType=animType;if(!(dummyObj=graphics.dummyObj)){dummyObj=paper.rect({x:100,y:0,width:10,height:30});animationManager.addGraphicalElement("dummyObj",dummyObj);dummyObj.hide()}else{dummyObj.attr({x:100})}animation.dummyObj=graphics.dummyObj;dummyObj.stop(UNDEF,true,true);animationManager.fireEvent("animationStart",{duration:animationDuration});animationManager.setState("chartAnimating",true);dummyObj.animate(animObj)};_proto.setAnimationState=function setAnimationState(state){if(state===void 0){state=UNDEF}if(state){this.stopAnimation()}this.config.__state=state;this._setAnimDuration(state)};_proto.getAnimationState=function getAnimationState(){return this.config&&this.config.__state};_proto._setAnimDuration=function _setAnimDuration(state){if(state===void 0){state=DEFAULT}var animationManager=this,config=animationManager.config,animationObj=config.animationObj||(config.animationObj={}),animationDuration=config.animationDuration||(config.animationDuration={}),chart=animationManager.getFromEnv(CHART),isTransposeAnimation=chart.config.transposeAxis&&state==="legendInteraction"&&transposeAnimationCharts[chart.getName()],chartAttrs=chart.getFromEnv("chart-attrib")||{},currStateAnimDurationAttr=state+"AnimDuration",killSwitch=config.killSwitch,currStateAnimDuration=killSwitch?0:(animationDuration[currStateAnimDurationAttr]||chartAttrs[isTransposeAnimation?"transposeanimation":currStateAnimDurationAttr.toLowerCase()]||(isTransposeAnimation?.25:AnimationManager.getFallbackAnimDuration(state)))*1e3;if(animationObj){animationObj[currStateAnimDurationAttr]=currStateAnimDuration;animationObj.duration=+currStateAnimDuration}};_proto.configureAttributes=function configureAttributes(){var animationManager=this,chart=animationManager.getFromEnv(CHART),chartConfig=chart.config,animationManagerConfig=animationManager.config,chartAttrs=chart.getFromEnv("chart-attrib")||{};animationManagerConfig.killSwitch=!(0,_lib.pluckNumber)(chartAttrs.animation,chartConfig.animation,1);animationManagerConfig.animationeffect=chartConfig.animationeffect||"linear";animationManager.invokeAnimationRules();!animationManagerConfig.workingRules&&(animationManagerConfig.workingRules={});!animationManagerConfig.animateArr&&(animationManagerConfig.animateArr=[]);!animationManagerConfig.animationName&&(animationManagerConfig.animationName=[])};_proto.invokeAnimationRules=function invokeAnimationRules(){var animationManager=this,chart=animationManager.getFromEnv(CHART),chartAttrs=chart.getFromEnv("chart-attrib")||{},chartConfig=chart.config||{},config=animationManager.config,chartInstance=chart.getFromEnv("chartInstance"),chartAnimRule=chartInstance.args.animation,globalTheme=chart.getFromEnv("core-options").defaultTheme,themes=getRegisteredThemes((0,_dependencyManager.getDepsByType)("theme")),global=(chart.getFromEnv("core-options")._globalAnimationRule||[]).concat(fetchRulesFromTheme(themes,globalTheme)),chartSpecific=(chartAnimRule&&[chartAnimRule]||[]).concat(fetchRulesFromTheme(themes,chartConfig.theme)),animationDuration;config.animationRules={global:ruleReducer(global.map((function(v){return v&&v.rule})).filter((function(v){return v}))),chartSpecific:ruleReducer(chartSpecific.map((function(v){return v&&v.rule})).filter((function(v){return v}))),default:ruleReducer((0,_dependencyManager.getDepsByType)("animationRule"))};config.animationDuration=animationDuration={};global.map((function(v){return Object.assign(animationDuration,v.duration)}));chartSpecific.map((function(v){return Object.assign(animationDuration,v.duration)}));animationDuration.initialAnimDuration=(0,_lib.pluckNumber)(animationDuration.initialAnimDuration,chartAttrs.initialanimduration,chartAttrs.animationduration);animationManager.config.slots=AnimationManager.getFallbackAnimTimeSlots().concat([].concat.apply([],global.map((function(v){return v.slots}))).filter((function(v){return v}))).concat([].concat.apply([],chartSpecific.map((function(v){return v.slots}))).filter((function(v){return v})))};_proto.reInitialize=function reInitialize(){var animationManager=this,config=animationManager.config,animationObj=config.animationObj,duration=animationObj.duration;animationManager.setState("initialized",true);if(duration){animationManager.addJob("start-animation",animationManager.startAnimation,_schedular.priorityList.animation)}else{animationManager.fireEvent("animationStart",{duration:duration});animationManager.setState("chartAnimating",true);animationManager.addJob("anim-callBack",animationManager._animCallBack,_schedular.priorityList.animation)}};_proto.reset=function reset(){var animationManager=this;animationManager.setState("initialized",false);animationManager.config&&animationManager.config.animateArr&&(animationManager.config.animateArr.length=0);animationManager.setState("chartAnimating",false);animationManager.setAnimationState()};_proto.registerAnimObj=function registerAnimObj(ob){var key;for(key in ob){this.registerAnimation(ob[key],key)}};_proto.getFinalSlots=function getFinalSlots(){var animationManager=this,animationManagerConfig=animationManager.config,appliedRules=animationManagerConfig.slots,workingRules=animationManagerConfig.workingRules={},animationName=animationManagerConfig.animationName;hasAnimation(appliedRules,animationName);buildWorkingRule(appliedRules,0,1,workingRules);workingRules["default"]={start:0,end:1};return workingRules};_proto.registerOne=function registerOne(ob,key){this.registerAnimation([{data:[ob]}],key)};_proto.registerAnimation=function registerAnimation(attrObj,component){if(attrObj===void 0){attrObj=[]}var i,hasData=false,attrObjItem,ln;for(i=0,ln=attrObj.length;i<ln;i+=1){attrObjItem=attrObj[i];if(attrObjItem.data&&attrObjItem.data.length){this.config.animateArr.push((attrObjItem.component=component,attrObjItem));hasData=true}}hasData&&this.config.animationName.push(component);!this.getState("initialized")&&this.reInitialize()};_proto.onAnimationComplete=function onAnimationComplete(callback){var animationManager=this;animationManager.addEventListener("animationComplete",(function(e){callback();e.detachHandler()}))};AnimationManager.removeOpacityFromGroup=function removeOpacityFromGroup(el,attr){if(attr&&isIE8&&(el===GROUP||el.type===GROUP)){delete attr.opacity}};_proto.setAnimation=function setAnimation(inputJSON){if(inputJSON===void 0){inputJSON={}}var animationManager=this,config=animationManager.config,animationObj=config.animationObj,element=inputJSON.el,componentFinalAttr=inputJSON.attr||{},finalAttr,actualFinalAttr={},actualInitialAttr={},initialAttr,currAttr,attr,callBackFn=function callBackFn(_attr,isLastSlot,animatableAttrs,container){return function(){animatableAttrs.callback&&animatableAttrs.callback.call(this);_attr&&this.attr(_attr);isLastSlot&&inputJSON.callback&&inputJSON.callback.call(this);container&&this.appendTo(container)}},hookFn=function hookFn(_attr,animatableAttrs,container){return function(){animatableAttrs.hookFn&&animatableAttrs.hookFn.call(this);_attr&&this.attr(_attr);container&&this.appendTo(container)}},data=[],datum,applyAnimation=animationObj.duration,i,changedAttr,length,allAnimatableAttrs,createInitalAttr,elemOwnAttr,isLastSlot,animatableAttrs,slotGroupChange,animating=animationManager.getState("chartAnimating"),groupChangeReq=typeof element===OBJECT&&inputJSON.container&&element.parent!==inputJSON.container;animationManager.getState("chartAnimating")&&config.animationObj&&config.animationObj.duration&&animationManager.setAnimationState("default");if(!animating&&applyAnimation&&(allAnimatableAttrs=animationManager.getAnimAttributes(inputJSON))){length=allAnimatableAttrs.length;slotGroupChange=false;createInitalAttr=inputJSON.state===APPEARING||typeof element===STRING;elemOwnAttr=!createInitalAttr&&element.attrs;changedAttr={};for(i=0;i<length;i++){isLastSlot=i===length-1;datum=data[i]={};animatableAttrs=allAnimatableAttrs[i];finalAttr=animatableAttrs.finalAttr;initialAttr=animatableAttrs.initialAttr;AnimationManager.removeOpacityFromGroup(inputJSON.el,initialAttr);AnimationManager.removeOpacityFromGroup(inputJSON.el,finalAttr);for(attr in initialAttr){changedAttr[attr]=initialAttr[attr];if(actualInitialAttr[attr]===UNDEF){actualInitialAttr[attr]=initialAttr[attr]}}for(attr in finalAttr){changedAttr[attr]=finalAttr[attr];if(createInitalAttr&&actualInitialAttr[attr]===UNDEF){actualInitialAttr[attr]=finalAttr[attr]}}datum.attrs=finalAttr;datum.transition=animatableAttrs.transition;datum.effect=animatableAttrs.effect;datum.animConfig=[animatableAttrs.startEnd];animatableAttrs.callback&&(datum.callback=animatableAttrs.callback);if(slotGroupChange=groupChangeReq&&animatableAttrs.changeGroup){groupChangeReq=false}if(isLastSlot){if(createInitalAttr){for(attr in componentFinalAttr){if(actualInitialAttr[attr]===UNDEF){actualInitialAttr[attr]=componentFinalAttr[attr]}}}for(attr in componentFinalAttr){currAttr=componentFinalAttr[attr];if((changedAttr[attr]||!createInitalAttr)&&changedAttr[attr]!==currAttr){if(finalAttr&&finalAttr[attr]===UNDEF){finalAttr[attr]=currAttr}else{actualFinalAttr[attr]=currAttr}}}for(attr in changedAttr){if(actualFinalAttr[attr]===UNDEF){currAttr=(0,_lib.getFirstValue)(componentFinalAttr[attr],elemOwnAttr[attr]);if(changedAttr[attr]!==currAttr){if(finalAttr&&finalAttr[attr]===UNDEF&&currAttr!==UNDEF){finalAttr[attr]=currAttr}else{actualFinalAttr[attr]=currAttr}}}}if(!finalAttr){datum.attrs=actualFinalAttr}datum.callback=callBackFn((finalAttr||initialAttr)&&actualFinalAttr,isLastSlot,animatableAttrs,groupChangeReq&&inputJSON.container);element=animationManager.setAttributes(element,{attr:actualInitialAttr,inputJSON:inputJSON})}if(initialAttr||animatableAttrs.hookFn||slotGroupChange){datum.animConfig[0].hookFn=hookFn((!createInitalAttr||i)&&initialAttr,animatableAttrs,slotGroupChange&&inputJSON.container)}}for(i=0;i<length;i++){data[i].el=element.el;animationManager.registerAnimation([{data:[data[i]]}],allAnimatableAttrs[i].slot)}}else if(!animating){animationManager.registerAnimation();element=animationManager.setAttributes(element,{attr:componentFinalAttr,inputJSON:inputJSON,groupChangeReq:groupChangeReq,immediate:true})}else{element=animationManager.setAttributes(element,{attr:componentFinalAttr,inputJSON:inputJSON,groupChangeReq:groupChangeReq,immediate:true})}return element.removed?null:element.el};_proto._removeElems=function _removeElems(){if(!this.getFromEnv(PAPER)||this.getFromEnv(PAPER).removed){return}var component=this;component._removedGraphics.forEach((function(v){return v.remove&&v.remove()}));component._removedGraphics.length=0};_proto.removeElement=function removeElement(el,immediate){var animationManager=this;if(immediate){el.remove()}else{animationManager._removedGraphics.push(el)}return null};AnimationManager._ruleSelectorQueryBuilder=function _ruleSelectorQueryBuilder(info,isForState){if(isForState===void 0){isForState=true}var label=info.label,state=info.state,component=info.component,componentType=component.getType(),componentName=component.getName();if(isForState){var dummy=["*","*.*","*.*.*"],wildchar=["*.*."+componentName,"*."+componentType+".*","*."+componentType+"."+componentName];if(state==="*"){return dummy.concat(wildchar)}return dummy.concat(wildchar,[state+".*",state+".*.*",state+".*."+componentName,state+"."+componentType+".*",state+"."+componentType+"."+componentName])}return[label+"."+state,label+".*","*."+state,"*.*","*"]};_proto._getRulesByState=function _getRulesByState(info){var animationManager=this,component=info.component,selectedRule,stateSpecRule,rules,animRulesForComp,state=animationManager.getAnimationState()||STARSTRING,ruleSelectors=AnimationManager._ruleSelectorQueryBuilder(Object.assign(info,{state:state}));animRulesForComp=component.getState("animRules")||{};if(!(selectedRule=animRulesForComp[state])){stateSpecRule=animRulesForComp[state]={};rules=animationManager.config.animationRules;rulePriorityList.forEach((function(ruleType){var rule=rules[ruleType];rule&&ruleSelectors.forEach((function(v){if(rule[v]){if(Array.isArray(rule[v])){rule[v].forEach((function(prop){stateSpecRule=animRulesForComp[state]=isNull(prop)?null:Object.assign(stateSpecRule||{},isFunction(prop)?prop.call(component):prop)}))}else{stateSpecRule=animRulesForComp[state]=isNull(rule[v])?null:Object.assign(stateSpecRule||{},isFunction(rule[v])?rule[v].call(component):rule[v])}}}))}));component.setState("animRules",animRulesForComp);!component.getState("ruleFlushAttached")&&component.addExtEventListener("predraw",(function(){component.setState("animRules",UNDEF);component.setState("ruleFlushAttached",true)}),component.getFromEnv(CHART));return stateSpecRule}return selectedRule};AnimationManager._getRulesByElement=function _getRulesByElement(rules,info){var selectedRule,ruleSelectors=AnimationManager._ruleSelectorQueryBuilder(info,false);ruleSelectors.forEach((function(v){if(selectedRule===UNDEF){selectedRule=rules[v]}}));return selectedRule};_proto.getAnimAttributes=function getAnimAttributes(inputJSON){var animationManager=this,component=inputJSON.component||animationManager.getFromEnv(CHART),label=inputJSON.label||(typeof inputJSON.el==="object"?inputJSON.el.type:inputJSON.el),state=inputJSON.state,componentRules=animationManager._getRulesByState({label:label,component:component}),rules,currentRule,returnObj=[],currentReturnObj,i,len;if(isNull(componentRules)){return}!state&&(state=typeof inputJSON.el===STRING?APPEARING:inputJSON.attr?UPDATING:DISAPPEARING);rules=AnimationManager._getRulesByElement(componentRules,{component:component,state:state,label:label});if(isNull(rules)){return}if(!rules){return AnimationManager.getFallbackAnimRule(inputJSON)}if(isFunction(rules)){rules=rules.call(component,inputJSON);if(isNull(rules)){return}}len=rules.length;for(i=0;i<len;i++){currentRule=rules[i];currentReturnObj={};currentRule.initialAttr&&(currentReturnObj.initialAttr=isFunction(currentRule.initialAttr)?currentRule.initialAttr.call(component,inputJSON):Object.assign({},currentRule.initialAttr));currentRule.finalAttr&&(currentReturnObj.finalAttr=isFunction(currentRule.finalAttr)?currentRule.finalAttr.call(component,inputJSON):Object.assign({},currentRule.finalAttr));currentReturnObj.startEnd=isFunction(currentRule.startEnd)?currentRule.startEnd.call(component,inputJSON):currentRule.startEnd?Object.assign({},currentRule.startEnd):{start:0,end:1};currentReturnObj.slot=currentRule.slot||"default";currentReturnObj.callback=currentRule.callback;currentReturnObj.hookFn=currentRule.hookFn;currentReturnObj.transition=currentRule.transition;currentReturnObj.effect=currentRule.effect||"linear";currentRule.groupChange&&(currentReturnObj.groupChange=true);returnObj.push(currentReturnObj)}return returnObj};AnimationManager.getFallbackAnimRule=function getFallbackAnimRule(inputJSON){if(inputJSON.state===APPEARING||typeof inputJSON.el===STRING){if(inputJSON.el!==GROUP){return[{initialAttr:{opacity:0},finalAttr:{opacity:(0,_lib.pluckNumber)(inputJSON.attr&&inputJSON.attr.opacity,1)},startEnd:{start:0,end:1}}]}}else{if(inputJSON.state===UPDATING||inputJSON.attr){return[{startEnd:{start:0,end:1}}]}if(inputJSON.el.type!==GROUP){return[{initialAttr:{opacity:1},finalAttr:{opacity:0},startEnd:{start:0,end:1}}]}}};AnimationManager.getFallbackAnimDuration=function getFallbackAnimDuration(state){return durationList[state]||0};AnimationManager.getFallbackAnimTimeSlots=function getFallbackAnimTimeSlots(){return[{name:"_default",start:0,end:1,child:[[{name:"initial",duration:.125},{name:"middle",duration:.75,child:[[{name:"axis",duration:.25},{name:"plot",duration:.75}]]},{name:"final",duration:.125}]]}]};_proto.createElement=function createElement(_element,attr,inputJSON){if(attr===void 0){attr={}}var animationManager=this,element=_element,paper=animationManager.getFromEnv(PAPER);if(!paper){paper=animationManager.getFromEnv(CHART).getFromEnv(PAPER);animationManager.addToEnv(PAPER,paper)}if(element===GROUP){element=paper.group(inputJSON.attr&&inputJSON.attr.name||"",inputJSON.container);element.attr(attr)}else if(element===HTML){element=paper.html(inputJSON.attr.type,attr,inputJSON.css,inputJSON.container)}else{if(element===TEXT&&inputJSON.css){return paper[inputJSON.el](attr,inputJSON.css,inputJSON.container)}element=paper[inputJSON.el](attr,inputJSON.container)}return element};_proto.setAttributes=function setAttributes(_element,props){var animationManager=this,element=_element,attr=props.attr,inputJSON=props.inputJSON||{},removeEl;if(typeof element==="string"){element=animationManager.createElement(element,attr,inputJSON)}else if(Object.keys(attr).length!==0){element.attr(attr)}else if(!inputJSON.attr||inputJSON.state===DISAPPEARING){removeEl=!inputJSON.doNotRemove}if(!removeEl){inputJSON.css&&element.css(inputJSON.css);props.groupChangeReq&&element.appendTo(inputJSON.container);props.immediate&&inputJSON.callback&&inputJSON.callback.call(element)}else{animationManager.removeElement(element,props.immediate)}return{el:element,removed:removeEl}};_proto.prepareAnimateArr=function prepareAnimateArr(animateArr){var thisAnimateObj,rules,component,i,ln,j,jj,transition,animEl,preAnimArr=this.config.preAnimArr=[];rules=this.getFinalSlots();function manageStartEnd(obj,_component){var refComponent,diff,retObj={start:0,end:1},key;for(key in obj){if(obj.hasOwnProperty(key)){if(obj[key].syncWith&&!rules[obj[key].syncWith]){continue}refComponent=obj[key].syncWith;retObj.start=obj[key].start===UNDEF?0:obj[key].start;retObj.end=obj[key].end===UNDEF?1:obj[key].end;retObj.hookFn=obj[key].hookFn||obj.hookFn;retObj.smartMorph=obj[key].smartMorph||obj.smartMorph;break}}refComponent=refComponent&&rules[refComponent]?refComponent:_component&&rules[_component]?_component:"default";diff=rules[refComponent].end-rules[refComponent].start;retObj.start=rules[refComponent].start+retObj.start*diff;retObj.end=rules[refComponent].start+retObj.end*diff;return retObj}for(i=0,ln=animateArr.length;i<ln;i+=1){thisAnimateObj=animateArr[i];component=thisAnimateObj.component;for(j=0,jj=thisAnimateObj.data.length;j<jj;j+=1){animEl=thisAnimateObj.data[j];transition=animEl.transition||rules[component]&&rules[component].transition;if(transition){applyType(animEl,transition)}if(animEl.preAnimFn){preAnimArr.push({el:animEl.el,fn:animEl.preAnimFn})}animEl.animConfig&&(animEl.animConfig=manageStartEnd(animEl.animConfig,component))}thisAnimateObj.effect||rules[component]&&(thisAnimateObj.effect=rules[component].effect);thisAnimateObj.animConfig||(thisAnimateObj.animConfig=[{}]);thisAnimateObj.animConfig=manageStartEnd(thisAnimateObj.animConfig,component)}};_proto.animate=function animate(){var animationManager=this,config=animationManager.config,animateArr=animationManager.config.animateArr,animationObj=config.animationObj,animObj=animationObj.animObj,dummyObj=animationObj.dummyObj,animationDuration=animationObj.duration,effect,shiftTime=180,thisAnimateObj,animConfig,callback,i,ln,j,jj;animationManager.prepareAnimateArr(animateArr);execPreAnimFns(animationManager.config.preAnimArr);for(i=0,ln=animateArr.length;i<ln;i+=1){thisAnimateObj=animateArr[i];for(j=0,jj=thisAnimateObj.data.length-1;j<=jj;j+=1){animConfig=thisAnimateObj.data[j].animConfig||thisAnimateObj.animConfig;animConfig=shiftAnimTime(animConfig,animationDuration,shiftTime);effect=thisAnimateObj.data[j].effect||thisAnimateObj.effect||LINEAR;callback=i===ln?thisAnimateObj.callback||thisAnimateObj.data[j].callback:thisAnimateObj.data[j].callback;thisAnimateObj.data[j].preAttrs&&thisAnimateObj.data[j].el.attr(thisAnimateObj.data[j].preAttrs);thisAnimateObj.data[j].el&&animateEl(thisAnimateObj.data[j].el,thisAnimateObj.data[j].attrs,callback||null,animConfig,dummyObj,animObj,animationDuration,effect)}}};_proto.remove=function remove(option){this.removeAllJobs();if(option.instant){this.getGraphicalElement("dummyObj")&&this.getGraphicalElement("dummyObj").remove()}_ComponentInterface.prototype.remove.call(this,option)};return AnimationManager}(_componentInterface.ComponentInterface);var _default=exports.default=AnimationManager;