@fusioncharts/charts
Version:
JavaScript Data Visualisation Library
1 lines • 66.2 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.plotGraphicClick=exports.plotClickHandler=exports.labelClickFn=exports.hideFn=exports.default=void 0;exports.trimData=_trimData;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _area=_interopRequireDefault(require("../area"));var _column=require("../column");var _lib=require("@fusioncharts/core/src/lib");var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _index=_interopRequireDefault(require("./index.animation"));var _redraphaelShapes=_interopRequireDefault(require("@fusioncharts/core/src/_internal/redraphael/redraphael-shapes/redraphael-shapes.ringpath"));var _schedular=require("@fusioncharts/core/src/schedular");var _printColor=_interopRequireDefault(require("@fusioncharts/core/src/print-color"));var _pieLabelUtils=require("./pie-label-utils");var _trustedPolicy=_interopRequireDefault(require("@fusioncharts/utils/src/trusted-policy"));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 UNDEF;var Raphael=(0,_dependencyManager.getDep)("redraphael","plugin"),win=window,doc=win.document,MIDDLE_STR="middle",isVML=!_lib.hasSVG,supportsTouch="createTouch"in doc,supportsOnlyTouch=supportsTouch&&!(win.navigator.maxTouchPoints||win.navigator.msMaxTouchPoints),ROLLOVER="DataPlotRollOver",ROLLOUT="DataPlotRollOut",EVENTARGS="eventArgs",TRANSFORMSTR="t",DASH_DEF="none",POINTER="pointer",OUTSIDE="outside",INSIDE="inside",math=Math,mathATan2=math.atan2,mathSin=math.sin,mathCos=math.cos,mathMax=math.max,mathMin=math.min,mathAbs=math.abs,mathFloor=math.floor,pi=math.PI,rad2deg=180/math.PI,pi2=2*pi,QUADRANT_COUNT=4,segregateLabelsInQuadrant=function segregateLabelsInQuadrant(labelAr){var i,len,angle,quadrant,quadrantAr=[[],[],[],[]];for(i=0,len=labelAr.length;i<len;i++){angle=(0,_pieLabelUtils.getCleanAngle)(labelAr[i].point.config.angle);quadrant=(0,_pieLabelUtils.getQuadrant)(angle);quadrantAr[quadrant].push({point:labelAr[i].point,angle:angle})}return quadrantAr},createGroup=function createGroup(groupName,parentContainer,dataset){var animationManager=dataset.getFromEnv("animationManager");return animationManager.setAnimation({el:"group",attr:{name:groupName},container:parentContainer,component:dataset,label:"group"})},singleFillColorFn=function singleFillColorFn(color,defaultRadius){var value=defaultRadius?1:UNDEF;return(0,_lib.toRaphaelColor)({color:(0,_lib.getFirstColor)(color.color,value),alpha:(0,_lib.getFirstAlpha)(color.alpha,value)})},getContainerPosition=function getContainerPosition(elem,noscroll){var p={left:0,top:0},el=elem,clientRect;if(el.getBoundingClientRect){clientRect=el.getBoundingClientRect();p.top=clientRect.top+(win.pageYOffset||doc.scrollTop||0)-(doc.clientTop||0);p.left=clientRect.left+(win.pageXOffset||doc.scrollLeft||0)-(doc.clientLeft||0)}else{while(el){p.left+=el.offsetLeft||0;p.top+=el.offsetTop||0;if(el!==doc.body&&el!==doc.documentElement&&!noscroll){p.left-=el.scrollLeft||0;p.top-=el.scrollTop||0}el=el.offsetParent}}return p},getClickArcTangent=function getClickArcTangent(x,y,center,ref,pieYScale){return mathATan2((y-center[1]-ref.top)/pieYScale,x-center[0]-ref.left)},plotClickHandler=exports.plotClickHandler=function plotClickHandler(dataSet,ele){return function(e){var plotItem=ele.data("plotItem"),seriesData=plotItem.seriesData;!seriesData.isRotating&&dataSet.plotGraphicClick.call(ele,e)}},plotGraphicClick=exports.plotGraphicClick=function plotGraphicClick(dataset){return function(evt){var o=this.element||this,plotItem=o.plotItem||o.data("plotItem"),elData=o.data("eventArgs")||{},prevTextPos,chart=plotItem.chart,animationManager=dataset.getFromEnv("animationManager"),index=plotItem.index,seriesData=dataset.config,enableMultiSlicing=seriesData.enableMultiSlicing,set=dataset.components.data[index],setGraphics=set.graphics,setConfig=set.config,doNotSlice=setConfig.doNotSlice,atleastOneOtherSliced,graphic,dataLabel,innerDataLabel,sliced,slicedTranslation=setConfig.slicedTranslation,transX,transY,connector,connectorPath,lastSliceTimeStamp,minTimeForNextSlice=400,eventArgs,path;!seriesData.isRotating&&evt&&chart.plotEventHandler(o,evt);if(seriesData.isRotating||seriesData.singletonCase||doNotSlice||!chart.config){return}atleastOneOtherSliced=!enableMultiSlicing&&dataset.sliceInOtherPies(index);if((sliced=setConfig.sliced)&&atleastOneOtherSliced){return}if(supportsTouch&&!supportsOnlyTouch){lastSliceTimeStamp=(new Date).getTime();if(plotItem.lastSliceTimeStamp&&lastSliceTimeStamp-plotItem.lastSliceTimeStamp<minTimeForNextSlice){return}plotItem.lastSliceTimeStamp=lastSliceTimeStamp}graphic=setGraphics.element;connector=setGraphics.connector;dataLabel=setGraphics.label||setGraphics.dataLabel;innerDataLabel=setGraphics.innerLabel;slicedTranslation=typeof slicedTranslation==="object"?"t"+slicedTranslation:slicedTranslation;connectorPath=setConfig.connectorPath;transX=(sliced?-1:1)*setConfig.transX;transY=(sliced?-1:1)*setConfig.transY;eventArgs=graphic.data(EVENTARGS)||graphic.data(EVENTARGS,{});chart.fireChartInstanceEvent("slicingStart",{slicedState:sliced,dataIndex:"index"in elData&&elData.index,data:dataset.getPlotData(index,sliced)});animationManager.setAnimationState("slicing");animationManager.setAnimation({el:graphic,attr:{transform:sliced?"t0,0":slicedTranslation},component:dataset,label:"slice",callback:function callback(){chart.fireChartInstanceEvent("slicingEnd",{slicedState:sliced,dataIndex:"index"in elData&&elData.index,data:dataset.getPlotData(index,!sliced)})}});if(dataLabel&&dataLabel.x){if(!(prevTextPos=dataLabel.data("textPos"))){prevTextPos=dataLabel.data("textPos",{x:dataLabel.x,y:dataLabel.y})}animationManager.setAnimation({el:dataLabel,attr:{x:dataLabel.x+(sliced?0:transX),y:dataLabel.y+(sliced?0:transY)},label:"label-sliced",component:dataset});prevTextPos.x=dataLabel.x+(sliced?0:transX)}innerDataLabel&&animationManager.setAnimation({el:innerDataLabel,attr:{x:innerDataLabel.x+(sliced?0:transX),y:innerDataLabel.y+(sliced?0:transY)},label:"label-sliced",component:dataset});if(connector&&connectorPath){path=connectorPath.slice(0);path[1]+=transX;path[2]+=transY;path[4]+=transX;path[5]+=transY;path[6]+=transX;path[7]+=transY;animationManager.setAnimation({el:connector,attr:{path:path},label:"connector-sliced",component:dataset});setConfig.connectorPath=path}eventArgs.isSliced=sliced=setConfig.sliced=!sliced;return sliced}},handlers=function handlers(dataset){var animationManager=dataset.getFromEnv("animationManager");return{plotDragMove:function plotDragMove(evt){var o=this,plotItem=o.data("plotItem"),chart=plotItem.chart,evtData=evt.data,dx=evtData[0],dy=evtData[1],x=evtData[2],y=evtData[3],seriesData=plotItem.seriesData,datasetConf=dataset.config,angle;if(isNaN(dx)||isNaN(dy)||!datasetConf.enableRotation||seriesData.singletonCase||seriesData.isRightClicked){return}angle=getClickArcTangent.call(evt,x,y,seriesData.pieCenter,seriesData.chartPosition,1);if(seriesData.dragStartAngle!==angle&&!seriesData.isRotating){seriesData.isRotating=true;chart.fireChartInstanceEvent("RotationStart",{startingAngle:seriesData._rotationalStartAngle=chart._startingAngle()})}datasetConf.startAngle+=angle-seriesData.dragStartAngle;seriesData.dragStartAngle=angle;seriesData.moveDuration=0;if(!datasetConf.updateInited){datasetConf.updateInited=true;chart.addJob("pie_batch_rotate",chart._batchRotate||(chart._batchRotate=function(){dataset._rotate();datasetConf.updateInited=false}),_schedular.priorityList.draw,{oneInAFrame:true})}},plotDragStart:function plotDragStart(evt){var o=this,plotItem=o.data("plotItem"),chart=plotItem.chart,seriesData=plotItem.seriesData,datasetConf=dataset.config,button=(0,_lib.pluckNumber)(evt.button,evt.originalEvent.button),startingAng=-datasetConf.startAngle*rad2deg,angle,x=evt.data[0],y=evt.data[1];seriesData.isRightClicked=!!(!_lib.touchEnabled&&button!==0&&button!==1);if(!datasetConf.enableRotation||seriesData.isRightClicked){return}seriesData.isRotating=false;seriesData.chartPosition=getContainerPosition(chart.getFromEnv("chart-container"));angle=getClickArcTangent.call(evt,x,y,seriesData.pieCenter,seriesData.chartPosition,1);seriesData.dragStartAngle=angle;seriesData.startingAngleOnDragStart=startingAng},plotDragEnd:function plotDragEnd(){var o=this,plotItem=o.data("plotItem"),chart=plotItem.chart,dataSet=chart.getChildren("dataset")[0],dataSetConfig=dataSet.config,chartConfig=chart.config,seriesData=plotItem.seriesData,startingAng=-dataSetConfig.startAngle*rad2deg;if(seriesData.isRightClicked){return}chartConfig.clicked=true;if(!chart.disposed){dataset._rotate()}delete chartConfig.clicked;if(seriesData.isRotating){setTimeout((function(){seriesData.isRotating=false}),0);chart.fireChartInstanceEvent("RotationEnd",{startingAngle:(0,_lib.normalizeAngle)(startingAng,true),changeInAngle:startingAng-dataSetConfig.startingAngleOnDragStart})}!seriesData.isHovered&&dataset.config.handlersAPI.onPlotHover(o,false)},plotRollOver:function plotRollOver(e){var ele=this,plotItem=ele.plotItem||ele.data("plotItem"),chart=plotItem.chart,conf=plotItem.seriesData,dataSet=chart.getDatasets()[0],animationmanager=dataSet.getFromEnv("animationManager");if(!conf.isRotating){chart.plotEventHandler(ele,e,ROLLOVER);dataSet.config.handlersAPI.onPlotHover(ele,true,animationmanager)}dataSet.fireEvent("datasetrollover",plotItem);conf.isHovered=true},plotRollOut:function plotRollOut(e){var ele=this,plotItem=ele.plotItem||ele.data("plotItem"),chart=plotItem.chart,conf=plotItem.seriesData,dataSet=chart.getDatasets()[0];if(!conf.isRotating){chart.plotEventHandler(ele,e,ROLLOUT);dataSet.config.handlersAPI.onPlotHover(ele,false)}dataSet.fireEvent("datasetrollout",plotItem);conf.isHovered=false},onPlotHover:function onPlotHover(plot,hover){var plotItem=plot.data("plotItem"),center=plotItem.center,rolloverProps=plotItem.rolloverProperties||{},color=hover?rolloverProps.color:plotItem.color,borderWidth=hover?rolloverProps.borderWidth:plotItem.borderWidth,borderColor=hover?rolloverProps.borderColor:plotItem.borderColor;if(color){if(hover){color.cx=center[0];color.cy=center[1];color.r=plotItem.radius}rolloverProps.enabled&&animationManager.setAnimation({el:plotItem.graphic,component:dataset,attr:{fill:(0,_lib.toRaphaelColor)(color),"stroke-width":borderWidth,stroke:borderColor}})}}}},sortArrayByPoint=function sortArrayByPoint(a,b){return a.point.config.value-b.point.config.value},sortArrayByAngle=function sortArrayByAngle(a,b){return a.angle-b.angle},labelClickFn=exports.labelClickFn=function labelClickFn(chart,link){link&&chart.getFromEnv("linkClickFN")&&chart.getFromEnv("linkClickFN").call({link:link},true)},hideFn=exports.hideFn=function hideFn(){this.hide()},removeFn=function removeFn(){this.remove()},handleDisplayValueTags=function handleDisplayValueTags(inputString){if(!inputString)return inputString;var spans;var tempDiv=document.createElement("div");tempDiv.innerHTML=_trustedPolicy.default.createHTML(inputString);spans=tempDiv.querySelectorAll("span");spans.forEach((function(span){var content=span.innerHTML;if(content.includes("<br>")){var splitContent=content.split("<br>"),newSpans=splitContent.map((function(part){var newSpan=document.createElement("span");newSpan.style=span.getAttribute("style");newSpan.innerHTML=_trustedPolicy.default.createHTML(part);return newSpan.outerHTML}));span.outerHTML=newSpans.join("<br>")}}));return tempDiv.innerText},ySign=[1,1,-1,-1],xSign=[1,-1,-1,1];function _trimData(datasetJSON){if(!this.config.JSONData){return}var dataSet=this,i,len,removeDataArr,legend=dataSet.getFromEnv("legend"),config,prevData=dataSet.config.JSONData,prevDataLength=prevData.data&&prevData.data.length,currDataLength=datasetJSON.data&&datasetJSON.data.length||0,dataDiff=prevDataLength-currDataLength;if(dataDiff>0){dataSet.removeData(currDataLength,dataDiff,false)}removeDataArr=dataSet.components.removeDataArr||[];for(i=0,len=removeDataArr.length;i<len;i++){config=removeDataArr[i].config;config.legendItemId&&legend.disposeItem(config.legendItemId)}}(0,_dependencyManager.addDep)({name:"pie2dAnimation",type:"animationRule",extension:_index.default});(0,_redraphaelShapes.default)(Raphael);var Pie2DDataset=function(_AreaDataset){function Pie2DDataset(){var _this;_this=_AreaDataset.call(this)||this;_this.plotGraphicClick=plotGraphicClick(_this);return _this}(0,_inheritsLoose2.default)(Pie2DDataset,_AreaDataset);var _proto=Pie2DDataset.prototype;_proto.getType=function getType(){return"dataset"};_proto.getName=function getName(){return"pie2D"};_proto.__setDefaultConfig=function __setDefaultConfig(){_AreaDataset.prototype.__setDefaultConfig.call(this);this.config.doughnutradius=0};_proto.configureAttributes=function configureAttributes(datasetJSON){if(!datasetJSON){return false}this.trimData(datasetJSON);this.config.JSONData=datasetJSON;var dataSet=this,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,conf=dataSet.config,JSONData=dataSet.config.JSONData,chartAttr=dataSet.getFromEnv("chart-attrib"),is3D=chart.config.is3D,isPie=/pie/.test(dataSet.getName()),radius3D,use3DLighting,toolTipSepChar,enableMultiSlicing,enableAnimation;conf.handlersAPI=handlers(dataSet);dataSet.setState("visible",(0,_lib.pluckNumber)(dataSet.config.JSONData.visible,!Number(dataSet.config.JSONData.initiallyhidden),1)===1);(0,_lib.parseConfiguration)({},dataSet.config,chart&&chart.config);enableAnimation=conf.enableAnimation=(0,_lib.pluckNumber)(chartAttr.animation,chartAttr.defaultanimation,1);conf.animation=!enableAnimation?false:{duration:(0,_lib.pluckNumber)(chartAttr.animationduration,chartAttr.moveduration,1)*1e3};conf.transposeAnim=!enableAnimation&&!(0,_lib.pluckNumber)(conf.transposeanimation,1)?false:{duration:(0,_lib.pluckNumber)(chartAttr.transposeanimduration,.2)*1e3};conf.showPlotBorder=(0,_lib.pluckNumber)(chartAttr.showplotborder,1);conf.usePattern=(0,_lib.pluckNumber)(chartConfig.usePattern,0);conf.patternType=_column.PATTERN_TYPES.includes(JSONData.patterntype)?JSONData.patterntype:chartConfig.patternType;conf.patternDensity=(0,_lib.pluckNumber)(JSONData.patterndensity,chartConfig.patternDensity);conf.patternAlpha=(0,_lib.pluckNumber)(JSONData.patternalpha,chartConfig.patternAlpha);conf.patternBgColor=(0,_lib.pluck)(JSONData.patternbgcolor,conf.patternBgColor);conf.showHoverEffect=(0,_lib.pluckNumber)(chartAttr.plothovereffect,chartAttr.showhovereffect,UNDEF);conf.usePattern&&(conf.showHoverEffect=0);conf.showTooltip=(0,_lib.pluckNumber)(chartAttr.showtooltip,1);conf.toolText=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)((0,_lib.pluck)(JSONData.plottooltext,chartAttr.plottooltext),false));enableMultiSlicing=conf.enableMultiSlicing=(0,_lib.pluckNumber)(chartAttr.enablemultislicing,1);use3DLighting=conf.use3DLighting=(0,_lib.pluckNumber)(chartAttr.use3dlighting,1);conf.usePattern&&(use3DLighting=conf.use3DLighting=0);radius3D=conf.radius3D=use3DLighting?(0,_lib.pluckNumber)(chartAttr.radius3d,90):100;conf.showZeroPies=(0,_lib.pluckNumber)(chartAttr.showzeropies,1);conf.showPercentInToolTip=(0,_lib.pluckNumber)(chartAttr.showpercentintooltip,1);conf.showLabels=(0,_lib.pluckNumber)(chartAttr.showlabels,1);conf.showTextOutline=(0,_lib.pluckNumber)(chartAttr.textoutline,0);conf.labelFontColor=(0,_lib.pluck)(JSONData.labelfontcolor,chartAttr.labelfontcolor,chartConfig.labelfontcolor);conf.labelFont=(0,_lib.pluck)(JSONData.labelfont,chartAttr.labelfont,chartConfig.basefont);conf.showValues=(0,_lib.pluckNumber)(JSONData.showvalues,chartAttr.showvalues,1);conf.showPercentValues=(0,_lib.pluckNumber)(chartAttr.showpercentvalues,chartAttr.showpercentagevalues,0);toolTipSepChar=conf.toolTipSepChar=(0,_lib.pluck)(chartAttr.tooltipsepchar,chartAttr.hovercapsepchar,_lib.COMMASPACE);conf.labelSepChar=(0,_lib.parseUnsafeString)((0,_lib.pluck)(chartAttr.labelsepchar,toolTipSepChar));conf.pieBorderColor=(0,_lib.pluck)(chartAttr.plotbordercolor,chartAttr.piebordercolor);conf.pieBorderAlpha=(0,_lib.pluckNumber)(chartAttr.plotborderalpha,chartAttr.pieborderalpha);conf.pieBorderThickness=conf.showPlotBorder?(0,_lib.pluckNumber)(chartAttr.plotborderthickness,chartAttr.pieborderthickness,chartConfig.plotborderthickness,1):0;conf.plotDashLen=(0,_lib.pluckNumber)(chartAttr.plotborderdashlen,5);conf.plotDashGap=(0,_lib.pluckNumber)(chartAttr.plotborderdashgap,4);conf.showValueInLegend=(0,_lib.pluckNumber)(chartAttr.showvalueinlegend,0);conf.showLabelInLegend=(0,_lib.pluckNumber)(chartAttr.showlabelinlegend,1);conf.valueBeforeLabelInLegend=(0,_lib.pluckNumber)(chartAttr.valuebeforelabelinlegend,0);conf.showValueAsPercentInLegend=(0,_lib.pluckNumber)(chartAttr.showvalueaspercentinlegend,1);conf.showValuesInLegend=(0,_lib.pluckNumber)(chartAttr.showvaluesinlegend,1);conf.legendSepChar=(0,_lib.pluck)(chartAttr.legendsepchar,", ");conf.showvalues=(0,_lib.pluckNumber)(chartAttr.showvalues,1);conf.chartPosition=(0,_lib.getPosition)(chart.getFromEnv("chart-container"),chart);conf.timerThreshold=30;if(radius3D>100){radius3D=100}if(radius3D<0){radius3D=0}conf.showLegend=(0,_lib.pluckNumber)(chartAttr.showlegend,0);conf.reverselegend=!(0,_lib.pluckNumber)(chartAttr.reverselegend,0);chart.config.is3D=is3D;conf.pieYScale=(0,_lib.pluckNumber)(chartAttr.pieyscale,40);if(conf.pieYScale<1){conf.pieYScale=1}if(conf.pieYScale>=100){conf.pieYScale=80}conf.pieYScale/=100;conf.pieSliceDepth=(0,_lib.pluckNumber)(chartAttr.pieslicedepth,15);if(conf.pieSliceDepth<1){conf.pieSliceDepth=1}conf.managedPieSliceDepth=conf.pieSliceDepth;conf.enableMultiSlicing=!!enableMultiSlicing;conf.startAngle=(0,_lib.pluckNumber)(chartAttr.startingangle,0)%360*-(pi/180);conf.usePerPointLabelColor=chartAttr.colorlabelsfromplot===_lib.ONESTRING;conf.reversePlotOrder=(0,_lib.pluckNumber)(chartAttr.reverseplotorder,0);conf.animateClockWise=(0,_lib.pluckNumber)(chartAttr.animateclockwise,conf.reversePlotOrder);conf.showShadow=(0,_lib.pluckNumber)(chartAttr.showshadow,1);conf.innerLabelRadiusPercent=(0,_lib.pluckNumber)(chartAttr.innerlabelradiuspercent,67)/100;conf.minAngleForValue=(0,_lib.pluckNumber)(chartAttr.minangleforvalue,0)*(pi/180);conf.minAngleForLabel=(0,_lib.pluckNumber)(chartAttr.minangleforlabel,0)*(pi/180);conf.singletonCase=JSONData.data.length===1;conf.labelPosition=(0,_lib.pluck)(chartAttr.labelposition,conf.singletonCase&&isPie?INSIDE:OUTSIDE).toLowerCase();conf.valuePosition=(0,_lib.pluck)(chartAttr.valueposition,conf.singletonCase&&isPie?INSIDE:OUTSIDE).toLowerCase();conf.valueTotal=0;dataSet._setConfigure();chartConfig.showLegend&&dataSet._addLegend()};_proto.trimData=function trimData(datasetJSON){_trimData.call(this,datasetJSON)};_proto._parseDisplayProperties=function _parseDisplayProperties(dataJSON,config){var setTooltext,pValue,toolText=_lib.BLANKSTRING,TTValue,value,labelText,displayValueText,displayValue,displayValueArgs,showLabel,showValue,dataSet=this,chart=dataSet.getFromEnv("chart"),numberFormatter=dataSet.getFromEnv("number-formatter"),chartAttr=chart.getFromEnv("chart-attrib"),conf=dataSet.config,dataValue=(0,_lib.pluckNumber)(config.y,numberFormatter.getCleanValue(dataJSON.value,true)),totalValue=conf.valueTotal,showLabels=conf.showLabels,name=(0,_lib.parseUnsafeString)((0,_lib.pluck)(config.seriesName,dataJSON.label,dataJSON.name,_lib.BLANKSTRING)),showPercentValues=conf.showPercentValues,showPercentInToolTip=conf.showPercentInToolTip,minAngleForLabel,minAngleForValue,labelSepChar=conf.labelSepChar,toolTipSepChar=conf.toolTipSepChar,showTooltip=conf.showTooltip;setTooltext=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)((0,_lib.pluck)(dataJSON.tooltext,conf.toolText),false));pValue=config.pValue=numberFormatter.percentValue(dataValue/totalValue*100);value=config.value=numberFormatter.dataLabels(dataValue)||_lib.BLANKSTRING;showLabel=config.showLabel=(0,_lib.pluckNumber)(dataJSON.showlabel,showLabels);showValue=config.showValue=(0,_lib.pluckNumber)(dataJSON.showvalue,conf.showValues);config.labelFontColor=(0,_lib.pluck)(dataJSON.labelfontcolor,conf.labelFontColor);config.labelFont=(0,_lib.pluck)(dataJSON.labelfont,conf.labelFont);labelText=config.labelText=showLabel===1?name:_lib.BLANKSTRING;displayValueText=config.valueText=showValue===1?showPercentValues===1?pValue:value:_lib.BLANKSTRING;config.legendValueText=conf.showValuesInLegend===1?conf.showValueAsPercentInLegend===1?pValue:value:_lib.BLANKSTRING;TTValue=showPercentInToolTip?pValue:value;displayValue=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)(handleDisplayValueTags(dataJSON.displayvalue)));config.labelPosition=(0,_lib.pluck)(dataJSON.labelposition,conf.labelPosition).toLowerCase();config.valuePosition=(0,_lib.pluck)(dataJSON.valueposition,conf.valuePosition).toLowerCase();minAngleForLabel=(0,_lib.pluckNumber)(dataJSON.minangleforlabel);if(!isNaN(minAngleForLabel)){config.minAngleForLabel=minAngleForLabel%360*(pi/180)}else{config.minAngleForLabel=conf.minAngleForLabel}minAngleForValue=(0,_lib.pluckNumber)(dataJSON.minangleforvalue);if(!isNaN(minAngleForValue)){config.minAngleForValue=minAngleForValue%360*(pi/180)}else{config.minAngleForValue=conf.minAngleForValue}config.innerLabelRadiusPercent=(0,_lib.pluckNumber)(dataJSON.innerlabelradiuspercent,conf.innerLabelRadiusPercent);displayValueArgs=(0,_lib.pluck)(displayValue,name+labelSepChar+(showPercentValues?pValue:value),_lib.BLANKSTRING);if(displayValue!==UNDEF&&showValue){displayValueText=config.labelText=displayValue;config.valueText=_lib.BLANKSTRING}else{if(displayValueText!==_lib.BLANKSTRING&&labelText!==_lib.BLANKSTRING){displayValueText=labelText+labelSepChar+displayValueText}else{displayValueText=(0,_lib.pluck)(labelText,displayValueText)}}if(showTooltip){if(setTooltext!==UNDEF){toolText=(0,_lib.parseTooltext)(setTooltext,[1,2,3,5,6,7,14,24,25],{formattedValue:value,label:name,yaxisName:(0,_lib.parseUnsafeString)(chartAttr.yaxisname),xaxisName:(0,_lib.parseUnsafeString)(chartAttr.xaxisname),percentValue:pValue,sum:numberFormatter.dataLabels(totalValue),unformattedSum:totalValue},dataJSON,chartAttr)}else{toolText=name;if(toolText!==_lib.BLANKSTRING){toolText=toolText+toolTipSepChar+TTValue}else{toolText=TTValue}}}config.displayValue=displayValueText;config.displayValueArgs=displayValueArgs;config.toolText=toolText;config.seriesName=name;config.categoryLabel=name;config.id=dataJSON.id?dataJSON.id:name};_proto._isStyled=function _isStyled(dataJSON){var dataSet=this,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config;if(chartConfig.usedataplotcolorforlabels||dataJSON.labelbordercolor||dataJSON.labelbgcolor||dataJSON.labelborderthickness||dataJSON.labelborderalpha||dataJSON.labelalpha||dataJSON.labelfont||dataJSON.labelfontsize||dataJSON.labelfontcolor||dataJSON.labelfontalpha||dataJSON.labelalpha||dataJSON.labelfontbold||dataJSON.labelfontitalic||dataJSON.labelborderpadding||dataJSON.labelborderradius||dataJSON.labelbgalpha||dataJSON.labelborderdashed||dataJSON.labelborderdashlen||dataJSON.labelborderdashgap){return true}};_proto._setConfigure=function _setConfigure(newDataset,newIndex){var index,name,setColor,setAlpha,borderConfig,setPlotBorderColor,setPlotBorderAlpha,pointShadow,legendText,legValue,isSliced,centerLabelConfig,setBorderDashed,pointDashStyle,dataObj,tempIndex,config,dataValue,dataConfig,dataJSON,dataSet=this,dataSetComponents=dataSet.components,removeDataArr=dataSetComponents.removeDataArr=dataSetComponents.removeDataArr||[],chart=dataSet.getFromEnv("chart"),chartAttr=chart.getFromEnv("dataSource").chart,chartConfig=chart.config,conf=dataSet.config,JSONData=dataSet.config.JSONData,setDataArr=(newDataset||JSONData).data,setDataLen=setDataArr&&setDataArr.length,showZeroPies=conf.showZeroPies,totalValue=conf.valueTotal||0,dataArr=[],plotBorderDash=(0,_lib.pluckNumber)(chartAttr.plotborderdashed,0),dataStore=dataSet.components.data||(dataSet.components.data=[]),numberFormatter=dataSet.getFromEnv("number-formatter"),colorM=dataSet.getFromEnv("color-manager"),labelInLeg=conf.labelInLeg,valInLeg=conf.valInLeg,setBorderWidth=conf.pieBorderThickness,reversePlotOrder=conf.reversePlotOrder,radius3D=conf.radius3D,enableMultiSlicing=conf.enableMultiSlicing,lastSlicedid=conf.lastSlicedid||0,seriesDashLen=(0,_lib.pluckNumber)(chartAttr.plotBorderDashed,5),seriesDashGap=(0,_lib.pluckNumber)(chartAttr.plotborderdashgap,4),valBefore=(0,_lib.pluckNumber)(chartAttr.valuebeforelabelinlegend,0),valAsPerInLeg=(0,_lib.pluckNumber)(chartAttr.showvalueaspercentinlegend,1),nullCount=0,dataIndex=[],sepChar=(0,_lib.pluck)(chartAttr.legendsepchar,", ");chartConfig.dataLabelStyle=_lib.parsexAxisStyles.apply(this,[{},{},chartAttr,chartConfig.dataLabelStyle,setColor]);for(index=0;index<setDataLen;index+=1){dataObj=setDataArr[index];dataValue=numberFormatter.getCleanValue(dataObj.value,true);if(!(dataValue===null||!showZeroPies&&dataValue===0)){dataArr.push(dataObj);dataIndex.push(index);totalValue+=dataValue}else{nullCount+=1}}!conf.singletonCase&&(conf.singletonCase=setDataLen-nullCount===1);if(nullCount&&dataStore.length>setDataLen-nullCount){for(index=dataStore.length-1;nullCount>0;index-=1,nullCount-=1){if(dataStore[index]){dataObj=dataStore[index];dataConfig=dataObj.config;removeDataArr.push(dataObj);dataConfig.y=null}}}if(totalValue===0){dataArr=[]}conf.valueTotal=totalValue;conf.dataLabelCounter=0;chartConfig.allPlotSliceEnabled=chartConfig.enableslicing;for(index=(setDataLen=dataArr.length)-1;index>=0;index-=1){tempIndex=index;if(newDataset){dataJSON=dataArr[index];if(newIndex!==UNDEF){tempIndex=newIndex+index;dataObj=dataStore[tempIndex]}else{tempIndex=dataStore.length-setDataLen+index;dataObj=dataStore[tempIndex]}}else{dataObj=dataStore[index]||(dataStore[index]={graphics:{},config:{}});dataJSON=dataArr[index]}config=dataObj&&dataObj.config;if(!config){config=dataStore[tempIndex].config={}}if(!dataObj.graphics){dataStore[tempIndex].graphics={}}config.y=dataValue=numberFormatter.getCleanValue(dataJSON.value,true);config.seriesName=name=(0,_lib.parseUnsafeString)((0,_lib.pluck)(dataJSON.label,dataJSON.name,_lib.BLANKSTRING));config.labellink=(0,_lib.pluck)(dataJSON.labellink,chartAttr.labellink);setColor=(0,_lib.pluck)(dataJSON.color,colorM.getPlotColor(dataIndex[index]));setColor=(0,_lib.hashify)(setColor);setAlpha=(0,_lib.pluck)(dataJSON.alpha,chartAttr.plotfillalpha,_lib.HUNDREDSTRING);borderConfig=config.borderConfig=dataSet._parseBorderConfig(setColor,setAlpha,dataJSON);setPlotBorderColor=borderConfig.setPlotBorderColor;setPlotBorderAlpha=borderConfig.setPlotBorderAlpha;pointShadow={opacity:mathMax(setAlpha,setPlotBorderAlpha)/100};isSliced=Boolean((0,_lib.pluckNumber)(dataJSON.issliced,chartAttr.issliced,0));if(isSliced){if(!enableMultiSlicing){if(lastSlicedid!==-1){dataStore[dataStore.length-lastSlicedid-1].sliced=false}conf.lastSlicedid=index}conf.preSliced=isSliced}config.patternType=_column.PATTERN_TYPES.includes(dataJSON.patterntype)?dataJSON.patterntype:conf.patternType;config.patternAngle=(0,_lib.pluckNumber)(dataJSON.patternangle,chartAttr.patternangle,config.patternType===_column.PATTERN_TYPES[0]?40:0);config.patternDensity=(0,_lib.pluckNumber)(dataJSON.patterndensity,conf.patternDensity);config.patternSize=(0,_lib.pluckNumber)(dataJSON.patternsize,config.patternType===_column.PATTERN_TYPES[0]?2:4);config.patternAlpha=(0,_lib.pluckNumber)(dataJSON.patternalpha,conf.patternAlpha);config.patternBgColor=(0,_lib.pluck)(dataJSON.patternbgcolor,conf.patternBgColor);setBorderDashed=(0,_lib.pluckNumber)(dataJSON.dashed,plotBorderDash);pointDashStyle=setBorderDashed?(0,_lib.getDashStyle)((0,_lib.pluck)(dataJSON.dashlen,seriesDashLen),(0,_lib.pluck)(dataJSON.dashgap,seriesDashGap),setBorderWidth):DASH_DEF;dataSet._parseDisplayProperties(dataJSON,config);legendText=labelInLeg?name:_lib.BLANKSTRING;if(valInLeg){legValue=valAsPerInLeg?numberFormatter.legendPercentValue(dataValue/totalValue*100):numberFormatter.legendValue(dataValue);legendText=valBefore?legValue+(legendText&&sepChar+legendText):(legendText&&legendText+sepChar)+legValue}conf.dataLabelCounter+=1;if(dataSet._isStyled(dataJSON)){config.style=_lib.parsexAxisStyles.apply(this,[dataJSON,{},chartAttr,chartConfig.dataLabelStyle,setColor])}else if(config.style){delete config.style}config.showInLegend=legendText!==_lib.BLANKSTRING;config.isVisible=true;config.name=legendText;config.shadow=pointShadow;config.setColor=setColor;config.setAlpha=setAlpha;config.color=(0,_printColor.default)(setColor,setAlpha,radius3D,conf.doughnutradius);config._3dAlpha=setAlpha;config.borderColor=(0,_lib.convertColor)(setPlotBorderColor,setPlotBorderAlpha);config.borderWidth=setBorderWidth;config.link=(0,_lib.getValidValue)(dataJSON.link);config.sliced=isSliced;config.dashStyle=pointDashStyle;config.setBorderDashed=setBorderDashed;if(!(config.doNotSlice=(0,_lib.pluck)(dataJSON.enableslicing,chartConfig.enableslicing)!==_lib.ONESTRING)&&chartConfig.allPlotSliceEnabled===_lib.ZEROSTRING){chartConfig.allPlotSliceEnabled=_lib.ONESTRING}dataSet._parseHoverEffectOptions(index);config.centerLabelConfig=centerLabelConfig;config.radius3D=radius3D}if(reversePlotOrder){dataStore&&dataStore.reverse()}conf.dataArr=dataArr;conf.enableRotation=dataStore.length>1?(0,_lib.pluckNumber)(chartAttr.enablerotation,1):0};_proto._parseHoverEffectOptions=function _parseHoverEffectOptions(index){var highlight,hoverColor,hoverAlpha,hoverBorderColor,hoverBorderAlpha,hoverBorderThickness,isHoverColorString,highlightColors,hColorsLen,hColorsLoop,dataSet=this,chart=dataSet.getFromEnv("chart"),chartAttr=chart.getFromEnv("dataSource").chart,conf=dataSet.config,config=dataSet.components.data[index].config,JSONData=dataSet.config.JSONData,dataJSON=JSONData.data[index],setColor=config.setColor,setAlpha=config._3dAlpha,radius3D=conf.radius3D,borderConfig=config.borderConfig,setPlotBorderAlpha=borderConfig.setPlotBorderAlpha,setPlotBorderColor=borderConfig.setPlotBorderColor,setBorderWidth=conf.setBorderWidth,hoverEffect=conf.usePattern?0:(0,_lib.pluckNumber)(config.hovereffect,conf.showHoverEffect),hoverEffects=config.hoverEffects={enabled:hoverEffect};if(hoverEffect===UNDEF&&!conf.usePattern){hoverEffect=hoverEffects.enabled=(0,_lib.pluck)(dataJSON.hovercolor,JSONData.hovercolor,chartAttr.plotfillhovercolor,dataJSON.hoveralpha,JSONData.hoveralpha,chartAttr.plotfillhoveralpha,dataJSON.borderhovercolor,JSONData.borderhovercolor,chartAttr.plotborderhovercolor,dataJSON.borderhoveralpha,JSONData.borderhoveralpha,chartAttr.plotborderhoveralpha,chartAttr.plotfillhoveralpha,dataJSON.borderhoverthickness,JSONData.borderhoverthickness,chartAttr.plotborderhoverthickness,UNDEF)!==UNDEF}if(hoverEffect){highlight=(0,_lib.pluckNumber)(dataJSON.highlightonhover,JSONData.highlight,chartAttr.highlight,1);hoverColor=(0,_lib.pluck)(dataJSON.hovercolor,JSONData.hovercolor,chartAttr.plotfillhovercolor);if(hoverColor&&highlight){highlight=0}hoverColor=(0,_lib.pluck)(hoverColor,setColor);hoverAlpha=(0,_lib.pluck)(dataJSON.hoveralpha,JSONData.hoveralpha,chartAttr.plotfillhoveralpha,setAlpha);hoverBorderColor=(0,_lib.pluck)(dataJSON.borderhovercolor,JSONData.borderhovercolor,chartAttr.plotborderhovercolor,setPlotBorderColor);config.hoverBorderColor=hoverBorderColor;hoverBorderAlpha=(0,_lib.pluck)(dataJSON.borderhoveralpha,JSONData.borderhoveralpha,chartAttr.plotborderhoveralpha,chartAttr.plotfillhoveralpha,setPlotBorderAlpha);hoverBorderThickness=(0,_lib.pluckNumber)(dataJSON.borderhoverthickness,JSONData.borderhoverthickness,chartAttr.plotborderhoverthickness,setBorderWidth);hoverColor.replace(/,+?$/,"");if(highlight===1){isHoverColorString=typeof hoverColor==="string";highlightColors=isHoverColorString?hoverColor.split(/\s{0,},\s{0,}/):hoverColor.color.split(/\s{0,},\s{0,}/);hColorsLen=highlightColors.length;for(hColorsLoop=0;hColorsLoop<hColorsLen;hColorsLoop++){highlightColors[hColorsLoop]=(0,_lib.getLightColor)(highlightColors[hColorsLoop],70)}if(isHoverColorString){hoverColor=highlightColors.join(",")}else{hoverColor.color=highlightColors.join(",")}}dataSet._setHoverColor(hoverEffects,hoverColor,hoverAlpha,radius3D);hoverEffects.hoverColor=hoverColor;hoverEffects.alpha=hoverAlpha;hoverEffects.borderColor=(0,_lib.convertColor)(hoverBorderColor,hoverBorderAlpha);hoverEffects.borderAlpha=hoverBorderAlpha;hoverEffects.borderWidth=hoverBorderThickness}else{hoverEffects.enabled=false}};_proto.organizeDatalabels=function organizeDatalabels(){var dataset=this,dsConfig=dataset.config,data=dataset.components.data,labelsPlacedOutside=[],labelsPlacedInside=[],i,len=data.length,pointConfig,quadrantAr,labelPosition,valuePosition;for(i=0;i<len;i++){pointConfig=data[i].config;labelPosition=pointConfig.labelPosition;valuePosition=pointConfig.valuePosition;if(pointConfig.y===null||typeof pointConfig.y==="undefined"||pointConfig.isVisible===false){continue}if(labelPosition===OUTSIDE&&valuePosition===OUTSIDE){labelsPlacedOutside.push({point:data[i]})}else if(labelPosition===INSIDE&&valuePosition===INSIDE){labelsPlacedInside.push({point:data[i]})}else{labelsPlacedOutside.push({point:data[i]});labelsPlacedInside.push({point:data[i]})}}quadrantAr=segregateLabelsInQuadrant(labelsPlacedOutside);dsConfig.labelsPlacedOutside=dataset.skipOverlappingLabels(quadrantAr);dsConfig.labelsPlacedInside=labelsPlacedInside;this.rotateDataLabels()};_proto.skipOverlappingLabels=function skipOverlappingLabels(_quadrantAr){var quadrantAr=_quadrantAr,dataset=this,dsConfig=dataset.config,dataLabelOptions=dsConfig.dataLabelOptions,labelsRadius=dataLabelOptions.distance+dsConfig.pieMinRadius,extraLabels,i,j,len,labelLineHeight,eligibleLabelAr=[],labelsMaxInQuadrant;labelLineHeight=dsConfig.labelLineHeight=parseInt(dataLabelOptions.style.fontSize,10);dsConfig.labelsMaxInQuadrant=labelsMaxInQuadrant=mathFloor(labelsRadius/labelLineHeight);for(i=0;i<QUADRANT_COUNT;i++){if(dataLabelOptions.skipOverlapLabels){extraLabels=quadrantAr[i].length-labelsMaxInQuadrant;if(extraLabels>0){quadrantAr[i].sort(sortArrayByPoint);extraLabels=quadrantAr[i].splice(0,extraLabels);for(j=0,len=extraLabels.length;j<len;j++){dataset.disposeLabelAndConnector(extraLabels[j].point.graphics,[{el:"label",animLabel:"label"},{el:"innerLabel",animLabel:"label"},{el:"connector",animLabel:"connector"}])}}}}for(i=0;i<QUADRANT_COUNT;i++){for(j=0,len=quadrantAr[i].length;j<len;j++){eligibleLabelAr.push(quadrantAr[i][j])}}return eligibleLabelAr};_proto.rotateDataLabels=function rotateDataLabels(){this.rotateOuterLabels();this.rotateInnerLabels()};_proto.rotateOuterLabels=function rotateOuterLabels(){var dataset=this,dsConfig=dataset.config,chart=dataset.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),legend=chart.getChildren("legend")[0],legendConfig=legend&&legend.config||{},smartLabel=dataset.getFromEnv("smartLabel"),smartLabelObj,chartConfig=chart.config,dataLabelOptions=dsConfig.dataLabelOptions,labelLineHeight=dsConfig.labelLineHeight,pieRadius=dsConfig.pieMinRadius,_chart$config=chart.config,canvasLeft=_chart$config.canvasLeft,canvasWidth=_chart$config.canvasWidth,useEllipsesWhenOverflow=_chart$config.useEllipsesWhenOverflow,connectorPadding=dataLabelOptions.connectorPadding,manageLabelOverflow=dataLabelOptions.manageLabelOverflow,distance=dataLabelOptions.distance,enableSmartLabels=dataLabelOptions.enableSmartLabels,quadrantAr=segregateLabelsInQuadrant(dsConfig.labelsPlacedOutside),labelsRadius=distance+pieRadius,mostPopulatedQuadrantCount=mathMax(quadrantAr[0].length,quadrantAr[1].length,quadrantAr[2].length,quadrantAr[3].length),quadrantRadius,cx=canvasLeft+canvasWidth*.5,cy=chartConfig.canvasTop+chartConfig.canvasHeight*.5,_dsConfig$handlersAPI=dsConfig.handlersAPI,plotDragStart=_dsConfig$handlersAPI.plotDragStart,plotDragEnd=_dsConfig$handlersAPI.plotDragEnd,plotDragMove=_dsConfig$handlersAPI.plotDragMove,plotRollOver=_dsConfig$handlersAPI.plotRollOver,plotRollOut=_dsConfig$handlersAPI.plotRollOut,i,q,len,point,oriY,oriX,unslicedX,unslicedY,firstPassY=[],secondPassY=[],maxAllowedWidth,tooltext,toolTipController=dataset.getFromEnv("toolTipController"),labelGroup=dataset.getContainer("label-group"),pointConfig,pointGraphics,connectorAttr,connectorPath,quadItem,sliceMidPoint,minYPossible,maxYPossible,textAttrs,connector,connectorCheck,dataLabel,dataLabelCheck;quadrantRadius=mathMax(mathMin(mostPopulatedQuadrantCount,dsConfig.labelsMaxInQuadrant)*labelLineHeight,labelsRadius+labelLineHeight);for(i=0;i<QUADRANT_COUNT;i++){quadrantAr[i].sort(sortArrayByAngle)}quadrantAr[0].reverse();quadrantAr[2].reverse();for(q=0;q<QUADRANT_COUNT;q++){maxYPossible=quadrantRadius;minYPossible=quadrantAr[q].length*labelLineHeight;firstPassY=[];for(i=0,len=quadrantAr[q].length;i<len;i++){quadItem=quadrantAr[q][i];oriY=mathAbs(quadrantRadius*mathSin(quadItem.angle));if(oriY>maxYPossible){oriY=maxYPossible}else if(oriY<minYPossible){oriY=minYPossible}minYPossible-=labelLineHeight;maxYPossible=oriY-labelLineHeight;firstPassY.push(oriY)}minYPossible=0;maxYPossible=quadrantRadius-(len-1)*labelLineHeight;secondPassY=[];for(i=quadrantAr[q].length-1;i>=0;i--){quadItem=quadrantAr[q][i];oriY=mathAbs(quadrantRadius*mathSin(quadItem.angle));if(oriY<minYPossible){oriY=minYPossible}else if(oriY>maxYPossible){oriY=maxYPossible}minYPossible=oriY+labelLineHeight;maxYPossible+=labelLineHeight;secondPassY.push(oriY)}for(i=0;i<len;i++){oriY=mathMin(quadrantRadius,(firstPassY[i]+secondPassY[len-1-i])/2);oriX=quadrantRadius*mathCos(Math.asin(oriY/quadrantRadius));quadItem=quadrantAr[q][i];point=quadItem.point;pointConfig=point.config;pointGraphics=point.graphics;connectorAttr=pointConfig.props.connector.attr;tooltext=_lib.BLANKSTRING;textAttrs=Object.assign({},pointConfig.props.label.attr);textAttrs["text-anchor"]=q===0||q===3?"start":"end";textAttrs.y=unslicedY=cy+ySign[q]*oriY;textAttrs.x=unslicedX=cx+xSign[q]*(oriX+2*connectorPadding);if(pointConfig.sliced){textAttrs.y+=pointConfig.transY;textAttrs.x+=pointConfig.transX}if(pointConfig.labelPosition===OUTSIDE&&pointConfig.valuePosition===OUTSIDE){dataset.disposeLabelAndConnector(pointGraphics,[{el:"innerLabel",animLabel:"label"}])}else{textAttrs.text=pointConfig.labelPosition===OUTSIDE?pointConfig.labelText:pointConfig.valueText}if(textAttrs.text){sliceMidPoint={x:cx+pieRadius*mathCos(quadItem.angle),y:cy+pieRadius*mathSin(quadItem.angle)};connectorPath=pointConfig.connectorPath=(0,_pieLabelUtils.getConnectorPath)(sliceMidPoint,{x:cx+xSign[q]*oriX,y:cy+ySign[q]*oriY},{isSlanted:dataLabelOptions.isSmartLineSlanted,padding:connectorPadding,quadrant:q,transX:pointConfig.sliced?pointConfig.transX:0,transY:pointConfig.sliced?pointConfig.transY:0});if(manageLabelOverflow){maxAllowedWidth=q===1||q===2?textAttrs.x-canvasLeft:canvasLeft+canvasWidth-textAttrs.x;if(legendConfig.align==="right"||legendConfig.align==="left"){maxAllowedWidth-=legendConfig.symbolWidth+2*legendConfig.borderWidth}smartLabel.useEllipsesOnOverflow(useEllipsesWhenOverflow);smartLabel.setStyle(pointConfig.style);smartLabelObj=smartLabel.getSmartText(textAttrs.text,maxAllowedWidth,parseFloat(smartLabel.style.lineHeight));textAttrs.text=smartLabelObj.text;tooltext=smartLabelObj.tooltext}dataLabelCheck=pointGraphics.label;pointGraphics.label=dataLabel=animationManager.setAnimation({el:dataLabelCheck||"text",attr:textAttrs,css:pointConfig.props.label.css,component:dataset,container:labelGroup,label:"label"});dataLabel.outlineText(dsConfig.showTextOutline,textAttrs.fill);if(chartConfig.showtooltip&&dataLabel.abbrArr&&dataLabel.abbrArr.length){toolTipController.enableToolTip(dataLabel,UNDEF)}if(!dataLabelCheck){dataLabel.on("fc-dragstart",plotDragStart).on("fc-dragmove",plotDragMove).on("fc-dragend",plotDragEnd).on("fc-click",labelClickFn.bind(dataLabel,chart,pointConfig.labellink)).on("fc-click",plotClickHandler(dataset,dataLabel)).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut)}if(tooltext){tooltext&&toolTipController.enableToolTip(dataLabel,tooltext)}else{toolTipController.disableToolTip(dataLabel)}dataLabel.x=unslicedX;dataLabel.y=unslicedY;dataLabel&&dataLabel.data("textPos",{x:textAttrs.x,y:textAttrs.y}).data("plotItem",pointConfig.plotItem).data(EVENTARGS,pointConfig.eventArgs);connectorCheck=pointGraphics.connector;if(enableSmartLabels){pointGraphics.connector=connector=animationManager.setAnimation({el:connectorCheck||"path",attr:_objectSpread({path:connectorPath},connectorAttr),container:labelGroup,component:dataset,label:"connector"});if(!connectorCheck){connector.on("fc-dragstart",plotDragStart).on("fc-dragmove",plotDragMove).on("fc-dragend",plotDragEnd).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut)}connector.data("connectorPath",{path:connectorPath}).data("plotItem",pointConfig.plotItem).data(EVENTARGS,pointConfig.eventArgs)}else if(connectorCheck){dataset.disposeLabelAndConnector(pointGraphics,[{el:"connector",animLabel:"connector"}])}}else{dataset.disposeLabelAndConnector(pointGraphics,[{el:"label",animLabel:"label"},{el:"connector",animLabel:"connector"}])}}}};_proto.rotateInnerLabels=function rotateInnerLabels(){var dataset=this,dsConfig=dataset.config,chart=dataset.getFromEnv("chart"),chartConfig=chart.config,toolTipController=dataset.getFromEnv("toolTipController"),pointAr=dsConfig.labelsPlacedInside,pieCenter=dsConfig.pieCenter,animationManager=dataset.getFromEnv("animationManager"),cx=pieCenter[0],cy=pieCenter[1],unslicedX,unslicedY,i,len=pointAr.length,oriDataLen=dataset.components.data.length,_dsConfig$handlersAPI2=dsConfig.handlersAPI,plotDragStart=_dsConfig$handlersAPI2.plotDragStart,plotDragEnd=_dsConfig$handlersAPI2.plotDragEnd,plotDragMove=_dsConfig$handlersAPI2.plotDragMove,plotRollOver=_dsConfig$handlersAPI2.plotRollOver,plotRollOut=_dsConfig$handlersAPI2.plotRollOut,point,pointConfig,pointGraphics,angle,radius,minAngleForLabel,minAngleForValue,sectorAngle,textAttrs,dataLabel,dataLabelCheck;for(i=0;i<len;i++){point=pointAr[i].point;pointConfig=point.config;pointGraphics=point.graphics;textAttrs=Object.assign({},pointConfig.props.label.attr);sectorAngle=mathAbs(pointConfig.startAngle-pointConfig.endAngle);minAngleForLabel=pointConfig.minAngleForLabel;minAngleForValue=pointConfig.minAngleForValue;if(pointConfig.valuePosition===INSIDE&&pointConfig.labelPosition===INSIDE){dataset.disposeLabelAndConnector(pointGraphics,[{el:"label",animLabel:"label"},{el:"connector",animLabel:"connector"}]);if(sectorAngle>=minAngleForValue&§orAngle<minAngleForLabel){textAttrs.text=pointConfig.valueText}else if(sectorAngle<minAngleForValue&§orAngle>=minAngleForLabel){textAttrs.text=pointConfig.labelText}else if(sectorAngle<minAngleForValue&§orAngle<minAngleForLabel){textAttrs.text=_lib.BLANKSTRING}}else{if(pointConfig.valuePosition===INSIDE){textAttrs.text=sectorAngle>=minAngleForValue?pointConfig.valueText:_lib.BLANKSTRING}else{textAttrs.text=sectorAngle>=minAngleForLabel?pointConfig.labelText:_lib.BLANKSTRING}}if(textAttrs.text){radius=dsConfig.pieMinRadius*pointConfig.innerLabelRadiusPercent;angle=(0,_pieLabelUtils.getCleanAngle)(pointConfig.angle);textAttrs.x=unslicedX=cx+(oriDataLen>1?radius*mathCos(angle):0);textAttrs.y=unslicedY=cy+(oriDataLen>1?radius*mathSin(angle):0);if(pointConfig.sliced){textAttrs.y+=pointConfig.transY;textAttrs.x+=pointConfig.transX}textAttrs["text-anchor"]=MIDDLE_STR;dataLabelCheck=pointGraphics.innerLabel;pointGraphics.innerLabel=dataLabel=animationManager.setAnimation({el:dataLabelCheck||"text",attr:textAttrs,css:pointConfig.props.label.css,component:dataset,container:dataset.getContainer("label-group"),label:"label"});dataLabel.outlineText(dsConfig.showTextOutline,textAttrs.fill);if(chartConfig.showtooltip&&dataLabel.abbrArr&&dataLabel.abbrArr.length){toolTipController.enableToolTip(dataLabel,UNDEF)}if(!dataLabelCheck){dataLabel.on("fc-dragstart",plotDragStart).on("fc-dragmove",plotDragMove).on("fc-dragend",plotDragEnd).on("fc-click",labelClickFn.bind(dataLabel,dataset.getFromEnv("chart"),pointConfig.labellink)).on("fc-click",plotClickHandler(dataset,dataLabel)).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut)}dataLabel.x=unslicedX;dataLabel.y=unslicedY;dataLabel&&dataLabel.data("textPos",{x:textAttrs.x,y:textAttrs.y}).data("plotItem",pointConfig.plotItem).data(EVENTARGS,pointConfig.eventArgs)}else{dataset.disposeLabelAndConnector(pointGraphics,[{el:"innerLabel",animLabel:"label"}])}}};_proto.disposeLabelAndConnector=function disposeLabelAndConnector(pointGraphics,props){if(props===void 0){props=[]}var dataset=this,animationManager=dataset.getFromEnv("animationManager"),i,len=props.length,prop,el;for(i=0;i<len;i++){prop=props[i];el=prop.el;pointGraphics[el]&&(pointGraphics[el]=animationManager.setAnimation({el:pointGraphics[el],component:dataset,label:prop.animLabel}));delete pointGraphics[el]}};_proto._setHoverColor=function _setHoverColor(hoverEffects,hoverColor,hoverAlpha,radius3D){var dataSet=this;if(radius3D){hoverEffects.color=(0,_printColor.default)(hoverColor,hoverAlpha,radius3D,dataSet.config.doughnutradius)}else{hoverEffects.color=hoverColor;hoverEffects.alpha=hoverAlpha}};_proto.updateData=function updateData(){var dataSet=this,conf=dataSet.config,dataStore=dataSet.components.data;conf.valueTotal-=dataStore[arguments[1]].config.y;_AreaDataset.prototype.updateData.call(this,arguments)};_proto._rotate=function _rotate(){var _ringPath,_rotateAttrs,dataSet=this,chart=dataSet.getFromEnv("chart"),conf=dataSet.config,plotData=dataSet.components.data,chartConfig=chart.config,piePlotOptions=conf.piePlotOptions,startAngle=(conf.startAngle||0)%pi2,slicedOffset=conf.slicingDistance,valueTotal=conf.valueTotal,factor=pi2/valueTotal,cx=chartConfig.canvasLeft+chartConfig.canvasWidth*.5,cy=chartConfig.canvasTop+chartConfig.canvasHeight*.5,r=conf.pieMinRadius,r2=(piePlotOptions.innerSize||0)*.5,val,angle,angle1,angle2,setConfig,setGraphics,i;angle1=angle2=startAngle;for(i=0;i<plotData.length;i+=1){setConfig=plotData[i].config;setGraphics=plotData[i].graphics;val=setConfig.y;if(val===null||val===UNDEF){continue}angle2=angle1;angle1-=!conf.singletonCase?val*factor:pi2;angle=(angle1+angle2)*.5;setConfig.angle=angle;setConfig.transX=mathCos(angle)*slicedOffset;setConfig.transY=mathSin(angle)*slicedOffset;setConfig.slicedTranslation=TRANSFORMSTR+mathCos(angle)*slicedOffset+_lib.COMMASTRING+mathSin(angle)*slicedOffset;if(!(_rotateAttrs=setConfig._rotateAttrs)){_rotateAttrs=setConfig._rotateAttrs={ringpath:[],transform:_lib.BLANKSTRING}}_ringPath=_rotateAttrs.ringpath;_ringPath[0]=cx;_ringPath[1]=cy;_ringPath[2]=r;_ringPath[3]=r2;_ringPath[4]=angle1;_ringPath[5]=angle2;setGraphics.element.attr({ringpath:_rotateAttrs.ringpath,transform:setConfig.sliced?setConfig.slicedTranslation:""})}dataSet.organizeDatalabels()};_proto._parsePiePlotOptions=function _parsePiePlotOptions(){var dataSet=this,conf=dataSet.config;return{size:conf.pieMinRadius,slicedOffset:conf.slicingDistance}};_proto._parseDataLabelOptions=function _parseDataLabelOptions(){return{style:this.getFromEnv("chart").config.dataLabelStyle}};_proto._addLegend=function _addLegend(){var i,config,dataObj,dataset=this,conf=dataset.config,chartAttr=dataset.getFromEnv("chart-attrib"),legend=dataset.getFromEnv("legend"),legendItem,configObject,JSONData=dataset.config.JSONData.data||{},toolTipController=dataset.getFromEnv("toolTipController"),dataStore=dataset.components.data,container,parentContainer,legendToolTipText,legendToolTipHandler=function legendToolTipHandler(e){var _e$sender;if(e!=null&&(_e$sender=e.sender)!=null&&_e$sender.config){container=e.sender.getLinkedParent();parentContainer=container?container.getChildContainer():UNDEF;if(parentContainer){legendToolTipText=e.sender.config.label;if(e.sender.config.tooltipText){legendToolTipText=e.sender.config.tooltipText}toolTipController.enableToolTip(parentContainer.itemGroup,legendToolTipText)}}};for(i=0;i<dataStore.length;i++){dataObj=dataStore[i];config=dataObj.config;if(config.y!==null&&config.seriesName){configObject={index:i,type:dataset.getName(),label:config.legendValueText+" "+config.seriesName,enabled:(0,_lib.pluckNumber)(config.includeInLegend,1),usePattern:conf.usePattern,legendIconAlpha:(0,_lib.pluckNumber)(JSONData[i].legendiconalpha),patternAttr:{patternType:config.patternType,patternAngle:config.patternAngle,patternDensity:config.patternDensity,patternSize:config.patternSize,color:config.setColor,patternAlpha:config.patternAlpha,patternBgColor:config.patternBgColor,alpha:config.setAlpha}};legendItem=legend.getItem(config.legendItemId);if(!legendItem){config.legendItemId=legend.createItem(dataset);legendItem=legend.getItem(config.legendItemId);dataset.addExtEventListener("fc-click",legendItem.itemClickFn,legendItem);if((chartAttr==null?void 0:chartAttr.disablelegendscroll)==="1"){dataset.addExtEventListener("fc-mouseover",legendToolTipHandler,legendItem)}}legendItem.configure(configObject);legendItem.setStateCosmetics("default",{symbol:{fill:(0,_lib.toRaphaelColor)(config.setColor),bgAlpha:(0,_lib.pluckNumber)(JSONData[i].legendiconbgalpha,JSONData[i].legendiconalpha,chartAttr.legendiconbgalpha,chartAttr.legendiconalpha,config.setAlpha),borderAlpha:(0,_lib.pluckNumber)(JSONData[i].legendiconborderalpha,JSONData[i].legendiconalpha,chartAttr.legendiconborderalpha,chartAttr.legendiconalpha,"100"),rawFillColor:config.setColor,stroke:(0,_lib.toRaphaelColor)(config.borderColor)}});if(config.displayValue&&(chartAttr==null?void 0:chartAttr.disablelegendscroll)==="1"){legendItem.config.tooltipText