apexcharts
Version:
A JavaScript Chart Library
6 lines (5 loc) • 29.2 kB
JavaScript
/*!
* ApexCharts v7.0.0
* (c) 2018-2026 ApexCharts
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ApexPie={})}(this,function(e){"use strict";var t=Object.defineProperty,a=Object.defineProperties,i=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,r=(e,a,i)=>a in e?t(e,a,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[a]=i,o=(e,t)=>{for(var a in t||(t={}))n.call(t,a)&&r(e,a,t[a]);if(s)for(var a of s(t))l.call(t,a)&&r(e,a,t[a]);return e},h=(e,t)=>a(e,i(t));const c=globalThis.ApexCharts,d=globalThis.ApexCharts.__internals,g=d.__apex_Animations;d.__apex_Animations_computeStagger,d.__apex_Animations_applyAnimationPolicy,d.__apex_Animations_prefersReducedMotion,d.__apex_Animations_applyProgressiveReveal;const p=globalThis.ApexCharts.__internals.__apex_Fill,f=globalThis.ApexCharts.__internals.__apex_Utils,u=globalThis.ApexCharts.__internals.__apex_Graphics,b=globalThis.ApexCharts.__internals.__apex_Filters,m=globalThis.ApexCharts.__internals.__apex_Scales;class x{constructor(e){this.w=e}drawYAxisTexts(e,t,a,i){const s=this.w,n=s.config.yaxis[0],l=s.formatters.yLabelFormatters[0];return new u(this.w).drawText({x:e+n.labels.offsetX,y:t+n.labels.offsetY,text:l(i,a),textAnchor:"middle",fontSize:n.labels.style.fontSize,fontFamily:n.labels.style.fontFamily,foreColor:Array.isArray(n.labels.style.colors)?n.labels.style.colors[a]:n.labels.style.colors})}getMaxLabelWidth(e,{fontSize:t,fontFamily:a}={}){const i=new u(this.w);let s=0;return e.forEach(e=>{if(null==e||""===e)return;const n=i.getTextRects(`${e}`,t||"12px",a,"");s=Math.max(s,n.width)}),s}drawExternalLabel(e){return function(e,t){const{lines:a,lineHeight:i,anchor:s,elbow:n,labelX:l,labelY:r,side:o,connector:h,style:c,foreColor:d}=t,g=new u(e),p=g.group({class:t.groupClass||"apexcharts-outer-label-group"});if(h.show){const e=`M ${s.x} ${s.y} L ${n.x} ${n.y} L ${l} ${r}`,a=g.drawPath({d:e,stroke:h.color,strokeWidth:h.width,fill:"none",strokeLinecap:"round"});a.node.classList.add(t.connectorClass||"apexcharts-outer-label-connector"),p.add(a)}const f="right"===o?l+4:l-4,b=a.length,m=r-(b-1)*i/2,x=g.drawText({x:f,y:m,text:1===b?a[0]:a,textAnchor:"right"===o?"start":"end",fontSize:c.fontSize,fontFamily:c.fontFamily,fontWeight:c.fontWeight,foreColor:d,dominantBaseline:"central",cssClass:t.textClass||"apexcharts-outer-label"});if(b>1){const e=x.node.getElementsByTagName("tspan");for(let t=0;t<e.length;t++)e[t].setAttribute("x",`${f}`),e[t].setAttribute("dy",0===t?"0":`${i}`)}return p.add(x),p}(this.w,h(o({},e),{groupClass:"apexcharts-pie-name-label-group",textClass:"apexcharts-pie-name-label",connectorClass:"apexcharts-pie-label-connector"}))}}const A=globalThis.ApexCharts.__internals.__apex_Environment_Environment,y=Math.PI/180,w=180/Math.PI;function S(e,t,a,i){return{x:e+a*Math.cos((i-90)*y),y:t+a*Math.sin((i-90)*y)}}const v=e=>`${e.x} ${e.y}`;function L({cx:e,cy:t,rIn:a,rOut:i,a0:s,a1:n,r:l,spanDeg:r}){const o=(a,i)=>S(e,t,a,i),h=l/i*w,c=l/a*w,d=o(i,s+h),g=o(i,n-h),p=r-2*h>180?1:0,f=o(i,n),u=o(i-l,n),b=o(i,s),m=o(i-l,s),x=o(a,n-c),A=o(a,s+c),y=r-2*c>180?1:0,L=o(a,n),C=o(a+l,n),O=o(a,s),z=o(a+l,s);return["M",v(d),"A",i,i,0,p,1,v(g),"Q",v(f),v(u),"L",v(C),"Q",v(L),v(x),"A",a,a,0,y,0,v(A),"Q",v(O),v(z),"L",v(m),"Q",v(b),v(d),"Z"].join(" ")}class C{constructor(e,t){this.ctx=t,this.w=e,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=void 0!==e.globals.stroke.colors?e.globals.stroke.colors:e.globals.colors,this.defaultSize=Math.min(e.layout.gridWidth,e.layout.gridHeight),this.centerY=this.defaultSize/2,this.centerX=e.layout.gridWidth/2,"radialBar"===e.config.chart.type?this.fullAngle=360:this.fullAngle=Math.abs(e.config.plotOptions.pie.endAngle-e.config.plotOptions.pie.startAngle),this.initialAngle=e.config.plotOptions.pie.startAngle%this.fullAngle,e.globals.radialSize=this.defaultSize/2.05-e.config.stroke.width-(e.config.chart.sparkline.enabled?0:e.config.chart.dropShadow.blur),this.externalCfg=e.config.plotOptions.pie.dataLabels.external;const a=e.config.dataLabels.style;this.externalLabelStyle={fontSize:this.externalCfg.fontSize||a.fontSize,fontFamily:this.externalCfg.fontFamily||a.fontFamily,fontWeight:this.externalCfg.fontWeight||a.fontWeight},this.externalLabels=[],this.externalLabelMaxLines=1,this.externalLabelLineH=parseFloat(this.externalLabelStyle.fontSize)||12,e.globals.pieExternalLabelMarginY=0,this.showExternalLabels=this.externalCfg.show&&"polarArea"!==this.chartType,this.showExternalLabels&&!e.globals.noData&&this.reserveExternalLabelSpace(),this.donutSize=e.globals.radialSize*parseInt(e.config.plotOptions.pie.donut.size,10)/100;const i=e.config.plotOptions.pie.customScale,s=e.layout.gridWidth/2,n=e.layout.gridHeight/2;this.translateX=s-s*i,this.translateY=n-n*i,this.dataLabelsGroup=new u(this.w).group({class:"apexcharts-datalabels-group",transform:`translate(${this.translateX}, ${this.translateY}) scale(${i})`}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSliceSizes=[],this.sliceLabelGroups={},this.externalLabelGroups={},this.elHoverOutline=null,this.elHoverOutlinePath=null,this.hoverOutlineIndex=-1,this.prevSectorAngleArr=[]}getExternalLabelText(e){var t,a,i;const s=this.w,n=s.seriesData.seriesNames[e],l=this.externalCfg.formatter;return"function"==typeof l?l(n,{seriesIndex:e,percent:null==(a=null==(t=s.globals.seriesPercent)?void 0:t[e])?void 0:a[0],value:null==(i=s.globals.seriesTotals)?void 0:i[e],w:s}):null==n?"":`${n}`}getExternalLabelLines(e){const t=this.getExternalLabelText(e);return(Array.isArray(t)?t:`${null==t?"":t}`.split("\n")).map(e=>null==e?"":`${e}`)}reserveExternalLabelSpace(){const e=this.w,t=new x(e),a=(e.seriesData.seriesNames||[]).map((e,t)=>this.getExternalLabelLines(t)),i=t.getMaxLabelWidth(a.flat(),{fontSize:this.externalLabelStyle.fontSize,fontFamily:this.externalLabelStyle.fontFamily});this.externalLabelMaxLines=a.reduce((e,t)=>Math.max(e,t.length),1),this.externalLabelLineH=Math.round(1.35*(parseFloat(this.externalLabelStyle.fontSize)||12));const s=this.externalCfg.connector,n=this.externalLabelMaxLines*this.externalLabelLineH,l=i+(s.length||0)+(s.gap||0)+12,r=n/2+(s.gap||0)+6,o=Math.min(e.globals.radialSize,e.layout.gridWidth/2-l,e.layout.gridHeight/2-r);e.globals.radialSize=Math.max(o,.15*this.defaultSize),e.globals.pieExternalLabelMarginY=r;const h=e.config.chart.height?String(e.config.chart.height):"",c=""!==h&&"auto"!==h;this.centerY=c?e.layout.gridHeight/2:e.globals.radialSize+r}draw(e){var t;const a=this.w,i=new u(this.w),s=i.group({class:"apexcharts-pie"});if(a.globals.noData)return s;let n=0;for(let t=0;t<e.length;t++)n+=f.negToZero(e[t]);const l=[],r=i.group();0===n&&(n=1e-5),e.forEach(e=>{this.maxY=Math.max(this.maxY,e)}),a.config.yaxis[0].max&&(this.maxY=a.config.yaxis[0].max),"back"===a.config.grid.position&&"polarArea"===this.chartType&&this.drawPolarElements(s);const o=a.globals.collapsedSeriesIndices||[];let h=1;if("polarArea"===this.chartType){let t=0;for(let a=0;a<e.length;a++)-1===o.indexOf(a)&&t++;h=Math.max(1,t)}for(let t=0;t<e.length;t++){const i=this.fullAngle*f.negToZero(e[t])/n;l.push(i),"polarArea"===this.chartType?(l[t]=o.indexOf(t)>-1?0:this.fullAngle/h,this.sliceSizes.push(a.globals.radialSize*e[t]/(this.maxY||1))):this.sliceSizes.push(a.globals.radialSize)}const c=!0===(null==(t=this.ctx.morphTypeChange)?void 0:t.isActive());if(a.globals.dataChanged&&!c)if("polarArea"===this.chartType){const e=a.globals.previousPaths,t=a.globals.prevPolarAngles;if(Array.isArray(t)&&t.length===e.length)this.prevSectorAngleArr=t.slice();else for(let t=0;t<e.length;t++)this.prevSectorAngleArr.push(this.fullAngle/Math.max(1,e.length));let i=0;for(let t=0;t<e.length;t++)i=Math.max(i,f.negToZero(e[t]));a.config.yaxis[0].max&&(i=a.config.yaxis[0].max),this.prevSliceSizes=e.map(e=>a.globals.radialSize*f.negToZero(e)/(i||1))}else{let e,t=0;for(let e=0;e<a.globals.previousPaths.length;e++)t+=f.negToZero(a.globals.previousPaths[e]);for(let i=0;i<a.globals.previousPaths.length;i++)e=this.fullAngle*f.negToZero(a.globals.previousPaths[i])/t,this.prevSectorAngleArr.push(e)}if("polarArea"===this.chartType&&(a.globals.prevPolarAngles=l.slice()),this.donutSize<0&&(this.donutSize=0),"donut"===this.chartType){const e=i.drawCircle(this.donutSize);e.attr({cx:this.centerX,cy:this.centerY,fill:a.config.plotOptions.pie.donut.background?a.config.plotOptions.pie.donut.background:"transparent"}),r.add(e)}const d=this.drawArcs(l,e);if(this.sliceLabels.forEach(e=>{d.add(e)}),r.attr({transform:`translate(${this.translateX}, ${this.translateY}) scale(${a.config.plotOptions.pie.customScale})`}),r.add(d),s.add(r),this.donutDataLabels.show){const e=this.initialAnim&&!a.globals.resized&&!a.globals.dataChanged&&this.animDur>0,t=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:e?0:this.donutDataLabels.show});if(e){const e=this.dataLabelsGroup.node;e.style.transition="opacity 280ms ease-out",setTimeout(()=>{e.style.opacity="1"},this.animDur)}s.add(t)}return"front"===a.config.grid.position&&"polarArea"===this.chartType&&this.drawPolarElements(s),s}drawArcs(e,t){var a,i,s,n,l;const r=this.w,o=new b(this.w),h=new u(this.w),c=new p(this.w),d=h.group({class:"apexcharts-slices"});this.elHoverOutline=h.group({class:"apexcharts-pie-hover-outline"}),this.elHoverOutline.node.style.pointerEvents="none",this.elHoverOutline.node.style.opacity="0",r.config.chart.animations.enabled&&(this.elHoverOutline.node.style.transition="opacity 180ms ease-out"),d.add(this.elHoverOutline);let g=this.initialAngle,m=this.initialAngle,y=this.initialAngle,w=this.initialAngle;this.strokeWidth=r.config.stroke.show?r.config.stroke.width:0;const S=!0===(null==(a=this.ctx.morphTypeChange)?void 0:a.isActive());for(let a=0;a<e.length;a++){const p=h.group({class:"apexcharts-series apexcharts-pie-series",seriesName:f.escapeString(r.seriesData.seriesNames[a]),rel:a+1,"data:realIndex":a});d.add(p),g=y,m=w,y=g+e[a],w=m+this.prevSectorAngleArr[a];const x=y<g?this.fullAngle+y-g:y-g,A=c.fillPath({seriesNumber:a,size:this.sliceSizes[a],value:t[a]}),v=S?this.ctx.morphTypeChange.getInitialPathFor(a,0):null,L="polarArea"===this.chartType&&r.globals.dataChanged&&!S?this.prevSliceSizes[a]||0:void 0,C=v||this.getChangedPath(m,w,L),O=h.drawPath({d:C,stroke:Array.isArray(this.lineColorArr)?null!=(i=this.lineColorArr[a])?i:this.lineColorArr[a%this.lineColorArr.length]:this.lineColorArr,strokeWidth:0,fill:A,fillOpacity:r.config.fill.opacity,classes:`apexcharts-pie-area apexcharts-${this.chartType.toLowerCase()}-slice-${a}`});if(O.attr({index:0,j:a}),o.setSelectionFilter(O,0,a),r.config.chart.dropShadow.enabled){const e=r.config.chart.dropShadow;o.dropShadow(O,e,a)}this.addListeners(O,this.donutDataLabels,a);let z={x:0,y:0};const P=(g+x/2)%this.fullAngle;let T={x:this.centerX,y:this.centerY};"pie"===this.chartType||"polarArea"===this.chartType?(z=f.polarToCartesian(this.centerX,this.centerY,r.globals.radialSize/1.25+r.config.plotOptions.pie.dataLabels.offset,P),T=f.polarToCartesian(this.centerX,this.centerY,r.globals.radialSize/2,P)):"donut"===this.chartType&&(z=f.polarToCartesian(this.centerX,this.centerY,(r.globals.radialSize+this.donutSize)/2+r.config.plotOptions.pie.dataLabels.offset,P),T=f.polarToCartesian(this.centerX,this.centerY,(r.globals.radialSize+this.donutSize)/2,P)),u.setAttrs(O.node,{"data:angle":x,"data:startAngle":g,"data:strokeWidth":this.strokeWidth,"data:value":t[a],"data:cx":T.x,"data:cy":T.y}),p.add(O);let E=!1;if(S){const e=this.getPiePath({me:this,startAngle:g,angle:x,size:this.sliceSizes[a]});O.node.setAttribute("data:pathFinal",e),E=!0===(null==(n=(s=this.ctx.morphTypeChange).claimsTargetMark)?void 0:n.call(s,a,0)),E&&(O.attr({d:e}),O.node.setAttribute("data:pathOrig",e),O.node.setAttribute("opacity","0"),O.node.setAttribute("data-piece-hidden","1"))}let D=0;if(!this.initialAnim||r.globals.resized||r.globals.dataChanged?this.animBeginArr.push(0):(D=x/this.fullAngle*r.config.chart.animations.speed,0===D&&(D=1),this.animDur=D+this.animDur,this.animBeginArr.push(this.animDur)),E);else if(S&&v){const e=this.getPiePath({me:this,startAngle:g,angle:x,size:this.sliceSizes[a]}),t=this.ctx.morphTypeChange.getSpeed(),i=this.ctx.animations;O.node.setAttribute("data:pathOrig",e);const s=O.animate(t).plot(e,"polygons").attr({"stroke-width":this.strokeWidth});s&&"function"==typeof s.after?s.after(()=>i.animationCompleted(O)):i.animationCompleted(O)}else this.dynamicAnim&&r.globals.dataChanged?this.animatePaths(O,{size:this.sliceSizes[a],prevSize:L,endAngle:y,startAngle:g,prevStartAngle:m,prevEndAngle:w,animateStartingPos:!0,i:a,animBeginArr:this.animBeginArr,shouldSetPrevPaths:!0,dur:r.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(O,{size:this.sliceSizes[a],endAngle:y,startAngle:g,i:a,totalItems:e.length-1,animBeginArr:this.animBeginArr,dur:D});if(this.getExpandOffset()>0?O.node.addEventListener("mouseup",this.pieClicked.bind(this,a)):0===a&&b.drilldownBlocksSliceOffset(r)&&(null==(l=this.ctx.drilldown)||l.warnSliceOffsetDisabled()),void 0!==r.interact.selectedDataPoints[0]&&r.interact.selectedDataPoints[0].indexOf(a)>-1)if(this.initialAnim&&!r.globals.resized&&!r.globals.dataChanged&&this.animDur>0){const e=this,t=a;setTimeout(()=>e.pieClicked(t,{animate:!1}),this.animDur)}else this.pieClicked(a,{animate:!1});if(r.config.dataLabels.enabled){const t=z.x,i=z.y;let s=100*x/this.fullAngle+"%";if(0!==x&&r.config.plotOptions.pie.dataLabels.minAngleToShowLabel<e[a]){const e=r.config.dataLabels.formatter;void 0!==e&&(s=e(r.globals.seriesPercent[a][0],{seriesIndex:a,w:r}));const n=r.globals.dataLabels.style.colors[a],l=h.group({class:"apexcharts-datalabels"}),c=h.drawText({x:t,y:i,text:s,textAnchor:"middle",fontSize:r.config.dataLabels.style.fontSize,fontFamily:r.config.dataLabels.style.fontFamily,fontWeight:r.config.dataLabels.style.fontWeight,foreColor:n});if(l.add(c),r.config.dataLabels.dropShadow.enabled){const e=r.config.dataLabels.dropShadow;o.dropShadow(c,e)}c.node.classList.add("apexcharts-pie-label"),r.config.chart.animations.animate&&!1===r.globals.resized&&(c.node.classList.add("apexcharts-pie-label-delay"),c.node.style.animationDelay=r.config.chart.animations.speed/940+"s"),this.sliceLabels.push(l),this.sliceLabelGroups[a]=l.node}}if(this.showExternalLabels&&0!==x){const e=this.getExternalLabelLines(a);if(e.some(e=>""!==e)){const t=f.polarToCartesian(this.centerX,this.centerY,r.globals.radialSize,P),i=f.polarToCartesian(this.centerX,this.centerY,r.globals.radialSize+(this.externalCfg.connector.gap||0),P),s=i.x>=this.centerX,n=s?i.x+(this.externalCfg.connector.length||0):i.x-(this.externalCfg.connector.length||0);this.externalLabels.push({i:a,lines:e,anchor:t,elbow:i,side:s?"right":"left",labelX:n+parseFloat(this.externalCfg.offsetX||0),idealY:i.y+parseFloat(this.externalCfg.offsetY||0),connectorColor:this.externalCfg.connector.color||r.globals.colors[a],foreColor:this.externalCfg.color||r.config.chart.foreColor})}}}if(this.showExternalLabels&&this.externalLabels.length){this.placeExternalLabels();const e=A.isBrowser()&&(S||this.dynamicAnim&&r.globals.dataChanged||this.initialAnim&&!r.globals.resized&&!r.globals.dataChanged);this.externalLabels.forEach(t=>{const a=new x(r).drawExternalLabel({lines:t.lines,lineHeight:this.externalLabelLineH,anchor:t.anchor,elbow:t.elbow,labelX:t.labelX,labelY:t.labelY,side:t.side,connector:{show:this.externalCfg.connector.show,width:this.externalCfg.connector.width,color:t.connectorColor},style:this.externalLabelStyle,foreColor:t.foreColor});e&&(a.node.classList.add("apexcharts-element-hidden"),r.globals.delayedElements.push({el:a.node})),this.externalLabelGroups[t.i]=a.node,d.add(a)})}return d}placeExternalLabels(){const e=this.w,t=this.externalLabelMaxLines*this.externalLabelLineH+2,a=this.centerY+e.globals.radialSize+e.globals.pieExternalLabelMarginY;["left","right"].forEach(e=>{!function(e,t,a){const i=e.slice().sort((e,t)=>e.idealY-t.idealY);i.forEach(e=>{e.labelY=e.idealY});for(let e=1;e<i.length;e++)i[e].labelY-i[e-1].labelY<t&&(i[e].labelY=i[e-1].labelY+t);const s=i[i.length-1],n=s?s.labelY-a:0;if(n>0)for(let e=i.length-1;e>=0;e--)i[e].labelY-=n,e<i.length-1&&i[e+1].labelY-i[e].labelY<t&&(i[e].labelY=i[e+1].labelY-t)}(this.externalLabels.filter(t=>t.side===e),t,a)})}addListeners(e,t,a){const i=new u(this.w,this.ctx);e.node.addEventListener("mouseenter",i.pathMouseEnter.bind(i,e)),e.node.addEventListener("mouseleave",i.pathMouseLeave.bind(i,e)),e.node.addEventListener("mouseleave",this.revertDataLabelsInner.bind(this)),"number"==typeof a&&(e.node.addEventListener("mouseenter",this.showHoverOutline.bind(this,a)),e.node.addEventListener("mouseleave",this.hideHoverOutline.bind(this))),e.node.addEventListener("mousedown",i.pathMouseDown.bind(i,e)),this.donutDataLabels.total.showAlways||(e.node.addEventListener("mouseenter",this.printDataLabelsInner.bind(this,e.node,t)),e.node.addEventListener("mousedown",this.printDataLabelsInner.bind(this,e.node,t)))}animatePaths(e,t){const a=this.w;let i=t.endAngle<t.startAngle?this.fullAngle+t.endAngle-t.startAngle:t.endAngle-t.startAngle,s=i,n=t.startAngle;const l=t.startAngle;void 0!==t.prevStartAngle&&void 0!==t.prevEndAngle&&(n=t.prevEndAngle,s=t.prevEndAngle<t.prevStartAngle?this.fullAngle+t.prevEndAngle-t.prevStartAngle:t.prevEndAngle-t.prevStartAngle),t.i===a.config.series.length-1&&(i+l>this.fullAngle?t.endAngle=t.endAngle-(i+l):i+l<this.fullAngle&&(t.endAngle=t.endAngle+(this.fullAngle-(i+l)))),i===this.fullAngle&&(i=this.fullAngle-.01),this.animateArc(e,n,l,i,s,t)}animateArc(e,t,a,i,s,n){const l=this,r=this.w,o=new g(this.w),h=n.size;let c;(isNaN(t)||isNaN(s))&&(t=a,s=i,n.dur=0);let d=i,p=a;const f=t<a?this.fullAngle+t-a:t-a,u="number"==typeof n.prevSize;r.globals.dataChanged&&n.shouldSetPrevPaths&&n.prevEndAngle&&(c=l.getPiePath({me:l,startAngle:n.prevStartAngle,angle:n.prevEndAngle<n.prevStartAngle?this.fullAngle+n.prevEndAngle-n.prevStartAngle:n.prevEndAngle-n.prevStartAngle,size:u?n.prevSize:h}),e.attr({d:c})),0!==n.dur?e.animate(n.dur,n.animBeginArr[n.i]).after(function(){"pie"!==l.chartType&&"donut"!==l.chartType&&"polarArea"!==l.chartType||this.animate(r.config.chart.animations.dynamicAnimation.speed).attr({"stroke-width":l.strokeWidth}),n.i===r.config.series.length-1&&o.animationCompleted(e)}).during(r=>{d=f+(i-f)*r,n.animateStartingPos&&(d=s+(i-s)*r,p=t-s+(a-(t-s))*r),c=l.getPiePath({me:l,startAngle:p,angle:d,size:u?n.prevSize+(h-n.prevSize)*r:h}),e.node.setAttribute("data:pathOrig",c),e.attr({d:c})}):(c=l.getPiePath({me:l,startAngle:p,angle:i,size:h}),n.isTrack||(r.globals.animationEnded=!0),e.node.setAttribute("data:pathOrig",c),e.attr({d:c,"stroke-width":l.strokeWidth}))}pieClicked(e,t){const a=this.w,i=!(t&&!1===t.animate),s=a.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);if(!s)return;if("true"===s.attr("data:pieClicked"))return s.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner(),void this.offsetSlice(e,0,i);const n=a.dom.baseEl.getElementsByClassName("apexcharts-pie-area");Array.prototype.forEach.call(n,e=>{const t="true"===e.getAttribute("data:pieClicked");e.setAttribute("data:pieClicked","false"),t&&this.offsetSlice(parseInt(e.getAttribute("j"),10),0,i)}),a.interact.capturedDataPointIndex=e,s.attr("data:pieClicked","true"),this.offsetSlice(e,this.getExpandOffset(),i)}getExpandOffset(){const e=this.w.config.plotOptions.pie;if(!e.expandOnClick||"polarArea"===this.chartType)return 0;if(b.drilldownBlocksSliceOffset(this.w))return 0;const t=Number(e.expandOffset);return Number.isFinite(t)&&t>0?t:0}getSliceMovers(e){const t=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);return[t?t.node:null,this.sliceLabelGroups[e],this.externalLabelGroups[e],this.hoverOutlineIndex===e&&this.elHoverOutlinePath?this.elHoverOutlinePath.node:null].filter(Boolean)}offsetSlice(e,t,a=!0){const i=this.w;if(!i.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`))return;const{dx:s,dy:n}=this.getSliceOffsetVector(e,t),l=`translate(${s} ${n})`,r=a&&i.config.chart.animations.enabled?"transform 320ms cubic-bezier(0.25, 0.8, 0.3, 1)":"";this.getSliceMovers(e).forEach(e=>{e.style.transition=r,e.setAttribute("transform",l)})}getSliceOffsetVector(e,t){const a=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`),i=a?parseFloat(a.attr("data:angle")):NaN;if(!t||!Number.isFinite(i)||i>=this.fullAngle)return{dx:0,dy:0};const s=parseFloat(a.attr("data:startAngle")),n=Math.PI*(s+i/2-90)/180;return{dx:t*Math.cos(n),dy:t*Math.sin(n)}}showHoverOutline(e){const t=this.w;if(!b.hoverOutlineOwnsHoverState(t))return;if(!this.elHoverOutline)return;const a=this.getHoverOutlinePath(e);if(!a)return;const i=t.config.plotOptions.pie.hoverOutline,s=i.color||t.globals.colors[e];if(!this.elHoverOutlinePath){const e=new u(t);this.elHoverOutlinePath=e.drawPath({d:a,fill:s,strokeWidth:0,classes:"apexcharts-pie-hover-outline-band"}),this.elHoverOutline.add(this.elHoverOutlinePath)}this.elHoverOutlinePath.attr({d:a,fill:s,"fill-opacity":i.opacity});const{dx:n,dy:l}=this.getSliceOffsetVector(e,this.isSliceOut(e)?this.getExpandOffset():0);this.elHoverOutlinePath.node.style.transition="",this.elHoverOutlinePath.node.setAttribute("transform",`translate(${n} ${l})`),this.hoverOutlineIndex=e,this.elHoverOutline.node.style.opacity="1"}hideHoverOutline(){this.elHoverOutline&&(this.elHoverOutline.node.style.opacity="0")}isSliceOut(e){const t=this.w.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);return!!t&&"true"===t.attr("data:pieClicked")}getHoverOutlinePath(e){const t=this.w,a=t.config.plotOptions.pie.hoverOutline,i=t.dom.Paper.findOne(`.apexcharts-${this.chartType.toLowerCase()}-slice-${e}`);if(!i)return null;const s=parseFloat(i.attr("data:angle"));if(!Number.isFinite(s)||s<=0)return null;const n=this.sliceSizes[e],l=Number(a.size);if(!Number.isFinite(n)||!Number.isFinite(l)||l<=0)return null;const{startDeg:r,spanDeg:c}=this.getSliceExtent({me:this,startAngle:parseFloat(i.attr("data:startAngle")),angle:s,size:n});if(!(c>0))return null;const d=n+(this.strokeWidth||0)/2+(Number(a.gap)||0),g=d+l,p={cx:this.centerX,cy:this.centerY,rIn:d,rOut:g,a0:r,a1:r+c,spanDeg:c},f=Math.min(l/2,c*Math.PI/180/2*d);return f>.5?L(h(o({},p),{r:f})):function({cx:e,cy:t,rIn:a,rOut:i,a0:s,a1:n,spanDeg:l}){const r=(a,i)=>S(e,t,a,i),o=l>180?1:0,h=r(i,s),c=r(i,n),d=r(a,n),g=r(a,s);return["M",v(h),"A",i,i,0,o,1,v(c),"L",v(d),"A",a,a,0,o,0,v(g),"Z"].join(" ")}(p)}getChangedPath(e,t,a){let i="";return this.dynamicAnim&&this.w.globals.dataChanged&&(i=this.getPiePath({me:this,startAngle:e,angle:t-e,size:"number"==typeof a?a:this.size})),i}getSliceExtent({me:e,startAngle:t,angle:a,size:i}){const s=this.w;let n=t,l=a+t;Math.ceil(l)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(l=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01);let r=l-n;const o="pie"===e.chartType||"donut"===e.chartType||"polarArea"===e.chartType,h=s.config.plotOptions.pie.spacing;if(o&&h>0&&r>0){const t="donut"===e.chartType?(i+e.donutSize)/2:i,a=t>0?h/t*(180/Math.PI):0,s=Math.min(a/2,Math.max(0,r/2-.5));n+=s,r-=2*s}return l=n+r,Math.ceil(l)>this.fullAngle&&(l-=this.fullAngle),{startDeg:n,spanDeg:r,endDeg:l}}getPiePath({me:e,startAngle:t,angle:a,size:i}){let s;const n=this.w,l=new u(this.w),{startDeg:r,spanDeg:o,endDeg:h}=this.getSliceExtent({me:e,startAngle:t,angle:a,size:i}),c="pie"===e.chartType||"donut"===e.chartType||"polarArea"===e.chartType,d=Math.PI*(r-90)/180,g=n.config.plotOptions.pie.borderRadius;if(g>0&&c){const t=this.getRoundedSlicePath({me:e,startDeg:r,spanDeg:o,size:i,borderRadius:g});if(t)return t}const p=Math.PI*(h-90)/180,b=e.centerX+i*Math.cos(d),m=e.centerY+i*Math.sin(d),x=e.centerX+i*Math.cos(p),A=e.centerY+i*Math.sin(p),y=f.polarToCartesian(e.centerX,e.centerY,e.donutSize,h),w=f.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),S=o>180?1:0,v=["M",b,m,"A",i,i,0,S,1,x,A];return s="donut"===e.chartType?[...v,"L",y.x,y.y,"A",e.donutSize,e.donutSize,0,S,0,w.x,w.y,"L",b,m,"z"].join(" "):"pie"===e.chartType||"polarArea"===e.chartType?[...v,"L",e.centerX,e.centerY,"L",b,m].join(" "):[...v].join(" "),l.roundPathCorners(s,2*this.strokeWidth)}getRoundedSlicePath({me:e,startDeg:t,spanDeg:a,size:i,borderRadius:s}){if(!(a>0))return null;const n=Math.PI/180,l=e.centerX,r=e.centerY,o="donut"===e.chartType,h=i,c=o?e.donutSize:0,d=a*n;let g=s;if(g=Math.min(g,d*h/2),o?(g=Math.min(g,d*c/2),g=Math.min(g,(h-c)/2)):g=Math.min(g,h/2),!(g>.5))return null;const p=t,f=t+a;return o?L({cx:l,cy:r,rIn:c,rOut:h,a0:p,a1:f,r:g,spanDeg:a}):function({cx:e,cy:t,rOut:a,a0:i,a1:s,r:n,spanDeg:l}){const r=(a,i)=>S(e,t,a,i),o=n/a*w,h=r(a,i+o),c=r(a,s-o),d=l-2*o>180?1:0,g=r(a,s),p=r(a-n,s),f=r(a,i),u=r(a-n,i);return["M",v(h),"A",a,a,0,d,1,v(c),"Q",v(g),v(p),"L",`${e} ${t}`,"L",v(u),"Q",v(f),v(h),"Z"].join(" ")}({cx:l,cy:r,rOut:h,a0:p,a1:f,r:g,spanDeg:a})}drawPolarElements(e){const t=this.w,a=new m(this.w),i=new u(this.w),s=new x(this.w),n=i.group(),l=i.group(),r=a.niceScale(0,Math.ceil(this.maxY),0),o=r.result.reverse(),h=r.result.length;this.maxY=r.niceMax;let c=t.globals.radialSize;const d=c/(h-1);for(let e=0;e<h-1;e++){const a=i.drawCircle(c);if(a.attr({cx:this.centerX,cy:this.centerY,fill:"none","stroke-width":t.config.plotOptions.polarArea.rings.strokeWidth,stroke:t.config.plotOptions.polarArea.rings.strokeColor}),t.config.yaxis[0].show){const a=s.drawYAxisTexts(this.centerX,this.centerY-c+parseInt(t.config.yaxis[0].labels.style.fontSize,10)/2,e,o[e]);l.add(a)}n.add(a),c-=d}this.drawSpokes(e),e.add(n),e.add(l)}renderInnerDataLabels(e,t,a){const i=this.w,s=new u(this.w),n=t.total.show;e.node.innerHTML="",e.node.style.opacity=a.opacity;const l=a.centerX,r=this.donutDataLabels.total.label?a.centerY:a.centerY-a.centerY/6;let o,h;o=void 0===t.name.color?i.globals.colors[0]:t.name.color;let c=t.name.fontSize,d=t.name.fontFamily,g=t.name.fontWeight;h=void 0===t.value.color?i.config.chart.foreColor:t.value.color;const p=t.value.formatter;let f="",b="";if(n?(o=t.total.color,c=t.total.fontSize,d=t.total.fontFamily,g=t.total.fontWeight,b=this.donutDataLabels.total.label?t.total.label:"",f=t.total.formatter(i)):1===i.seriesData.series.length&&(f=p(i.seriesData.series[0],i),b=i.seriesData.seriesNames[0]),b&&(b=t.name.formatter(b,t.total.show,i)),t.name.show){const a=s.drawText({x:l,y:r+parseFloat(t.name.offsetY),text:b,textAnchor:"middle",foreColor:o,fontSize:c,fontWeight:g,fontFamily:d});a.node.classList.add("apexcharts-datalabel-label"),e.add(a)}if(t.value.show){const a=t.name.show?parseFloat(t.value.offsetY)+16:t.value.offsetY,i=s.drawText({x:l,y:r+a,text:f,textAnchor:"middle",foreColor:h,fontWeight:t.value.fontWeight,fontSize:t.value.fontSize,fontFamily:t.value.fontFamily});i.node.classList.add("apexcharts-datalabel-value"),e.add(i)}return e}printInnerLabels(e,t,a,i){const s=this.w;let n;i?n=void 0===e.name.color?s.globals.colors[parseInt(i.parentNode.getAttribute("rel"),10)-1]:e.name.color:s.seriesData.series.length>1&&e.total.show&&(n=e.total.color);const l=s.dom.baseEl.querySelector(".apexcharts-datalabel-label"),r=s.dom.baseEl.querySelector(".apexcharts-datalabel-value");a=(0,e.value.formatter)(a,s),i||"function"!=typeof e.total.formatter||(a=e.total.formatter(s));const o=t===e.total.label;if(t=this.donutDataLabels.total.label?e.name.formatter(t,o,s):"",null!==l&&(l.textContent=t),null!==r&&(r.textContent=a),null!==l){l.style.fill=n}}printDataLabelsInner(e,t){const a=this.w,i=e.getAttribute("data:value"),s=a.seriesData.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];a.seriesData.series.length>1&&this.printInnerLabels(t,s,i,e);const n=a.dom.baseEl.querySelector(".apexcharts-datalabels-group");if(null!==n){n.style.opacity="1"}}drawSpokes(e){const t=this.w,a=new u(this.w),i=t.config.plotOptions.polarArea.spokes;if(0===i.strokeWidth)return;const s=[],n=360/t.seriesData.series.length;for(let e=0;e<t.seriesData.series.length;e++)s.push(f.polarToCartesian(this.centerX,this.centerY,t.globals.radialSize,t.config.plotOptions.pie.startAngle+n*e));s.forEach((t,s)=>{const n=a.drawLine(t.x,t.y,this.centerX,this.centerY,Array.isArray(i.connectorColors)?i.connectorColors[s]:i.connectorColors);e.add(n)})}revertDataLabelsInner(){const e=this.w;if(this.donutDataLabels.show){const t=e.dom.Paper.findOne(".apexcharts-datalabels-group"),a=this.renderInnerDataLabels(t,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});e.dom.Paper.findOne(".apexcharts-radialbar, .apexcharts-pie").add(a)}}}c.use({pie:C,donut:C,polarArea:C}),e.default=c,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});