@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 31.5 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _lib=require("@fusioncharts/core/src/lib");var _safeMax=_interopRequireDefault(require("@fusioncharts/utils/src/array/safe-max"));var _linear=_interopRequireDefault(require("@fusioncharts/utils/src/scales/linear"));var _componentInterface=require("@fusioncharts/core/src/component-interface");var _localizeDateString=require("../_utils/localizeDateString");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){(0,_defineProperty2.default)(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var identity=function identity(x){return x},isNil=function isNil(x){return x===null||typeof x==="undefined"},MAX_ALLOWED_SPACE=5,TICKMAJOR="tick-mark-major",TICKMINOR="tick-mark-minor",LABELMAJOR="label-major",LABELMINOR="label-minor",LABELCONTEXT="label-context",START="start",END="end",MIDDLE="middle",TOP="top",RIGHT="right",BOTTOM="bottom",LEFT="left",X="x",Y="y",MAJOR="major",MINOR="minor",CONTEXT="context",DEFAULT_TICK_SIZE=12,DEFAULT_TICK_PADDING=1,DEFAULT_ROTATION=90,DEFAULT_TRANSFORM="t0,0",DEFAULT_LABEL_PADDING=5,LABEL_NAME_WIDTH_BUFFER=10,GUTTER_2=2,floor=Math.floor,mathMax=Math.max,BLANK="",translateX=function translateX(x){return"t"+x+",0"},translateY=function translateY(y){return"t0,"+y},number=function number(scale){return function(d){return+scale.getRangeValue(d)}},center=function center(scale){return function(d){return+scale.getRangeValue(d)+scale.getBandwidth()/2}},getFormatter=function getFormatter(timeFormat,tickType,index){if(timeFormat&&tickType){return timeFormat[tickType[index]]}},overlaps=function overlaps(bbox1,bbox2){if(bbox1.x>bbox2.x+bbox2.width||bbox2.x>bbox1.x+bbox1.width){return false}if(bbox1.y>bbox2.y+bbox2.height||bbox2.y>bbox1.y+bbox1.height){return false}return true},resetTickInfo=function resetTickInfo(tick){tick.text=BLANK;tick.dim.width=0;tick.dim.height=0},getTextAnchor=function getTextAnchor(orient){var anchor;switch(orient){case LEFT:anchor=END;break;case RIGHT:anchor=START;break;default:anchor=MIDDLE}return anchor},isWithinDomain=function isWithinDomain(smartText,textAnchor,labelDim,parentDim){var startX;if(textAnchor===START){startX=labelDim.x}else if(textAnchor===END){startX=labelDim.x-smartText.width}else{startX=labelDim.x-smartText.width/2}if(startX>=0&&startX+smartText.width<=parentDim.width){return true}return false},isWithinVisibleRange=function isWithinVisibleRange(value,limits){return value>=limits.start&&value<=limits.end};var Axis=function(_SmartRenderer){function Axis(){return _SmartRenderer.apply(this,arguments)||this}(0,_inheritsLoose2.default)(Axis,_SmartRenderer);var _proto=Axis.prototype;_proto.getType=function getType(){return"axis"};_proto.getName=function getName(){return"axis"};_proto.__setDefaultConfig=function __setDefaultConfig(){var _axisConfig$style;_SmartRenderer.prototype.__setDefaultConfig.call(this);var axisConfig=this.config;this.setScale(new _linear.default);this.setAlignment(LEFT);this.setTickArguments();this.setTickValues();this.setReverse(false);this.setTickSize(DEFAULT_TICK_SIZE);this.setTickPadding(DEFAULT_TICK_PADDING);this.setDomainLine(true);this.setTicksDraw(true);this.setLabelOffset();this.setDayInMajor(false);this.setStickyContextLabel(true);this.setTickVisibilityLimit({start:-Infinity,end:Infinity});axisConfig.alignDiff=0;axisConfig.maxLabelSpace=0;axisConfig.axisDimension={};axisConfig.defaultStyle=axisConfig.style=(_axisConfig$style={},_axisConfig$style[TICKMINOR]={stroke:"#d3d3d3","stroke-width":"1px"},_axisConfig$style[TICKMAJOR]={stroke:"#AAAAAA","stroke-width":"1px"},_axisConfig$style[LABELMAJOR]={fill:"#858585","font-size":"12px","font-weight":"normal","font-style":"normal"},_axisConfig$style[LABELMINOR]={fill:"#9A9A9A","font-size":"11px","font-weight":"normal","font-style":"normal"},_axisConfig$style[LABELCONTEXT]={fill:"#858585","font-size":"12px","font-weight":"normal","font-style":"normal"},_axisConfig$style._ticks={minor:{stroke:"#d3d3d3"},major:{stroke:"#AAAAAA"},context:{}},_axisConfig$style._text={major:{fill:"#858585","font-size":"12px","font-weight":"normal","font-style":"normal"},minor:{fill:"#9A9A9A","font-size":"11px","font-weight":"normal","font-style":"normal"},context:{fill:"#858585","font-size":"12px","font-weight":"normal","font-style":"normal"}},_axisConfig$style.line={fill:"#D6D6D6"},_axisConfig$style.title={fill:"#5F5F5F","font-size":"12px","font-weight":"normal","font-style":"normal"},_axisConfig$style);if(!this.config.prevTicks)this.config.prevTicks=[]};_proto.configureAttributes=function configureAttributes(inputCfg){_SmartRenderer.prototype.configureAttributes.call(this,inputCfg);var axis=this;inputCfg.scale&&axis.setScale(inputCfg.scale);inputCfg.align&&axis.setAlignment(inputCfg.align,inputCfg.overlap);inputCfg.reverse&&axis.setReverse(inputCfg.reverse);inputCfg.tickarguments&&axis.setTickArguments.apply(axis,inputCfg.tickarguments);inputCfg.title&&axis.setAxisName((0,_lib.parseUnsafeString)(inputCfg.title));inputCfg.skipinfo&&axis.setSkipInfo(inputCfg.skipinfo);inputCfg.offset&&axis.setLabelOffset(inputCfg.offset);inputCfg.dayinmajor&&axis.setDayInMajor(inputCfg.dayinmajor);inputCfg.scalemode&&axis.setScaleMode(inputCfg.scalemode);inputCfg.minspace&&axis.setminSpace(inputCfg.minspace);typeof inputCfg.stickycontextlabel!=="undefined"&&axis.setStickyContextLabel(inputCfg.stickycontextlabel);!isNil(inputCfg.ticksize)&&axis.setTickSize(inputCfg.ticksize);!isNil(inputCfg.tickpadding)&&axis.setTickPadding(inputCfg.tickpadding);axis.setDomainLine(inputCfg.domainline);axis.setTicksDraw(inputCfg.drawticks);!isNil(inputCfg.formatterFn)&&axis.setTickFormat(inputCfg);inputCfg.outputtimeformat&&axis.setTimeFormat(inputCfg.outputtimeformat);inputCfg.tickvisibilitylimit&&axis.setTickVisibilityLimit(inputCfg.tickvisibilitylimit);inputCfg.style&&axis.parseStyle(inputCfg.style);axis.config.validateLabelDimensions=(0,_lib.pluckNumber)(inputCfg.validateLabelDimensions,0)};_proto.parseStyle=function parseStyle(style){var _axisConfig$style2;if(style===void 0){style={}}var axis=this,axisConfig=axis.config,defaultStyle=axisConfig.defaultStyle,getStyleDef=axis.getFromEnv("getStyleDef"),baseTextStyle=axis.getFromEnv("baseTextStyle"),genericLabelStyle=getStyleDef(style.label),genericTickStyle=getStyleDef(style["tick-mark"]),majorTickStyle,minorTickStyle,majorLabelStyle,minorLabelStyle,contextLabelStyle;majorTickStyle=Object.assign({},defaultStyle["tick-mark-major"],genericTickStyle,getStyleDef(style["tick-mark-major"]));minorTickStyle=Object.assign({},defaultStyle["tick-mark-minor"],genericTickStyle,getStyleDef(style["tick-mark-minor"]));majorLabelStyle=Object.assign({},defaultStyle["label-major"],baseTextStyle,genericLabelStyle,getStyleDef(style["label-major"]));minorLabelStyle=Object.assign({},defaultStyle["label-minor"],baseTextStyle,genericLabelStyle,getStyleDef(style["label-minor"]));contextLabelStyle=Object.assign({},defaultStyle["label-context"],baseTextStyle,genericLabelStyle,getStyleDef(style["label-context"]));axisConfig.style=(_axisConfig$style2={},_axisConfig$style2[TICKMAJOR]=majorTickStyle,_axisConfig$style2[TICKMINOR]=minorTickStyle,_axisConfig$style2[LABELMAJOR]=majorLabelStyle,_axisConfig$style2[LABELMINOR]=minorLabelStyle,_axisConfig$style2[LABELCONTEXT]=contextLabelStyle,_axisConfig$style2.title=Object.assign({},defaultStyle.title,baseTextStyle,getStyleDef(style.title)),_axisConfig$style2.line=Object.assign({},defaultStyle.line,getStyleDef(style.line)),_axisConfig$style2)};_proto.placeAxis=function placeAxis(){var _this$getFromEnv,_axisConfig$axisDimen;var axis=this,axisConfig=axis.config,isVertical=axisConfig.isVertical,minSpace=(0,_lib.pluckNumber)(axisConfig.minspace,-1),scale=axis.getScale(),skipInfo=axis.getSkipInfo()||{},tickArguments,values,format,padding=axis.getTickPadding(),smartLabel=axis.getFromEnv("smartLabel"),processedValues=[],i,len,maxLen=0,maxLabelLen=0,tickLen,labelDim,nameDim,axisName=axis.getAxisName(),axisNameDim,formatter,value,text,fSize,tickType,tickLabelDimension,labelDimAr=[],labelHeight,contextStyle,fontSize,overlapBuffer,dataSource=axis.getFromEnv("dataSource");tickArguments=(axis.getTickArguments()||[]).slice(0);tickArguments.push(skipInfo);tickArguments.push(axisConfig.dayInMajor);values=isNil(axis.getTickValues())?scale.ticks?scale.ticks.apply(scale,tickArguments):scale.getDomain():axis.getTickValues();format=isNil(axis.getTickFormat())?scale.tickFormat?scale.tickFormat.apply(scale,axis.getTickArguments()):identity:axis.getTickFormat();var lang=(_this$getFromEnv=this.getFromEnv("language"))!=null?_this$getFromEnv:"english";contextStyle=axisConfig.style[LABELCONTEXT];smartLabel.setStyle(Object.assign({},contextStyle));fontSize=contextStyle["font-size"]||contextStyle.fontSize;axisConfig.labelHeight=parseFloat(fontSize,10)*1.2;if(axisName){smartLabel.setStyle(Object.assign({},axisConfig.style.title));axisNameDim=axisConfig.axisNameDim=smartLabel.getOriSize(axisName,false);nameDim=axisNameDim.height;maxLen+=nameDim}tickType=scale._tickType||[];for(i=0,len=values.length;i<len;i++){var _processedValues$push;value=values[i];formatter=getFormatter(scale._timeFormat,tickType,i);smartLabel.setStyle(Object.assign({},axisConfig.style["label-"+(tickType[i]||MAJOR)]));text=axisConfig.isVertical?format.formatFn({value:value,prefix:format.prefix,suffix:format.suffix,type:"axis"},formatter):format(value,formatter,tickType[i]);var timeFormatOnSlider=dataSource.navigator&&dataSource.navigator.hourtimeformat?dataSource.navigator.hourtimeformat:0;if(timeFormatOnSlider===24&&!axisConfig.timeFormat){var date=new Date(value),hours=date.getHours().toString().length===1?"0"+date.getHours().toString():date.getHours().toString(),minutes=date.getMinutes().toString().length===1?"0"+date.getMinutes().toString():date.getMinutes().toString();text=formatter==="hour"?hours+":"+minutes:formatter==="minute"?hours+":"+minutes:text}text=(0,_localizeDateString.localizeDateString)(text,lang);text=(0,_lib.parseUnsafeString)(text);maxLabelLen=mathMax(text.length,maxLabelLen);tickLabelDimension=smartLabel.getOriSize(text,false);isVertical&&(tickLabelDimension.width=axisConfig.vLabelWidth);tickLen=axis.getTickSize(tickType[i]);processedValues.push((_processedValues$push={text:text,value:value,dim:tickLabelDimension,tickLen:tickLen},_processedValues$push[axisConfig.x]=padding+tickLen,_processedValues$push));tickType[i]!==CONTEXT&&labelDimAr.push((isVertical?tickLabelDimension.width:tickLabelDimension.height)+tickLen)}if(isVertical&&isNil(axisConfig.vLabelWidth)){axisConfig.vLabelWidth=0;labelDimAr=[];for(i=0,len=values.length;i<len;i++){smartLabel.setStyle(Object.assign({},axisConfig.style["label-"+(tickType[i]||MAJOR)]));fSize=axisConfig.style["label-"+(tickType[i]||MAJOR)]["font-size"];fSize=+fSize.toString().split("px")[0];tickLabelDimension=smartLabel.getOriSize(text,false);tickLabelDimension.width=mathMax(tickLabelDimension.width+LABEL_NAME_WIDTH_BUFFER,minSpace-maxLen);processedValues[i].dim=tickLabelDimension;axisConfig.vLabelWidth=mathMax(tickLabelDimension.width,axisConfig.vLabelWidth);tickType[i]!==CONTEXT&&labelDimAr.push((isVertical?tickLabelDimension.width:tickLabelDimension.height)+tickLen)}}axisConfig.values=processedValues;overlapBuffer=axis.getLabelOverlapBuffer();labelDim=axisConfig.prevMaxLen=(0,_lib.pluckNumber)((0,_safeMax.default)(labelDimAr),axisConfig.prevMaxLen,0);maxLen+=labelDim;labelHeight=isVertical?0:axisConfig.labelHeight;axisConfig.maxLabelSpace=maxLen+padding+overlapBuffer+labelHeight;for(i=0,len=values.length;i<len;i++){value=processedValues[i];if(axisConfig.orientation===TOP||axisConfig.orientation===LEFT){value[axisConfig.x]=axisConfig.maxLabelSpace-padding-overlapBuffer-value.tickLen}else{value[axisConfig.x]=padding+value.tickLen}}axisConfig.axisDimension=(_axisConfig$axisDimen={},_axisConfig$axisDimen[axisConfig.align]=axisConfig.maxLabelSpace,_axisConfig$axisDimen);return axisConfig.axisDimension};_proto.getLabelOverlapBuffer=function getLabelOverlapBuffer(){var axis=this,axisConfig=axis.config,values=axisConfig.values,scale=axis.getScale(),tickType=scale._tickType||[],majorTick,minorTick,i,len,overlap=0,dim;for(i=0,len=values.length;i<len;i++){if(tickType[i]===MAJOR||!tickType[i]){majorTick=values[i]}else if(tickType[i]===MINOR){minorTick=values[i]}if(majorTick&&minorTick){break}}if(minorTick){dim={x:minorTick.dim.width,y:minorTick.dim.height};switch(axisConfig.k){case 1:overlap=mathMax(minorTick[axisConfig.x]+dim[axisConfig.x]-majorTick[axisConfig.x],0);break;case-1:overlap=mathMax(majorTick[axisConfig.x]-(minorTick[axisConfig.x]+dim[axisConfig.x]),0);break}}return axisConfig.overlapBuffer=axisConfig.k*overlap/3};_proto.makeBBox=function makeBBox(tick,buffer){var _ref;if(buffer===void 0){buffer=DEFAULT_LABEL_PADDING}var axisConfig=this.config,scale=this.getScale(),dim={x:tick.dim.width,y:tick.dim.height};return _ref={},_ref[axisConfig.x]=tick[axisConfig.x]-buffer-dim[axisConfig.x]/2,_ref[axisConfig.xInverse]=scale.getRangeValue(tick.value)-buffer-dim[axisConfig.xInverse]/2,_ref.width=tick.dim.width+buffer,_ref.height=tick.dim.height+buffer,_ref};_proto.setMinorSkipIndex=function setMinorSkipIndex(){var axis=this,axisConfig=axis.config,scale=axis.getScale(),ticks=axisConfig.values,tickType=scale._tickType||[],minorTicks=[],i,j,len=ticks.length,midPoint,startMajorTick,endMajorTick,startTickBBox,endTickBBox,curTickBBox,midTickBBox,start,leftSkip=1,rightSkip=1,found=false,doesNotOverlap=false;for(i=0;i<len;i++){if(tickType[i]===MAJOR||typeof tickType[i]===_lib.UNDEF){for(j=i+1;j<len;j++){if(tickType[j]===MAJOR||typeof tickType[j]===_lib.UNDEF){startMajorTick=ticks[i];endMajorTick=ticks[j];minorTicks=ticks.slice(i+1,j);found=true;break}}}if(found){break}}if(!minorTicks.length){return}len=minorTicks.length;start=i;midPoint=floor(len/2);startTickBBox=axis.makeBBox(startMajorTick);endTickBBox=axis.makeBBox(endMajorTick);midTickBBox=axis.makeBBox(minorTicks[midPoint]);if(overlaps(midTickBBox,startTickBBox)||overlaps(midTickBBox,endTickBBox)){axisConfig.minorSkip=len;return}for(i=midPoint-1;i>=0;i--){curTickBBox=axis.makeBBox(minorTicks[i]);if(overlaps(curTickBBox,midTickBBox)){continue}leftSkip=midPoint-i;break}for(i=midPoint+1;i<len+start;i++){curTickBBox=axis.makeBBox(minorTicks[i]);if(overlaps(curTickBBox,midTickBBox)){continue}rightSkip=i-midPoint;break}len=minorTicks.length;while(!doesNotOverlap){doesNotOverlap=true;for(i=midPoint+rightSkip;i<len;i+=rightSkip){if(overlaps(axis.makeBBox(minorTicks[i]),axis.makeBBox(minorTicks[i-rightSkip]))){rightSkip++;doesNotOverlap=false;break}}for(i=midPoint-leftSkip;i>=0;i-=leftSkip){if(overlaps(axis.makeBBox(minorTicks[i]),axis.makeBBox(minorTicks[i+leftSkip]))){leftSkip++;doesNotOverlap=false;break}}}axisConfig.minorSkip=mathMax(leftSkip,rightSkip)};_proto.cleanseMinorTicks=function cleanseMinorTicks(){var _ref2,_ref3;var axis=this,axisConfig=axis.config,scale=axis.getScale(),tickType=scale._tickType||[],i,j,len,majorTickIndex=[],minorTicks,minorTicksAr=[],midPoint,leftPointBBox,rightPointBBox,curTickBBox,ticks=axisConfig.values,leftMax=-1,rightMin,dim=axisConfig.isVertical?(_ref2={},_ref2[axisConfig.xInverse]="height",_ref2[axisConfig.x]="width",_ref2):(_ref3={},_ref3[axisConfig.xInverse]="width",_ref3[axisConfig.x]="height",_ref3);for(i=0,len=ticks.length;i<len;i++){if(tickType[i]===MAJOR||!tickType[i]){majorTickIndex.push(i)}}for(i=0,len=majorTickIndex.length;i<len-1;i++){minorTicks=ticks.slice(majorTickIndex[i]+1,majorTickIndex[i+1]);minorTicksAr.push(minorTicks);rightMin=minorTicks.length;leftMax=-1;if(!minorTicks.length){continue}midPoint=floor(minorTicks.length/2);leftPointBBox=axis.makeBBox(ticks[majorTickIndex[i]],0);rightPointBBox=axis.makeBBox(ticks[majorTickIndex[i+1]],0);for(j=midPoint;j>=0;j-=1){curTickBBox=axis.makeBBox(minorTicks[j],1);if(axisConfig.isVertical){if(leftPointBBox[axisConfig.xInverse]<=curTickBBox[axisConfig.xInverse]+curTickBBox[dim[axisConfig.xInverse]]){leftMax=mathMax(leftMax,j);break}}else{if(curTickBBox[axisConfig.xInverse]<=leftPointBBox[axisConfig.xInverse]+leftPointBBox[dim[axisConfig.xInverse]]){leftMax=mathMax(leftMax,j);break}}}for(j=midPoint;j<minorTicks.length;j+=1){curTickBBox=axis.makeBBox(minorTicks[j],1);if(axisConfig.isVertical){if(rightPointBBox[axisConfig.xInverse]+rightPointBBox[dim[axisConfig.xInverse]]>=curTickBBox[axisConfig.xInverse]){rightMin=Math.min(rightMin,j);break}}else{if(curTickBBox[axisConfig.xInverse]+curTickBBox[dim[axisConfig.xInverse]]>=rightPointBBox[axisConfig.xInverse]){rightMin=Math.min(rightMin,j);break}}}for(j=0;j<minorTicks.length;j++){if(j<=leftMax||j>=rightMin||Math.abs(midPoint-j)%axisConfig.minorSkip){resetTickInfo(minorTicks[j])}}}};_proto.cleanseMajorTicks=function cleanseMajorTicks(){var axis=this,axisConfig=axis.config,scale=axis.getScale(),values=axisConfig.values,majorTickAr=[],majorTickIndexAr=[],contextTickAr=[],contextTickIndexAr=[],tickType=scale._tickType||[],startIndex=0,leftSkip=1,rightSkip=1,curTickBBox,majorSkip,i,len,doesNotOverlap=false;len=values.length;if(!len){return}for(i=0;i<len;i++){if(tickType[i]===MAJOR||!tickType[i]){majorTickAr.push(values[i]);majorTickIndexAr.push(i)}else if(tickType[i]===CONTEXT){contextTickAr.push(values[i]);contextTickIndexAr.push(i)}}if(contextTickIndexAr.length){for(i=0,len=majorTickAr.length;i<len;i++){if(+contextTickAr[0].value===+majorTickAr[i].value){startIndex=i}}}else{startIndex=0}curTickBBox=axis.makeBBox(majorTickAr[0]);for(i=startIndex+1,len=majorTickAr.length;i<len;i++){if(!overlaps(axis.makeBBox(majorTickAr[i]),curTickBBox)){rightSkip=i-startIndex;break}}for(i=startIndex-1;i>=0;i--){if(!overlaps(axis.makeBBox(majorTickAr[i]),curTickBBox)){leftSkip=startIndex-i;break}}while(!doesNotOverlap){doesNotOverlap=true;for(i=startIndex+rightSkip;i<len;i+=rightSkip){if(overlaps(axis.makeBBox(majorTickAr[i]),axis.makeBBox(majorTickAr[i-rightSkip]))){rightSkip++;doesNotOverlap=false;break}}for(i=startIndex-leftSkip;i>=0;i-=rightSkip){if(overlaps(axis.makeBBox(majorTickAr[i]),axis.makeBBox(majorTickAr[i+leftSkip]))){leftSkip++;doesNotOverlap=false;break}}}axisConfig.majorSkip=majorSkip=mathMax(leftSkip,rightSkip);for(i=0,len=majorTickAr.length;i<len;i++){if(Math.abs(i-startIndex)%majorSkip){resetTickInfo(majorTickAr[i])}}};_proto.draw=function draw(){var axis=this,axisConfig=axis.config,chartConfig=axis.getFromEnv("chart").config,scale=axis.getScale(),parent=axis.getLinkedParent(),tickType=scale._tickType||[],position=(scale.getBandwidth?center:number)(scale),range=scale.getRange(),domain=scale.getDomain(),range0=Number(range[0]),range1=Number(range[range.length-1]),orientation=axis.getOrientation(),smartLabel=axis.getFromEnv("smartLabel"),values=axisConfig.values,lineOffset=orientation===LEFT||orientation===TOP?axisConfig.maxLabelSpace+GUTTER_2:0,isVertical=axisConfig.isVertical,orient=axisConfig.orientation,xInverse=axisConfig.xInverse,x=axisConfig.x,k=axisConfig.k,style=axisConfig.style;axis.addGraphicalElement({el:"group",attr:{name:"meso-axis",transform:axisConfig.groupTranslation},container:{id:"meso",label:"group",isParent:true},id:"meso-axis",component:axis,label:"group"});axis.addGraphicalElement({el:"group",attr:{name:"axis-"+orient},container:{id:"meso-axis",label:"group"},id:"axisGroup",component:axis,label:"group"});var tickValue,type,axisName,axisNameDim,xpos,ypos,index,len,value,majorTickIndex=[],majorTickIndexIterator,lMajor,rMajor,contextTickCount=0,visibilityLimit=axis.getTickVisibilityLimit(),firstMajorTick,textAnchor,fontSize,linePath,tickPath,labelDim;axis.setMinorSkipIndex();axis.cleanseMinorTicks();axis.cleanseMajorTicks();if(linePath=axis.getDomainLine()){axis.addGraphicalElement({el:"path",attr:{path:linePath,stroke:"#d6d6d6",fill:"none","stroke-width":2},container:{id:"axisGroup",label:"group",isParent:false},css:style.line,component:axis,label:"path"})}if(axisName=axis.getAxisName()){fontSize=parseFloat(axisConfig.style.title["font-size"]||axisConfig.style.title.fontSize,10);smartLabel.setStyle(Object.assign({},axisConfig.style.title));axisNameDim=smartLabel.getSmartText(axisName,Math.abs(range0-range1),fontSize*1.2);if(isVertical){xpos=orientation===LEFT?0+axisNameDim.height/2:axisConfig.maxLabelSpace-axisNameDim.height/2;ypos=(range0-range1)/2}else{xpos=(range1-range0)/2;ypos=orientation===TOP?0+axisNameDim.height/2:axisConfig.maxLabelSpace-axisNameDim.height/2}axis.addGraphicalElement({el:"text",attr:{text:axisNameDim.text,x:xpos,y:ypos,opacity:style.title.opacity,"text-anchor":"middle",transform:isVertical?(0,_lib.getSuggestiveRotation)(k*DEFAULT_ROTATION,xpos,ypos):DEFAULT_TRANSFORM},container:{id:"axisGroup",label:"group",isParent:false},tooltext:chartConfig.showTooltip?axisNameDim.tooltext:_lib.UNDEF,css:style.title,component:axis,id:"axis-name",label:"name"})}if(axis.getTicksDraw()){contextTickCount=tickType.length-tickType.indexOf(CONTEXT);firstMajorTick=axisConfig.values.find((function(tick,pos){return tick.value>=domain[0]&&tick.value<=domain[1]&&tickType[pos]===MAJOR}));for(index=0,len=values.length;index<len;index++){if(tickType[index]===MAJOR){if(values[index].value>=domain[0]&&values[index].value<=domain[1]){values[index][xInverse]=position(values[index].value)}majorTickIndex.push(index)}}lMajor=majorTickIndex[0];rMajor=majorTickIndex[1];majorTickIndexIterator=2;for(index=0,len=axisConfig.values.length;index<len;index++){var _labelDim;value=axisConfig.values[index];type=tickType[index]||MAJOR;if(!isVertical&&value.text.length===0){continue}if(type!==CONTEXT&&(value.value<domain[0]||value.value>domain[1])){continue}if(type===CONTEXT&&contextTickCount>1&&(value.value<domain[0]||value.value>domain[1])){continue}if(type===CONTEXT&&contextTickCount===1){value[xInverse]=axis.getStickyContextLabel()||typeof firstMajorTick==="undefined"?mathMax(position(value.value),value.dim.width/2):position(firstMajorTick.value)}else{value[xInverse]=value[xInverse]||position(value.value)}if(index>=rMajor){lMajor=rMajor;rMajor=majorTickIndex[majorTickIndexIterator];majorTickIndexIterator++}if(type===MINOR&&!isVertical&&(value[xInverse]-values[lMajor][xInverse]<MAX_ALLOWED_SPACE||values[rMajor][xInverse]-value[xInverse]<MAX_ALLOWED_SPACE)){continue}value[x]+=axisConfig.alignDiff;tickValue=value.value;axis.addGraphicalElement({container:{id:"axisGroup",label:"group",isParent:false},attr:{name:"tick",transform:axisConfig.translate(value[xInverse])},data:{value:tickValue},el:"group",id:"tick-group-"+index,component:this,label:"group"});if(type!==CONTEXT){tickPath=isVertical?"M "+lineOffset+" 0 H "+(lineOffset+k*axis.getTickSize(tickType[index])):"M 0 "+lineOffset+" V "+(lineOffset+k*axis.getTickSize(tickType[index]));axis.addGraphicalElement({el:"path",attr:{path:tickPath},container:{id:"tick-group-"+index,label:"group",isParent:false},id:"tick-"+index,css:style["tick-mark-"+(type||MAJOR)],component:axis,label:"path"})}textAnchor=style["label-"+(type||MAJOR)]["text-anchor"]||getTextAnchor(orientation);labelDim=(_labelDim={},_labelDim[xInverse]=value[xInverse]+axisConfig[xInverse+"Offset"],_labelDim[x]=value[x]+axisConfig[x+"Offset"]+(type!==MINOR?axisConfig.overlapBuffer:0),_labelDim);if(!axisConfig.validateLabelDimensions||isWithinDomain(value.dim,textAnchor,labelDim,parent.getDimension())){var _attr;if(!isWithinVisibleRange(value.value,visibilityLimit)&&type!==CONTEXT){continue}if(type===CONTEXT&&typeof visibilityLimit.start==="undefined"){continue}axis.addGraphicalElement({el:"text",attr:(_attr={text:value.text+""},_attr[xInverse]=0+axisConfig[xInverse+"Offset"],_attr[x]=value[x]+axisConfig[x+"Offset"]+(type!==MINOR?axisConfig.overlapBuffer:0),_attr["text-anchor"]=textAnchor,_attr["vertical-align"]=orient===TOP?"bottom":orient===BOTTOM?"top":"middle",_attr.opacity=style["label-"+(type||MAJOR)].opacity,_attr),container:{id:"tick-group-"+index,label:"group",isParent:false},component:axis,id:"tick-label-"+index,css:style["label-"+(type||MAJOR)],label:"text"})}}}};_proto.updateMaxLabelSpace=function updateMaxLabelSpace(newDim){var axis=this,axisConfig=axis.config,align=axis.getAlignment();axisConfig.alignDiff=newDim-axisConfig.maxLabelSpace;axisConfig.maxLabelSpace=axisConfig.axisDimension[align]=newDim;return axisConfig.axisDimension};_proto.setDayInMajor=function setDayInMajor(dayInMajor){this.config.dayInMajor=dayInMajor};_proto.setSkipInfo=function setSkipInfo(info){if(info===void 0){info={}}this.config.tickInfo=info};_proto.getSkipInfo=function getSkipInfo(){return this.config.tickInfo};_proto.setStickyContextLabel=function setStickyContextLabel(flag){if(flag===void 0){flag=true}this.config.stickyContextLabel=flag};_proto.getStickyContextLabel=function getStickyContextLabel(){return this.config.stickyContextLabel};_proto.setminSpace=function setminSpace(minspace){this.config.minspace=minspace};_proto.getminSpace=function getminSpace(){return this.config.minspace};_proto.setLabelOffset=function setLabelOffset(offset){if(offset===void 0){offset={}}var axisConfig=this.config;axisConfig.xOffset=(0,_lib.pluckNumber)(offset.x,0);axisConfig.yOffset=(0,_lib.pluckNumber)(offset.y,0)};_proto.getLabelOffset=function getLabelOffset(){return{x:this.config.xOffset,y:this.config.yOffset}};_proto.getAxisName=function getAxisName(){return this.config.axisName};_proto.setAxisName=function setAxisName(title){if(title===void 0){title=""}this.config.axisName=title};_proto.getAlignment=function getAlignment(){return this.config.align};_proto.setAlignment=function setAlignment(align,overlap){if(overlap===void 0){overlap=false}var axis=this,axisConfig=axis.config,orientation,isVertical;switch(align){case LEFT:orientation=overlap?RIGHT:LEFT;break;case RIGHT:orientation=overlap?LEFT:RIGHT;break;case TOP:orientation=overlap?BOTTOM:TOP;break;case BOTTOM:orientation=overlap?TOP:BOTTOM;break}axisConfig.align=align;axisConfig.orientation=orientation;axisConfig.isVertical=isVertical=align===LEFT||align===RIGHT;axisConfig.k=orientation===LEFT||orientation===TOP?-1:1;axisConfig.x=isVertical?X:Y;axisConfig.xInverse=isVertical?Y:X;axisConfig.translate=isVertical?translateY:translateX;axisConfig.translateInverse=isVertical?translateX:translateY};_proto.getOrientation=function getOrientation(){return this.config.orientation};_proto.setTranslation=function setTranslation(x,y){if(x===void 0){x=0}if(y===void 0){y=0}this.config._translatedX=x;this.config._translatedY=y;this.config.groupTranslation="t"+x+", "+y};_proto.getTranslation=function getTranslation(){return{x:this.config._translatedX,y:this.config._translatedY}};_proto.setDomainLine=function setDomainLine(flag){if(flag===void 0){flag=true}this.config.drawDomainLine=flag;return this};_proto.getDomainLine=function getDomainLine(){var axis=this,axisConfig=axis.config,scale=axis.getScale(),range=scale.getRange(),isVertical=axisConfig.isVertical,orientation=axisConfig.orientation,maxLabelSpace=axisConfig.maxLabelSpace,lineOffset,start=+range[0],end=+range[1],path;if(axisConfig.drawDomainLine){lineOffset=orientation===LEFT||orientation===TOP?maxLabelSpace+GUTTER_2:0;if(isVertical){path="M "+lineOffset+" "+start+" V "+end}else{path="M "+start+" "+lineOffset+" H "+end}}return path};_proto.setTicksDraw=function setTicksDraw(flag){if(flag===void 0){flag=true}this.config.drawTicks=flag;return this};_proto.getTicksDraw=function getTicksDraw(){return this.config.drawTicks};_proto.setScale=function setScale(scale){this.config.scale=scale};_proto.getScale=function getScale(){return this.config.scale};_proto.setReverse=function setReverse(isReverse){this.config.isReverse=isReverse};_proto.getReverse=function getReverse(){return this.config.isReverse};_proto.setTickArguments=function setTickArguments(){for(var _len=arguments.length,tickArgs=new Array(_len),_key=0;_key<_len;_key++){tickArgs[_key]=arguments[_key]}this.config.tickArguments=tickArgs;return this};_proto.getTickArguments=function getTickArguments(){return this.config.tickArguments.slice()};_proto.setTickSize=function setTickSize(size){this.config.tickSizeOuter=Number(size);this.config.tickSizeInner=this.config.tickSizeOuter*(2/3);return this};_proto.getTickSize=function getTickSize(type){if(type===void 0){type=MAJOR}var axisConfig=this.config;switch(type){case CONTEXT:return axisConfig.tickSizeOuter+axisConfig.labelHeight;case MINOR:return axisConfig.tickSizeInner;case MAJOR:return axisConfig.tickSizeOuter}};_proto.setTickPadding=function setTickPadding(padding){this.config.tickPadding=Number(padding);return this};_proto.getTickPadding=function getTickPadding(){return this.config.tickPadding};_proto.setTickValues=function setTickValues(tickValues){this.config.tickValues=isNil(tickValues)?null:tickValues.slice();return this};_proto.getTickValues=function getTickValues(){return this.config.tickValues&&this.config.tickValues.slice()};_proto.setTickFormat=function setTickFormat(inputObj){this.config.tickFormat={formatFn:inputObj.formatterFn,prefix:inputObj.formatLabelPrefix,suffix:inputObj.formatLabelSuffix};return this};_proto.getTickFormat=function getTickFormat(){return this.config.tickFormat};_proto.getAxisEndLabelDisplaySpace=function getAxisEndLabelDisplaySpace(){var chartTop=0,chartLeft=0,chartRight=+this.getFromEnv("chartWidth"),chartBottom=+this.getFromEnv("chartHeight"),values=this.config.values,isReverse=this.getReverse(),isVertical=this.config.isVertical,space={};var valueLeft,valueRight,valueTop,valueBottom;if(isVertical){valueTop=isReverse?values[values.length-1]:values[0];valueBottom=isReverse?values[0]:values[values.length-1];space.top=chartTop-Math.min(chartTop,valueTop.y-valueTop.dim.height);space.bottom=mathMax(valueBottom.y+valueBottom.dim.height,chartBottom)-chartBottom}else{valueLeft=isReverse?values[values.length-1]:values[0];valueRight=isReverse?values[0]:values[values.length-1];space.left=chartLeft-Math.min(chartLeft,valueLeft.x-valueLeft.dim.width);space.right=mathMax(valueRight.x+valueRight.dim.width,chartRight)-chartRight}return space};_proto.getDimension=function getDimension(){return this.config.axisDimension};_proto.setDimension=function setDimension(dim){return this.placeAxis(dim)};_proto.setScaleMode=function setScaleMode(mode){this.config.scale.setMode(mode)};_proto.getScaleMode=function getScaleMode(){return this.config.scale.getMode()};_proto.setTimeFormat=function setTimeFormat(format){var axisConfig=this.config,scale=axisConfig.scale;axisConfig.timeFormat=format;scale.setTimeFormat&&scale.setTimeFormat(format)};_proto.getTimeFormat=function getTimeFormat(){return this.config.timeFormat};_proto.setTickVisibilityLimit=function setTickVisibilityLimit(limit){this.config.tickVisibilityLimit=_objectSpread({},limit)};_proto.getTickVisibilityLimit=function getTickVisibilityLimit(){return this.config.tickVisibilityLimit};return Axis}(_componentInterface.SmartRenderer);var _default=exports.default=Axis;