UNPKG

apexcharts

Version:

A JavaScript Chart Library

6 lines (5 loc) 29.1 kB
/*! * ApexCharts v5.13.0 * (c) 2018-2026 ApexCharts */ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("apexcharts/core");function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const a in t)if("default"!==a){const s=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(e,a,s.get?s:{enumerable:!0,get:()=>t[a]})}return e.default=t,Object.freeze(e)}const a=e(t),s=a.__apex_Animations,i=a.__apex_Fill,n=a.__apex_Utils,r=a.__apex_Graphics,l=a.__apex_Filters,o=a.__apex_Scales;class h{constructor(t){this.w=t}drawYAxisTexts(t,e,a,s){const i=this.w,n=i.config.yaxis[0],l=i.formatters.yLabelFormatters[0];return new r(this.w).drawText({x:t+n.labels.offsetX,y:e+n.labels.offsetY,text:l(s,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})}}class d{constructor(t,e){this.ctx=e,this.w=t,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!==t.globals.stroke.colors?t.globals.stroke.colors:t.globals.colors,this.defaultSize=Math.min(t.layout.gridWidth,t.layout.gridHeight),this.centerY=this.defaultSize/2,this.centerX=t.layout.gridWidth/2,"radialBar"===t.config.chart.type?this.fullAngle=360:this.fullAngle=Math.abs(t.config.plotOptions.pie.endAngle-t.config.plotOptions.pie.startAngle),this.initialAngle=t.config.plotOptions.pie.startAngle%this.fullAngle,t.globals.radialSize=this.defaultSize/2.05-t.config.stroke.width-(t.config.chart.sparkline.enabled?0:t.config.chart.dropShadow.blur),this.donutSize=t.globals.radialSize*parseInt(t.config.plotOptions.pie.donut.size,10)/100;const a=t.config.plotOptions.pie.customScale,s=t.layout.gridWidth/2,i=t.layout.gridHeight/2;this.translateX=s-s*a,this.translateY=i-i*a,this.dataLabelsGroup=new r(this.w).group({class:"apexcharts-datalabels-group",transform:`translate(${this.translateX}, ${this.translateY}) scale(${a})`}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSectorAngleArr=[]}draw(t){const e=this.w,a=new r(this.w),s=a.group({class:"apexcharts-pie"});if(e.globals.noData)return s;let i=0;for(let e=0;e<t.length;e++)i+=n.negToZero(t[e]);const l=[],o=a.group();0===i&&(i=1e-5),t.forEach(t=>{this.maxY=Math.max(this.maxY,t)}),e.config.yaxis[0].max&&(this.maxY=e.config.yaxis[0].max),"back"===e.config.grid.position&&"polarArea"===this.chartType&&this.drawPolarElements(s);for(let a=0;a<t.length;a++){const s=this.fullAngle*n.negToZero(t[a])/i;l.push(s),"polarArea"===this.chartType?(l[a]=this.fullAngle/t.length,this.sliceSizes.push(e.globals.radialSize*t[a]/this.maxY)):this.sliceSizes.push(e.globals.radialSize)}if(e.globals.dataChanged){let t,a=0;for(let t=0;t<e.globals.previousPaths.length;t++)a+=n.negToZero(e.globals.previousPaths[t]);for(let s=0;s<e.globals.previousPaths.length;s++)t=this.fullAngle*n.negToZero(e.globals.previousPaths[s])/a,this.prevSectorAngleArr.push(t)}if(this.donutSize<0&&(this.donutSize=0),"donut"===this.chartType){const t=a.drawCircle(this.donutSize);t.attr({cx:this.centerX,cy:this.centerY,fill:e.config.plotOptions.pie.donut.background?e.config.plotOptions.pie.donut.background:"transparent"}),o.add(t)}const h=this.drawArcs(l,t);if(this.sliceLabels.forEach(t=>{h.add(t)}),o.attr({transform:`translate(${this.translateX}, ${this.translateY}) scale(${e.config.plotOptions.pie.customScale})`}),o.add(h),s.add(o),this.donutDataLabels.show){const t=this.initialAnim&&!e.globals.resized&&!e.globals.dataChanged&&this.animDur>0,a=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:t?0:this.donutDataLabels.show});if(t){const t=this.dataLabelsGroup.node;t.style.transition="opacity 280ms ease-out",setTimeout(()=>{t.style.opacity="1"},this.animDur)}s.add(a)}return"front"===e.config.grid.position&&"polarArea"===this.chartType&&this.drawPolarElements(s),s}drawArcs(t,e){const a=this.w,s=new l(this.w),o=new r(this.w),h=new i(this.w),d=o.group({class:"apexcharts-slices"});let c=this.initialAngle,g=this.initialAngle,p=this.initialAngle,f=this.initialAngle;this.strokeWidth=a.config.stroke.show?a.config.stroke.width:0;for(let i=0;i<t.length;i++){const l=o.group({class:"apexcharts-series apexcharts-pie-series",seriesName:n.escapeString(a.seriesData.seriesNames[i]),rel:i+1,"data:realIndex":i});d.add(l),c=p,g=f,p=c+t[i],f=g+this.prevSectorAngleArr[i];const u=p<c?this.fullAngle+p-c:p-c,m=h.fillPath({seriesNumber:i,size:this.sliceSizes[i],value:e[i]}),b=this.getChangedPath(g,f),A=o.drawPath({d:b,stroke:Array.isArray(this.lineColorArr)?this.lineColorArr[i]:this.lineColorArr,strokeWidth:0,fill:m,fillOpacity:a.config.fill.opacity,classes:`apexcharts-pie-area apexcharts-${this.chartType.toLowerCase()}-slice-${i}`});if(A.attr({index:0,j:i}),s.setSelectionFilter(A,0,i),a.config.chart.dropShadow.enabled){const t=a.config.chart.dropShadow;s.dropShadow(A,t,i)}this.addListeners(A,this.donutDataLabels);let w={x:0,y:0};const y=(c+u/2)%this.fullAngle;let x={x:this.centerX,y:this.centerY};"pie"===this.chartType||"polarArea"===this.chartType?(w=n.polarToCartesian(this.centerX,this.centerY,a.globals.radialSize/1.25+a.config.plotOptions.pie.dataLabels.offset,y),x=n.polarToCartesian(this.centerX,this.centerY,a.globals.radialSize/2,y)):"donut"===this.chartType&&(w=n.polarToCartesian(this.centerX,this.centerY,(a.globals.radialSize+this.donutSize)/2+a.config.plotOptions.pie.dataLabels.offset,y),x=n.polarToCartesian(this.centerX,this.centerY,(a.globals.radialSize+this.donutSize)/2,y)),r.setAttrs(A.node,{"data:angle":u,"data:startAngle":c,"data:strokeWidth":this.strokeWidth,"data:value":e[i],"data:cx":x.x,"data:cy":x.y}),l.add(A);let S=0;if(!this.initialAnim||a.globals.resized||a.globals.dataChanged?this.animBeginArr.push(0):(S=u/this.fullAngle*a.config.chart.animations.speed,0===S&&(S=1),this.animDur=S+this.animDur,this.animBeginArr.push(this.animDur)),this.dynamicAnim&&a.globals.dataChanged?this.animatePaths(A,{size:this.sliceSizes[i],endAngle:p,startAngle:c,prevStartAngle:g,prevEndAngle:f,animateStartingPos:!0,i:i,animBeginArr:this.animBeginArr,shouldSetPrevPaths:!0,dur:a.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(A,{size:this.sliceSizes[i],endAngle:p,startAngle:c,i:i,totalItems:t.length-1,animBeginArr:this.animBeginArr,dur:S}),a.config.plotOptions.pie.expandOnClick&&"polarArea"!==this.chartType&&A.node.addEventListener("mouseup",this.pieClicked.bind(this,i)),void 0!==a.interact.selectedDataPoints[0]&&a.interact.selectedDataPoints[0].indexOf(i)>-1)if(this.initialAnim&&!a.globals.resized&&!a.globals.dataChanged&&this.animDur>0){const t=this,e=i;setTimeout(()=>t.pieClicked(e),this.animDur)}else this.pieClicked(i);if(a.config.dataLabels.enabled){const e=w.x,n=w.y;let r=100*u/this.fullAngle+"%";if(0!==u&&a.config.plotOptions.pie.dataLabels.minAngleToShowLabel<t[i]){const t=a.config.dataLabels.formatter;void 0!==t&&(r=t(a.globals.seriesPercent[i][0],{seriesIndex:i,w:a}));const l=a.globals.dataLabels.style.colors[i],h=o.group({class:"apexcharts-datalabels"}),d=o.drawText({x:e,y:n,text:r,textAnchor:"middle",fontSize:a.config.dataLabels.style.fontSize,fontFamily:a.config.dataLabels.style.fontFamily,fontWeight:a.config.dataLabels.style.fontWeight,foreColor:l});if(h.add(d),a.config.dataLabels.dropShadow.enabled){const t=a.config.dataLabels.dropShadow;s.dropShadow(d,t)}d.node.classList.add("apexcharts-pie-label"),a.config.chart.animations.animate&&!1===a.globals.resized&&(d.node.classList.add("apexcharts-pie-label-delay"),d.node.style.animationDelay=a.config.chart.animations.speed/940+"s"),this.sliceLabels.push(h)}}}return d}addListeners(t,e){const a=new r(this.w);t.node.addEventListener("mouseenter",a.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",a.pathMouseLeave.bind(this,t)),t.node.addEventListener("mouseleave",this.revertDataLabelsInner.bind(this)),t.node.addEventListener("mousedown",a.pathMouseDown.bind(this,t)),this.donutDataLabels.total.showAlways||(t.node.addEventListener("mouseenter",this.printDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener("mousedown",this.printDataLabelsInner.bind(this,t.node,e)))}animatePaths(t,e){const a=this.w;let s=e.endAngle<e.startAngle?this.fullAngle+e.endAngle-e.startAngle:e.endAngle-e.startAngle,i=s,n=e.startAngle;const r=e.startAngle;void 0!==e.prevStartAngle&&void 0!==e.prevEndAngle&&(n=e.prevEndAngle,i=e.prevEndAngle<e.prevStartAngle?this.fullAngle+e.prevEndAngle-e.prevStartAngle:e.prevEndAngle-e.prevStartAngle),e.i===a.config.series.length-1&&(s+r>this.fullAngle?e.endAngle=e.endAngle-(s+r):s+r<this.fullAngle&&(e.endAngle=e.endAngle+(this.fullAngle-(s+r)))),s===this.fullAngle&&(s=this.fullAngle-.01),this.animateArc(t,n,r,s,i,e)}animateArc(t,e,a,i,n,r){const l=this,o=this.w,h=new s(this.w),d=r.size;let c;(isNaN(e)||isNaN(n))&&(e=a,n=i,r.dur=0);let g=i,p=a;const f=e<a?this.fullAngle+e-a:e-a;o.globals.dataChanged&&r.shouldSetPrevPaths&&r.prevEndAngle&&(c=l.getPiePath({me:l,startAngle:r.prevStartAngle,angle:r.prevEndAngle<r.prevStartAngle?this.fullAngle+r.prevEndAngle-r.prevStartAngle:r.prevEndAngle-r.prevStartAngle,size:d}),t.attr({d:c})),0!==r.dur?t.animate(r.dur,r.animBeginArr[r.i]).after(function(){"pie"!==l.chartType&&"donut"!==l.chartType&&"polarArea"!==l.chartType||this.animate(o.config.chart.animations.dynamicAnimation.speed).attr({"stroke-width":l.strokeWidth}),r.i===o.config.series.length-1&&h.animationCompleted(t)}).during(s=>{g=f+(i-f)*s,r.animateStartingPos&&(g=n+(i-n)*s,p=e-n+(a-(e-n))*s),c=l.getPiePath({me:l,startAngle:p,angle:g,size:d}),t.node.setAttribute("data:pathOrig",c),t.attr({d:c})}):(c=l.getPiePath({me:l,startAngle:p,angle:i,size:d}),r.isTrack||(o.globals.animationEnded=!0),t.node.setAttribute("data:pathOrig",c),t.attr({d:c,"stroke-width":l.strokeWidth}))}pieClicked(t){const e=this.w,a=this,s=a.sliceSizes[t]+(e.config.plotOptions.pie.expandOnClick?4:0),i=e.dom.Paper.findOne(`.apexcharts-${a.chartType.toLowerCase()}-slice-${t}`);if("true"===i.attr("data:pieClicked")){i.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner();const t=i.attr("data:pathOrig");return void i.attr({d:t})}{const a=e.dom.baseEl.getElementsByClassName("apexcharts-pie-area");Array.prototype.forEach.call(a,t=>{t.setAttribute("data:pieClicked","false");const e=t.getAttribute("data:pathOrig");e&&t.setAttribute("d",e)}),e.interact.capturedDataPointIndex=t,i.attr("data:pieClicked","true")}const n=parseInt(i.attr("data:startAngle"),10),r=parseInt(i.attr("data:angle"),10),l=a.getPiePath({me:a,startAngle:n,angle:r,size:s});360!==r&&i.plot(l)}getChangedPath(t,e){let a="";return this.dynamicAnim&&this.w.globals.dataChanged&&(a=this.getPiePath({me:this,startAngle:t,angle:e-t,size:this.size})),a}getPiePath({me:t,startAngle:e,angle:a,size:s}){let i;const l=new r(this.w),o=e,h=Math.PI*(o-90)/180;let d=a+e;Math.ceil(d)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(d=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(d)>this.fullAngle&&(d-=this.fullAngle);const c=Math.PI*(d-90)/180,g=t.centerX+s*Math.cos(h),p=t.centerY+s*Math.sin(h),f=t.centerX+s*Math.cos(c),u=t.centerY+s*Math.sin(c),m=n.polarToCartesian(t.centerX,t.centerY,t.donutSize,d),b=n.polarToCartesian(t.centerX,t.centerY,t.donutSize,o),A=a>180?1:0,w=["M",g,p,"A",s,s,0,A,1,f,u];return i="donut"===t.chartType?[...w,"L",m.x,m.y,"A",t.donutSize,t.donutSize,0,A,0,b.x,b.y,"L",g,p,"z"].join(" "):"pie"===t.chartType||"polarArea"===t.chartType?[...w,"L",t.centerX,t.centerY,"L",g,p].join(" "):[...w].join(" "),l.roundPathCorners(i,2*this.strokeWidth)}drawPolarElements(t){const e=this.w,a=new o(this.w),s=new r(this.w),i=new h(this.w),n=s.group(),l=s.group(),d=a.niceScale(0,Math.ceil(this.maxY),0),c=d.result.reverse(),g=d.result.length;this.maxY=d.niceMax;let p=e.globals.radialSize;const f=p/(g-1);for(let t=0;t<g-1;t++){const a=s.drawCircle(p);if(a.attr({cx:this.centerX,cy:this.centerY,fill:"none","stroke-width":e.config.plotOptions.polarArea.rings.strokeWidth,stroke:e.config.plotOptions.polarArea.rings.strokeColor}),e.config.yaxis[0].show){const a=i.drawYAxisTexts(this.centerX,this.centerY-p+parseInt(e.config.yaxis[0].labels.style.fontSize,10)/2,t,c[t]);l.add(a)}n.add(a),p-=f}this.drawSpokes(t),t.add(n),t.add(l)}renderInnerDataLabels(t,e,a){const s=this.w,i=new r(this.w),n=e.total.show;t.node.innerHTML="",t.node.style.opacity=a.opacity;const l=a.centerX,o=this.donutDataLabels.total.label?a.centerY:a.centerY-a.centerY/6;let h,d;h=void 0===e.name.color?s.globals.colors[0]:e.name.color;let c=e.name.fontSize,g=e.name.fontFamily,p=e.name.fontWeight;d=void 0===e.value.color?s.config.chart.foreColor:e.value.color;const f=e.value.formatter;let u="",m="";if(n?(h=e.total.color,c=e.total.fontSize,g=e.total.fontFamily,p=e.total.fontWeight,m=this.donutDataLabels.total.label?e.total.label:"",u=e.total.formatter(s)):1===s.seriesData.series.length&&(u=f(s.seriesData.series[0],s),m=s.seriesData.seriesNames[0]),m&&(m=e.name.formatter(m,e.total.show,s)),e.name.show){const a=i.drawText({x:l,y:o+parseFloat(e.name.offsetY),text:m,textAnchor:"middle",foreColor:h,fontSize:c,fontWeight:p,fontFamily:g});a.node.classList.add("apexcharts-datalabel-label"),t.add(a)}if(e.value.show){const a=e.name.show?parseFloat(e.value.offsetY)+16:e.value.offsetY,s=i.drawText({x:l,y:o+a,text:u,textAnchor:"middle",foreColor:d,fontWeight:e.value.fontWeight,fontSize:e.value.fontSize,fontFamily:e.value.fontFamily});s.node.classList.add("apexcharts-datalabel-value"),t.add(s)}return t}printInnerLabels(t,e,a,s){const i=this.w;let n;s?n=void 0===t.name.color?i.globals.colors[parseInt(s.parentNode.getAttribute("rel"),10)-1]:t.name.color:i.seriesData.series.length>1&&t.total.show&&(n=t.total.color);const r=i.dom.baseEl.querySelector(".apexcharts-datalabel-label"),l=i.dom.baseEl.querySelector(".apexcharts-datalabel-value");a=(0,t.value.formatter)(a,i),s||"function"!=typeof t.total.formatter||(a=t.total.formatter(i));const o=e===t.total.label;if(e=this.donutDataLabels.total.label?t.name.formatter(e,o,i):"",null!==r&&(r.textContent=e),null!==l&&(l.textContent=a),null!==r){r.style.fill=n}}printDataLabelsInner(t,e){const a=this.w,s=t.getAttribute("data:value"),i=a.seriesData.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];a.seriesData.series.length>1&&this.printInnerLabels(e,i,s,t);const n=a.dom.baseEl.querySelector(".apexcharts-datalabels-group");if(null!==n){n.style.opacity="1"}}drawSpokes(t){const e=this.w,a=new r(this.w),s=e.config.plotOptions.polarArea.spokes;if(0===s.strokeWidth)return;const i=[],l=360/e.seriesData.series.length;for(let t=0;t<e.seriesData.series.length;t++)i.push(n.polarToCartesian(this.centerX,this.centerY,e.globals.radialSize,e.config.plotOptions.pie.startAngle+l*t));i.forEach((e,i)=>{const n=a.drawLine(e.x,e.y,this.centerX,this.centerY,Array.isArray(s.connectorColors)?s.connectorColors[i]:s.connectorColors);t.add(n)})}revertDataLabelsInner(){const t=this.w;if(this.donutDataLabels.show){const e=t.dom.Paper.findOne(".apexcharts-datalabels-group"),a=this.renderInnerDataLabels(e,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});t.dom.Paper.findOne(".apexcharts-radialbar, .apexcharts-pie").add(a)}}}const c=a.__apex_Series,g=a.__apex_BrowserAPIs_BrowserAPIs,p=a.__apex_Environment_Environment;t.use({radialBar:class extends d{constructor(t,e){super(t,e),this.ctx=e,this.w=t,this.animBeginArr=[0],this.animDur=0,this.startAngle=t.config.plotOptions.radialBar.startAngle,this.endAngle=t.config.plotOptions.radialBar.endAngle,this.totalAngle=Math.abs(t.config.plotOptions.radialBar.endAngle-t.config.plotOptions.radialBar.startAngle),this.trackStartAngle=t.config.plotOptions.radialBar.track.startAngle,this.trackEndAngle=t.config.plotOptions.radialBar.track.endAngle,this.barLabels=this.w.config.plotOptions.radialBar.barLabels,this.donutDataLabels=this.w.config.plotOptions.radialBar.dataLabels,this.radialDataLabels=this.donutDataLabels,this.trackStartAngle||(this.trackStartAngle=this.startAngle),this.trackEndAngle||(this.trackEndAngle=this.endAngle),360===this.endAngle&&(this.endAngle=359.99),this.margin=parseInt(t.config.plotOptions.radialBar.track.margin,10),this.onBarLabelClick=this.onBarLabelClick.bind(this)}draw(t){var e;const a=this.w,s=new r(this.w),i=s.group({class:"apexcharts-radialbar"});if(a.globals.noData)return i;const n=s.group(),l=this.defaultSize/2,o=a.layout.gridWidth/2;let h=this.defaultSize/2.05;a.config.chart.sparkline.enabled||(h=h-a.config.stroke.width-a.config.chart.dropShadow.blur);const d=a.globals.fill.colors,c=a.config.plotOptions.radialBar,g=Array.isArray(c.bands)&&c.bands.length>0,f=g&&c.bandsStyle&&c.bandsStyle.hideTrackWhenPresent,u="needle"===c.shape;if(c.track.show&&!f){const e=this.drawTracks({size:h,centerX:o,centerY:l,colorArr:d,series:t});n.add(e)}if(g){const e=this.drawBands({size:h,centerX:o,centerY:l,series:t});n.add(e)}const m=this.drawArcs({size:h,centerX:o,centerY:l,colorArr:d,series:t,skipValueArc:u&&!(null==(e=c.needle)?void 0:e.showValueArc)});if(c.ticks&&c.ticks.show){const e=this.drawTicks({size:h,centerX:o,centerY:l,series:t});if(this.initialAnim&&!a.globals.dataChanged&&!a.globals.resized&&p.isBrowser()&&a.globals.shouldAnimate){const t=e.node;t.style.opacity="0",t.style.transition="opacity 280ms ease-out";const s=a.config.chart.animations.speed||800;setTimeout(()=>{t.style.opacity="1"},s)}n.add(e)}if(u){const e=this.drawNeedle({size:h,centerX:o,centerY:l,series:t});n.add(e)}let b=360;a.config.plotOptions.radialBar.startAngle<0&&(b=this.totalAngle);const A=(360-b)/360;if(a.globals.radialSize=h-h*A,this.radialDataLabels.value.show){const t=Math.max(this.radialDataLabels.value.offsetY,this.radialDataLabels.name.offsetY);a.globals.radialSize+=t*A}return n.add(m.g),"front"===a.config.plotOptions.radialBar.hollow.position&&(m.g.add(m.elHollow),m.dataLabels&&m.g.add(m.dataLabels)),i.add(n),i}drawTracks(t){const e=this.w,a=new r(this.w),s=a.group({class:"apexcharts-tracks"}),n=new l(this.w),o=new i(this.w),h=this.getStrokeWidth(t);t.size=t.size-h/2;for(let i=0;i<t.series.length;i++){const r=a.group({class:"apexcharts-radialbar-track apexcharts-track"});s.add(r),r.attr({rel:i+1}),t.size=t.size-h-this.margin;const l=e.config.plotOptions.radialBar.track,d=o.fillPath({seriesNumber:0,size:t.size,fillColors:Array.isArray(l.background)?l.background[i]:l.background,solid:!0}),c=this.trackStartAngle;let g=this.trackEndAngle;Math.abs(g)+Math.abs(c)>=360&&(g=360-Math.abs(this.startAngle)-.1);const p=a.drawPath({d:"",stroke:d,strokeWidth:h*parseInt(l.strokeWidth,10)/100,fill:"none",strokeOpacity:l.opacity,classes:"apexcharts-radialbar-area"});if(l.dropShadow.enabled){const t=l.dropShadow;n.dropShadow(p,t)}r.add(p),p.attr("id","apexcharts-radialbarTrack-"+i),this.animatePaths(p,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:c,size:t.size,i:i,totalItems:2,animBeginArr:0,dur:0,isTrack:!0})}return s}drawArcs(t){const e=this.w,a=new r(this.w),s=new i(this.w),o=new l(this.w),h=a.group(),d=this.getStrokeWidth(t);t.size=t.size-d/2;let g=e.config.plotOptions.radialBar.hollow.background;const p=t.size-d*t.series.length-this.margin*t.series.length-d*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,f=p-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(g=this.drawHollowImage(t,h,p,g));const u=this.drawHollow({size:f,centerX:t.centerX,centerY:t.centerY,fill:g||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){const t=e.config.plotOptions.radialBar.hollow.dropShadow;o.dropShadow(u,t)}let m=1;!this.radialDataLabels.total.show&&e.seriesData.series.length>1&&(m=0);let b=null;if(this.radialDataLabels.show){const a=e.dom.Paper.findOne(".apexcharts-datalabels-group");b=this.renderInnerDataLabels(a,this.radialDataLabels,{hollowSize:p,centerX:t.centerX,centerY:t.centerY,opacity:m})}"back"===e.config.plotOptions.radialBar.hollow.position&&(h.add(u),b&&h.add(b));let A=!1;e.config.plotOptions.radialBar.inverseOrder&&(A=!0);for(let i=A?t.series.length-1:0;A?i>=0:i<t.series.length;A?i--:i++){const l=a.group({class:"apexcharts-series apexcharts-radial-series",seriesName:n.escapeString(e.seriesData.seriesNames[i])});h.add(l),l.attr({rel:i+1,"data:realIndex":i}),c.addCollapsedClassToSeries(this.w,l,i),t.size=t.size-d-this.margin;const g=s.fillPath({seriesNumber:i,size:t.size,value:t.series[i]}),p=this.startAngle;let f;const u=e.config.plotOptions.radialBar,m="number"==typeof u.min?u.min:0,b="number"==typeof u.max?u.max:100,A=b===m?1:b-m,w=t=>{const e=Math.min(Math.max(t,m),b);return Math.max(0,(e-m)/A)},y=w(n.negToZero(t.series[i]));let x,S=Math.round(this.totalAngle*y)+this.startAngle;e.globals.dataChanged&&(f=this.startAngle,x=Math.round(this.totalAngle*w(n.negToZero(e.globals.previousPaths[i])))+f);Math.abs(S)+Math.abs(p)>360&&(S-=.01);Math.abs(x)+Math.abs(f)>360&&(x-=.01);const k=S-p,z=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[i]:e.config.stroke.dashArray,L=a.drawPath({d:"",stroke:t.skipValueArc?"transparent":g,strokeWidth:t.skipValueArc?0:d,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+i,strokeDashArray:z}),v=p+k/2,O=n.polarToCartesian(t.centerX,t.centerY,t.size,v);if(r.setAttrs(L.node,{"data:angle":k,"data:value":t.series[i],"data:cx":O.x,"data:cy":O.y}),e.config.chart.dropShadow.enabled){const t=e.config.chart.dropShadow;o.dropShadow(L,t,i)}if(o.setSelectionFilter(L,0,i),this.addListeners(L,this.radialDataLabels),l.add(L),L.attr({index:0,j:i}),this.barLabels.enabled){const s=n.polarToCartesian(t.centerX,t.centerY,t.size,p),r=this.barLabels.formatter(e.seriesData.seriesNames[i],{seriesIndex:i,w:e}),o=["apexcharts-radialbar-label"];this.barLabels.onClick||o.push("apexcharts-no-click");let h=this.barLabels.useSeriesColors?e.globals.colors[i]:e.config.chart.foreColor;h||(h=e.config.chart.foreColor);const d=s.x+this.barLabels.offsetX,c=s.y+this.barLabels.offsetY,g=a.drawText({x:d,y:c,text:r,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:h,cssClass:o.join(" ")});g.on("click",this.onBarLabelClick),g.attr({rel:i+1}),0!==p&&g.attr({"transform-origin":`${d} ${c}`,transform:`rotate(${p} 0 0)`}),l.add(g)}let C=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(C=e.config.chart.animations.speed),e.globals.dataChanged&&(C=e.config.chart.animations.dynamicAnimation.speed),this.animDur=C/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(L,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:p,prevEndAngle:x,prevStartAngle:f,size:t.size,i:i,totalItems:2,animBeginArr:this.animBeginArr,dur:C,shouldSetPrevPaths:!0})}return{g:h,elHollow:u,dataLabels:b}}_angleAtValue(t){const e=this.w.config.plotOptions.radialBar,a="number"==typeof e.min?e.min:0,s="number"==typeof e.max?e.max:100,i=s===a?a+1:s,n=(Math.max(a,Math.min(i,Number(t)))-a)/(i-a);return this.startAngle+n*(this.endAngle-this.startAngle)}_describeArc(t,e,a,s,i){const r=n.polarToCartesian(t,e,a,i),l=n.polarToCartesian(t,e,a,s),o=i-s,h=Math.abs(o)>180?1:0;return`M ${r.x} ${r.y} A ${a} ${a} 0 ${h} 0 ${l.x} ${l.y}`}drawBands(t){const e=this.w,a=new r(this.w),s=e.config.plotOptions.radialBar,i=s.bands||[],n=a.group({class:"apexcharts-gauge-bands"}),l=this.getStrokeWidth(t),o=t.size-l/2-l-this.margin,h=l*parseInt(s.bandsStyle.strokeWidth,10)/100,d="number"==typeof s.min?s.min:0,c="number"==typeof s.max?s.max:100,g=c===d?0:(s.bandsStyle.gap||0)*((this.endAngle-this.startAngle)/(c-d));for(let e=0;e<i.length;e++){const r=i[e];if(void 0===r.from||void 0===r.to)continue;const l=this._angleAtValue(r.from),d=this._angleAtValue(r.to),c=Math.min(l,d)+g/2,p=Math.max(l,d)-g/2;if(p-c<=0)continue;const f=a.drawPath({d:this._describeArc(t.centerX,t.centerY,o,c,p),stroke:r.color||"#ccc",strokeWidth:h,fill:"none",strokeLinecap:s.bandsStyle.linecap||"butt",classes:"apexcharts-gauge-band"});f.node.setAttribute("data-band-index",String(e)),n.add(f)}return n}drawTicks(t){var e,a,s,i;const l=this.w,o=new r(this.w),h=l.config.plotOptions.radialBar,d=h.ticks,c=o.group({class:"apexcharts-gauge-ticks"}),g=this.getStrokeWidth(t),p=t.size-g/2-g-this.margin,f="number"==typeof h.min?h.min:0,u="number"==typeof h.max?h.max:100,m=Math.max(2,null!=(a=null==(e=d.major)?void 0:e.count)?a:11),b=Math.max(0,null!=(i=null==(s=d.minor)?void 0:s.count)?i:0),A=(e,a,s)=>{var i,r,l;const h=this._angleAtValue(e),g=null!=(i=a.length)?i:8,f="inside"===a.placement?p-g:p,u="inside"===a.placement?p:p+g,m=n.polarToCartesian(t.centerX,t.centerY,f,h),b=n.polarToCartesian(t.centerX,t.centerY,u,h),A=o.drawLine(m.x,m.y,b.x,b.y,a.color||(s?"#666":"#999"),0,a.width||(s?2:1));if(c.add(A),s&&(null==(r=d.labels)?void 0:r.show)){const s=("inside"===a.placement?f:u)+("inside"===a.placement?-1:1)*(null!=(l=d.labels.offset)?l:6),i=n.polarToCartesian(t.centerX,t.centerY,s,h),r="function"==typeof d.labels.formatter?d.labels.formatter(e):String(e),g=o.drawText({x:i.x,y:i.y,text:r,textAnchor:"middle",dominantBaseline:"middle",fontFamily:d.labels.fontFamily,fontSize:d.labels.fontSize,fontWeight:d.labels.fontWeight,foreColor:d.labels.color,cssClass:"apexcharts-gauge-tick-label"});c.add(g)}};for(let t=0;t<m;t++){if(A(f+t/(m-1)*(u-f),d.major||{},!0),t<m-1&&b>0)for(let e=1;e<=b;e++){A(f+(t+e/(b+1))/(m-1)*(u-f),d.minor||{},!1)}}return c}drawNeedle(t){var e,a,s,i,n;const l=this.w,o=new r(this.w),h=l.config.plotOptions.radialBar.needle||{},d=o.group({class:"apexcharts-gauge-needle"});if(!t.series||0===t.series.length)return d;const c=this.getStrokeWidth(t),f=t.size-c/2-c-this.margin,u="string"==typeof h.length&&h.length.endsWith("%")?f*parseInt(h.length,10)/100:Number(h.length||.85*f),m=null!=(e=h.baseWidth)?e:4,b=null!=(a=h.tipWidth)?a:1,A=h.color||"#333",w=t.centerX,y=Number(null!=(s=h.offsetY)?s:0),x=t.centerY+y,S=`M ${w+m/2} ${x} A ${m/2} ${m/2} 0 0 1 ${w-m/2} ${x} L ${w-b/2} ${x-u} L ${w+b/2} ${x-u} Z`,k=o.drawPath({d:S,stroke:A,strokeWidth:0,fill:A,classes:"apexcharts-gauge-needle-shape"});d.add(k);const z=Number(t.series[0]),L=this._angleAtValue(z),v=this.initialAnim&&!l.globals.dataChanged&&!l.globals.resized,O=this.ctx,C="number"==typeof O._lastNeedleAngle?O._lastNeedleAngle:this.startAngle;O._lastNeedleAngle=L;if(p.isBrowser()&&l.globals.shouldAnimate&&(v||l.globals.dataChanged)&&C!==L){const t=d.node;t.setAttribute("transform-origin",`${w} ${x}`),t.setAttribute("transform",`rotate(${C})`);const e=(null==(i=h.animation)?void 0:i.duration)&&Number(h.animation.duration)||h.animationSpeed&&Number(h.animationSpeed)||(null==(n=l.config.chart.animations.dynamicAnimation)?void 0:n.speed)||l.config.chart.animations.speed||800,a=1.70158,s=a+1,r=v?t=>1+s*Math.pow(t-1,3)+a*Math.pow(t-1,2):t=>1-Math.pow(1-t,3),o=performance.now(),c=a=>{const s=Math.max(0,Math.min(1,(a-o)/e)),i=C+(L-C)*r(s);t.setAttribute("transform",`rotate(${i})`),s<1&&g.requestAnimationFrame(c)};g.requestAnimationFrame(c)}else d.attr({"transform-origin":`${w} ${x}`,transform:`rotate(${L})`});return d}drawHollow(t){var e;const a=new r(this.w),s=this.w.config.plotOptions.radialBar.hollow,i=a.drawCircle(2*t.size),n={class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill};return(s.stroke||s.strokeDasharray)&&(n.stroke=s.stroke||"transparent",n["stroke-width"]=null!=(e=s.strokeWidth)?e:1,s.strokeDasharray&&(n["stroke-dasharray"]=s.strokeDasharray)),i.attr(n),i}drawHollowImage(t,e,a,s){const r=this.w,l=new i(this.w),o=n.randomId(),h=r.config.plotOptions.radialBar.hollow.image;if(r.config.plotOptions.radialBar.hollow.imageClipped)l.clippedImgArea({width:a,height:a,image:h,patternID:`pattern${r.globals.cuid}${o}`}),s=`url(#pattern${r.globals.cuid}${o})`;else{const a=r.config.plotOptions.radialBar.hollow.imageWidth,s=r.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===a&&void 0===s){const a=r.dom.Paper.image(h,function(e){this.move(t.centerX-e.width/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+r.config.plotOptions.radialBar.hollow.imageOffsetY)});e.add(a)}else{const i=r.dom.Paper.image(h,function(){this.move(t.centerX-a/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-s/2+r.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(a,s)});e.add(i)}}return s}getStrokeWidth(t){const e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}onBarLabelClick(t){var e;const a=t.target,s=parseInt(null!=(e=a.getAttribute("rel"))?e:"",10)-1,i=this.barLabels.onClick,n=this.w;i&&i(n.seriesData.seriesNames[s],{w:n,seriesIndex:s})}}}),exports.default=t;