apexcharts
Version:
A JavaScript Chart Library
6 lines (5 loc) • 42.9 kB
JavaScript
/*!
* ApexCharts v5.15.0
* (c) 2018-2026 ApexCharts
*/
"use strict";var t=Object.defineProperty,e=Object.defineProperties,s=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,o=(e,s,a)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[s]=a,n=(t,e)=>{for(var s in e||(e={}))i.call(e,s)&&o(t,s,e[s]);if(a)for(var s of a(e))r.call(e,s)&&o(t,s,e[s]);return t},l=(t,a)=>e(t,s(a));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("apexcharts/core");function d(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const s in t)if("default"!==s){const a=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,a.get?a:{enumerable:!0,get:()=>t[s]})}return e.default=t,Object.freeze(e)}const b=d(h),c=b.__apex_CoreUtils,g=b.__apex_Graphics,u=b.__apex_DataLabels;class x{constructor(t){this.w=t.w,this.barCtx=t,this.totalFormatter=this.w.config.plotOptions.bar.dataLabels.total.formatter,this.totalFormatter||(this.totalFormatter=this.w.config.dataLabels.formatter)}handleBarDataLabels(t){const{x:e,y:s,y1:a,y2:i,i:r,j:o,realIndex:h,columnGroupIndex:d,series:b,barHeight:c,barWidth:u,barXPosition:x,barYPosition:p,visibleSeries:f}=t,m=this.w,y=new g(this.barCtx.w),v=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[h]:this.barCtx.strokeWidth;let C,w;m.axisFlags.isXNumeric&&!m.globals.isBarHorizontal?(C=e+u*(f+1),w=s+c*(f+1)-v):(C=e+u*f,w=s+c*f);let I=null,P=null,W=e,L=s,H={};const k=m.config.dataLabels,D=this.barCtx.barOptions.dataLabels,R=this.barCtx.barOptions.dataLabels.total;void 0!==p&&(this.barCtx.isRangeBar||this.barCtx.isPyramid)&&(w=p,L=p),void 0!==x&&this.barCtx.isVerticalGroupedRangeBar&&(C=x,W=x);const O=k.offsetX,A=k.offsetY;let F={width:0,height:0};if(m.config.dataLabels.enabled){const t=m.seriesData.series[r][o];F=y.getTextRects(m.config.dataLabels.formatter?m.config.dataLabels.formatter(t,l(n({},m),{seriesIndex:r,dataPointIndex:o,w:m})):m.formatters.yLabelFormatters[0](t),parseFloat(k.style.fontSize).toString())}const S={x:e,y:s,i:r,j:o,realIndex:h,columnGroupIndex:d,bcx:C,bcy:w,barHeight:c,barWidth:u,textRects:F,strokeWidth:v,dataLabelsX:W,dataLabelsY:L,dataLabelsConfig:k,barDataLabelsConfig:D,barTotalDataLabelsConfig:R,offX:O,offY:A};return H=this.barCtx.isHorizontal?this.calculateBarsDataLabelsPosition(S):this.calculateColumnsDataLabelsPosition(S),I=this.drawCalculatedDataLabels({x:H.dataLabelsX,y:H.dataLabelsY,val:this.barCtx.isRangeBar?[a,i]:"100%"===m.config.chart.stackType?b[h][o]:m.seriesData.series[h][o],i:h,j:o,barWidth:u,barHeight:c,textRects:F,dataLabelsConfig:k}),m.config.chart.stacked&&R.enabled&&(P=this.drawTotalDataLabels({x:H.totalDataLabelsX,y:H.totalDataLabelsY,barWidth:u,barHeight:c,realIndex:h,textAnchor:H.totalDataLabelsAnchor,val:this.getStackedTotalDataLabel({realIndex:h,j:o}),dataLabelsConfig:k,barTotalDataLabelsConfig:R})),{dataLabelsPos:H,dataLabels:I,totalDataLabels:P}}getStackedTotalDataLabel({realIndex:t,j:e}){const s=this.w;let a=this.barCtx.stackedSeriesTotals[e];return this.totalFormatter&&(a=this.totalFormatter(a,l(n({},s),{seriesIndex:t,dataPointIndex:e,w:s}))),a}calculateColumnsDataLabelsPosition(t){const e=this.w;let s,a,{i:i,j:r,realIndex:o,y:n,bcx:l,barWidth:h,barHeight:d,textRects:b,dataLabelsX:c,dataLabelsY:u,dataLabelsConfig:x,barDataLabelsConfig:p,barTotalDataLabelsConfig:f,strokeWidth:m,offX:y,offY:v}=t;const C=l;d=Math.abs(d);const w="vertical"===e.config.plotOptions.bar.dataLabels.orientation,{zeroEncounters:I}=this.barCtx.barHelpers.getZeroValueEncounters({i:i,j:r});l-=m/2;const P=e.layout.gridWidth/e.globals.dataPoints;if(this.barCtx.isVerticalGroupedRangeBar?c+=h/2:(c=e.axisFlags.isXNumeric?l-h/2+y:l-P+h/2+y,!e.config.chart.stacked&&I>0&&e.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(c-=h*I)),w){const t=2;c=c+b.height/2-m/2-t}const W=e.seriesData.series[i][r]<0;let L=n;switch(this.barCtx.isReversed&&(L=n+(W?d:-d)),p.position){case"center":u=w?W?L-d/2+v:L+d/2-v:W?L-d/2+b.height/2+v:L+d/2+b.height/2-v;break;case"bottom":u=w?W?L-d+v:L+d-v:W?L-d+b.height+m+v:L+d-b.height/2+m-v;break;case"top":u=w?W?L+v:L-v:W?L-b.height/2-v:L+b.height+v}let H=L;if(e.labelData.seriesGroups.forEach(t=>{var e;null==(e=this.barCtx[t.join(",")])||e.prevY.forEach(t=>{H=W?Math.max(t[r],H):Math.min(t[r],H)})}),this.barCtx.lastActiveBarSerieIndex===o&&f.enabled){const t=18,i=new g(this.barCtx.w).getTextRects(this.getStackedTotalDataLabel({realIndex:o,j:r}),x.fontSize);s=W?H-i.height/2-v-f.offsetY+t:H+i.height+v+f.offsetY-t;const n=P;a=C+(e.axisFlags.isXNumeric?-h*e.globals.barGroups.length/2:e.globals.barGroups.length*h/2-(e.globals.barGroups.length-1)*h-n)+f.offsetX}return e.config.chart.stacked||(u<0?u=0+m:u+b.height/3>e.layout.gridHeight&&(u=e.layout.gridHeight-m)),{bcx:l,bcy:n,dataLabelsX:c,dataLabelsY:u,totalDataLabelsX:a,totalDataLabelsY:s,totalDataLabelsAnchor:"middle"}}calculateBarsDataLabelsPosition(t){var e;const s=this.w;let{x:a,i:i,j:r,realIndex:o,bcy:n,barHeight:l,barWidth:h,textRects:d,dataLabelsX:b,strokeWidth:c,dataLabelsConfig:u,barDataLabelsConfig:x,barTotalDataLabelsConfig:p,offX:f,offY:m}=t;const y=s.layout.gridHeight/s.globals.dataPoints,{zeroEncounters:v}=this.barCtx.barHelpers.getZeroValueEncounters({i:i,j:r});let C,w,I;if(h=Math.abs(h),this.barCtx.isPyramid){C=n+l/2+m-(null!=(e=d.centerOffset)?e:0)}else C=n-(this.barCtx.isRangeBar?0:y)+l/2+d.height/2+m-3;!s.config.chart.stacked&&v>0&&s.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(C-=l*v);let P="start";const W=s.seriesData.series[i][r]<0;let L=a;if(this.barCtx.isReversed&&(L=a+(W?-h:h),P=W?"start":"end"),this.barCtx.isPyramid)b=s.layout.gridWidth/2+f;else switch(x.position){case"center":b=W?L+h/2-f:Math.max(d.width/2,L-h/2)+f;break;case"bottom":b=W?L+h-c-f:L-h+c+f;break;case"top":b=W?L-c-f:L-c+f}let H=L;if(s.labelData.seriesGroups.forEach(t=>{var e;null==(e=this.barCtx[t.join(",")])||e.prevX.forEach(t=>{H=W?Math.min(t[r],H):Math.max(t[r],H)})}),this.barCtx.lastActiveBarSerieIndex===o&&p.enabled){const t=new g(this.barCtx.w).getTextRects(this.getStackedTotalDataLabel({realIndex:o,j:r}),u.fontSize);W?(w=H-c-f-p.offsetX,P="end"):w=H+f+p.offsetX+(this.barCtx.isReversed?-(h+c):c),I=C-d.height/2+t.height/2+p.offsetY+c,s.globals.barGroups.length>1&&(I-=s.globals.barGroups.length/2*(l/2))}return s.config.chart.stacked||("start"===u.textAnchor?b-d.width<0?b=W?d.width+c:c:b+d.width>s.layout.gridWidth&&(b=W?s.layout.gridWidth-c:s.layout.gridWidth-d.width-c):"middle"===u.textAnchor?b-d.width/2<0?b=d.width/2+c:b+d.width/2>s.layout.gridWidth&&(b=s.layout.gridWidth-d.width/2-c):"end"===u.textAnchor&&(b<1?b=d.width+c:b+1>s.layout.gridWidth&&(b=s.layout.gridWidth-d.width-c))),{bcx:a,bcy:n,dataLabelsX:b,dataLabelsY:C,totalDataLabelsX:w,totalDataLabelsY:I,totalDataLabelsAnchor:P}}drawCalculatedDataLabels({x:t,y:e,val:s,i:a,j:i,textRects:r,barHeight:o,barWidth:h,dataLabelsConfig:d}){const b=this.w;let c="rotate(0)";"vertical"===b.config.plotOptions.bar.dataLabels.orientation&&(c=`rotate(-90, ${t}, ${e})`);const x=new u(this.barCtx.w,this.barCtx.ctx),p=new g(this.barCtx.w),f=d.formatter;let m=null;const y=b.globals.collapsedSeriesIndices.indexOf(a)>-1;if(d.enabled&&!y){m=p.group({class:"apexcharts-data-labels",transform:c});let g="";void 0!==s&&(g=f(s,l(n({},b),{seriesIndex:a,dataPointIndex:i,w:b}))),!s&&b.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(g="");const u=b.seriesData.series[a][i]<0,y=b.config.plotOptions.bar.dataLabels.position;if("vertical"===b.config.plotOptions.bar.dataLabels.orientation&&("top"===y&&(d.textAnchor=u?"end":"start"),"center"===y&&(d.textAnchor="middle"),"bottom"===y&&(d.textAnchor=u?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels){h<p.getTextRects(g,parseFloat(d.style.fontSize).toString()).width&&(g="")}b.config.chart.stacked&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&(this.barCtx.isHorizontal?r.width/1.6>Math.abs(h)&&(g=""):r.height/1.6>Math.abs(o)&&(g=""));const v=n({},d);this.barCtx.isHorizontal&&s<0&&("start"===d.textAnchor?v.textAnchor="end":"end"===d.textAnchor&&(v.textAnchor="start")),x.plotDataLabelsText({x:t,y:e,text:g,i:a,j:i,parent:m,dataLabelsConfig:v,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return m}drawTotalDataLabels({x:t,y:e,val:s,realIndex:a,textAnchor:i,barTotalDataLabelsConfig:r}){const o=new g(this.barCtx.w);let n;return r.enabled&&void 0!==t&&void 0!==e&&this.barCtx.lastActiveBarSerieIndex===a&&(n=o.drawText({x:t,y:e,foreColor:r.style.color,text:s,textAnchor:i,fontFamily:r.style.fontFamily,fontSize:r.style.fontSize,fontWeight:r.style.fontWeight})),n}}const p=b.__apex_Series,f=b.__apex_Fill,m=b.__apex_Utils;class y{constructor(t){this.w=t.w,this.barCtx=t}initVariables(t){const e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(let s=0;s<t.length;s++)if(t[s].length>0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[s].length),e.axisFlags.isXNumeric)for(let a=0;a<t[s].length;a++)e.seriesData.seriesX[s][a]>e.globals.minX&&e.seriesData.seriesX[s][a]<e.globals.maxX&&this.barCtx.visibleItems++;else this.barCtx.visibleItems=e.globals.dataPoints;this.arrBorderRadius=this.createBorderRadiusArr(e.seriesData.series),m.isSafari()&&(this.arrBorderRadius=this.arrBorderRadius.map(t=>t.map(t=>"none"))),0===this.barCtx.seriesLen&&(this.barCtx.seriesLen=1),this.barCtx.zeroSerieses=[],e.globals.comboCharts||this.checkZeroSeries({series:t})}initialPositions(t){const e=this.w;let s,a,i,r,o,n,l,h,d=e.globals.dataPoints;this.barCtx.isRangeBar&&(d=e.labelData.labels.length);let b=this.barCtx.seriesLen;if(e.config.plotOptions.bar.rangeBarGroupRows&&(b=1),this.barCtx.isHorizontal)i=e.layout.gridHeight/d,o=i/b,e.axisFlags.isXNumeric&&(i=e.layout.gridHeight/this.barCtx.totalItems,o=i/this.barCtx.seriesLen),o=o*parseInt(this.barCtx.barOptions.barHeight,10)/100,-1===String(this.barCtx.barOptions.barHeight).indexOf("%")&&(o=parseInt(this.barCtx.barOptions.barHeight,10)),h=this.barCtx.baseLineInvertedY+e.globals.padHorizontal+(this.barCtx.isReversed?e.layout.gridWidth:0)-(this.barCtx.isReversed?2*this.barCtx.baseLineInvertedY:0),this.barCtx.isFunnel&&(h=e.layout.gridWidth/2),a=(i-o*this.barCtx.seriesLen)/2;else{if(r=e.layout.gridWidth/this.barCtx.visibleItems,e.config.xaxis.convertedCatToNumeric&&(r=e.layout.gridWidth/e.globals.dataPoints),n=r/b*parseInt(this.barCtx.barOptions.columnWidth,10)/100,e.axisFlags.isXNumeric){const t=this.barCtx.xRatio;e.globals.minXDiff&&.5!==e.globals.minXDiff&&e.globals.minXDiff/t>0&&(r=e.globals.minXDiff/t),n=r/b*parseInt(this.barCtx.barOptions.columnWidth,10)/100,n<1&&(n=1)}if(-1===String(this.barCtx.barOptions.columnWidth).indexOf("%")&&(n=parseInt(this.barCtx.barOptions.columnWidth,10)),l=e.layout.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?e.layout.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.translationsIndex]:0),e.axisFlags.isXNumeric){s=this.barCtx.getBarXForNumericXAxis({x:s,j:0,realIndex:t,barWidth:n}).x}else s=e.globals.padHorizontal+m.noExponents(r-n*this.barCtx.seriesLen)/2}return e.globals.barHeight=o,e.globals.barWidth=n,{x:s,y:a,yDivision:i,xDivision:r,barHeight:o,barWidth:n,zeroH:l,zeroW:h}}initializeStackedPrevVars(t){t.w.labelData.seriesGroups.forEach(e=>{t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]})}initializeStackedXYVars(t){t.w.labelData.seriesGroups.forEach(e=>{t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]})}getPathFillColor(t,e,s,a){var i,r,o,n;const l=this.w,h=new f(this.barCtx.w);let d=null;const b=this.barCtx.barOptions.distributed?s:e;let c=!1;if(this.barCtx.barOptions.colors.ranges.length>0){this.barCtx.barOptions.colors.ranges.map(a=>{t[e][s]>=a.from&&t[e][s]<=a.to&&(d=a.color,c=!0)})}return{color:h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?b:a,dataPointIndex:s,color:d,value:t[e][s],fillConfig:null==(i=l.config.series[e].data[s])?void 0:i.fill,fillType:(null==(o=null==(r=l.config.series[e].data[s])?void 0:r.fill)?void 0:o.type)?null==(n=l.config.series[e].data[s])?void 0:n.fill.type:Array.isArray(l.config.fill.type)?l.config.fill.type[a]:l.config.fill.type}),useRangeColor:c}}getStrokeWidth(t,e,s){let a=0;const i=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]||"bar"===i.config.chart.type&&!this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,i.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[s]:this.barCtx.strokeWidth)),a}createBorderRadiusArr(t){var e;const s=this.w,a=!this.w.config.chart.stacked||s.config.plotOptions.bar.borderRadius<=0,i=t.length,r=0|(null==(e=t[0])?void 0:e.length),o=Array.from({length:i},()=>Array(r).fill(a?"top":"none"));if(a)return o;const n=this.w.config.chart.type;for(let e=0;e<r;e++){const s=[],a=[];let l=0;for(let r=0;r<i;r++){const i=t[r][e];i>0?(s.push(r),l++):i<0&&(a.push(r),l++)}if(s.length>0&&0===a.length)if(1===s.length)o[s[0]][e]="bar"===n&&1===r?"top":"both";else{const t=s[0],a=s[s.length-1];for(const i of s)o[i][e]=i===t?"bar"===n&&1===r?"top":"bottom":i===a?"top":"none"}else if(a.length>0&&0===s.length)if(1===a.length)o[a[0]][e]="both";else{const t=Math.max(...a),s=Math.min(...a);for(const i of a)o[i][e]=i===t?"bottom":i===s?"top":"none"}else if(s.length>0&&a.length>0){const t=s[s.length-1];for(const a of s)o[a][e]=a===t?"top":"none";const i=Math.max(...a);for(const t of a)o[t][e]=t===i?"bottom":"none"}else if(1===l){o[s[0]||a[0]][e]="both"}}return o}barBackground({j:t,i:e,x1:s,x2:a,y1:i,y2:r,elSeries:o}){const n=this.w,l=new g(this.barCtx.w),h=new p(this.barCtx.w).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&h===e){t>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(t%=this.barCtx.barOptions.colors.backgroundBarColors.length);const e=this.barCtx.barOptions.colors.backgroundBarColors[t],h=l.drawRect(void 0!==s?s:0,void 0!==i?i:0,void 0!==a?a:n.layout.gridWidth,void 0!==r?r:n.layout.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,e,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(h),h.node.classList.add("apexcharts-backgroundBar")}}getColumnPaths({barWidth:t,barXPosition:e,y1:s,y2:a,strokeWidth:i,isReversed:r,series:o,seriesGroup:n,realIndex:l,i:h,j:d,w:b}){var c,u,x;const p=new g(this.barCtx.w);(i=Array.isArray(i)?i[l]:i)||(i=0);let f=t,m=e;(null==(c=b.config.series[l].data[d])?void 0:c.columnWidthOffset)&&(m=e-b.config.series[l].data[d].columnWidthOffset/2,f=t+b.config.series[l].data[d].columnWidthOffset);const y=i/2,v=m+y,C=m+f-y,w=(o[h][d]>=0?1:-1)*(r?-1:1);s+=.001-y*w,a+=.001+y*w;const I=p.line(C,s),P="around"===b.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[l][d]?" Z":" z";let W,L=p.move(v,s)+p.line(v,a)+p.line(C,a)+I+P;"none"!==this.arrBorderRadius[l][d]&&(L=p.roundPathCorners(L,b.config.plotOptions.bar.borderRadius));const H=null==(x=null==(u=this.barCtx.ctx)?void 0:u.morphTypeChange)?void 0:x.getInitialPathFor(l,d);if(W=H||(b.globals.previousPaths.length>0?this.barCtx.getPreviousPath(l,d,L):p.move(v,s)+p.line(v,s)+I+I+I+I+I+p.line(v,s)+P),b.config.chart.stacked){let t=this.barCtx;t=this.barCtx[n],t.yArrj.push(a-y*w),t.yArrjF.push(Math.abs(s-a+i*w)),t.yArrjVal.push(this.barCtx.series[h][d])}return{pathTo:L,pathFrom:W}}getFunnelTrapezoidPaths({barYPosition:t,barHeight:e,series:s,i:a,j:i,realIndex:r,strokeWidth:o,w:n}){var l,h;const d=new g(this.barCtx.w),b=n.layout.gridWidth/2,c=t=>Math.abs(t/this.barCtx.invertedYRatio)/2,u=c(s[a][i]),x=i===s[a].length-1,p="taper"===n.config.plotOptions.funnel.lastShape?"taper":"flat";let f;f=x?"taper"===p?0:u:c(s[a][i+1]);const m=o/2,y=t+m,v=t+e-m,C=b-u,w=b+u,I=b-f,P=b+f,W=d.move(C,y)+d.line(w,y)+d.line(P,v)+d.line(I,v)+" Z";let L;const H=null==(h=null==(l=this.barCtx.ctx)?void 0:l.morphTypeChange)?void 0:h.getInitialPathFor(r,i);return L=H||(n.globals.previousPaths.length>0?this.barCtx.getPreviousPath(r,i,W):d.move(b,y)+d.line(b,y)+d.line(b,v)+d.line(b,v)+" Z"),{pathTo:W,pathFrom:L,x:w,x1:C,barXPosition:b}}computePyramidLayout(t){const e=this.w,s=e.layout.gridHeight,a=e.layout.gridWidth,i=t.map(t=>Math.abs(Number(t)||0)),r=i.reduce((t,e)=>t+e,0);if(0===r||s<=0)return i.map(()=>({y:0,height:0,topHalf:0,bottomHalf:0}));const o=a/2;let n=0;const l=[];for(let t=0;t<i.length;t++){const e=n/r;n+=i[t];const a=n/r,h=e*s,d=a*s;l.push({y:h,height:d-h,topHalf:e*o,bottomHalf:a*o})}return l}getPyramidPaths({barYPosition:t,barHeight:e,topHalf:s,bottomHalf:a,realIndex:i,j:r,strokeWidth:o,w:n}){var l,h;const d=new g(this.barCtx.w),b=n.layout.gridWidth/2,c=o/2,u=t+c,x=t+e-c,p=b-s,f=b+s,m=b-a,y=b+a,v=d.move(p,u)+d.line(f,u)+d.line(y,x)+d.line(m,x)+" Z";let C;const w=null==(h=null==(l=this.barCtx.ctx)?void 0:l.morphTypeChange)?void 0:h.getInitialPathFor(i,r);return C=w||(n.globals.previousPaths.length>0?this.barCtx.getPreviousPath(i,r,v):d.move(b,u)+d.line(b,u)+d.line(b,x)+d.line(b,x)+" Z"),{pathTo:v,pathFrom:C,x:f,x1:p,barXPosition:b}}getBarpaths({barYPosition:t,barHeight:e,x1:s,x2:a,strokeWidth:i,isReversed:r,series:o,seriesGroup:n,realIndex:l,i:h,j:d,w:b}){var c,u,x;const p=new g(this.barCtx.w);(i=Array.isArray(i)?i[l]:i)||(i=0);let f=t,m=e;(null==(c=b.config.series[l].data[d])?void 0:c.barHeightOffset)&&(f=t-b.config.series[l].data[d].barHeightOffset/2,m=e+b.config.series[l].data[d].barHeightOffset);const y=i/2,v=f+y,C=f+m-y,w=(o[h][d]>=0?1:-1)*(r?-1:1);s+=.001+y*w,a+=.001-y*w;const I=this.barCtx.isFunnel,P=I?(s+a)/2:s,W=p.line(s,C),L="around"===b.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[l][d]?" Z":" z";let H,k=p.move(s,v)+p.line(a,v)+p.line(a,C)+W+L;"none"!==this.arrBorderRadius[l][d]&&(k=p.roundPathCorners(k,b.config.plotOptions.bar.borderRadius));const D=null==(x=null==(u=this.barCtx.ctx)?void 0:u.morphTypeChange)?void 0:x.getInitialPathFor(l,d);if(D)H=D;else if(b.globals.previousPaths.length>0)H=this.barCtx.getPreviousPath(l,d,k);else{const t=I?p.line(P,C):W;H=p.move(P,v)+p.line(P,v)+t+t+t+t+t+p.line(P,v)+L}if(b.config.chart.stacked){let t=this.barCtx;t=this.barCtx[n],t.xArrj.push(a+y*w),t.xArrjF.push(Math.abs(s-a-i*w)),t.xArrjVal.push(this.barCtx.series[h][d])}return{pathTo:k,pathFrom:H}}checkZeroSeries({series:t}){const e=this.w;for(let s=0;s<t.length;s++){let a=0;for(let i=0;i<t[e.globals.maxValsInArrayIndex].length;i++)a+=t[s][i];0===a&&this.barCtx.zeroSerieses.push(s)}}getXForValue(t,e,s=!0){let a=s?e:null;return null!=t&&(a=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),a}getYForValue(t,e,s,a=!0){let i=a?e:null;return null!=t&&(i=e-t/this.barCtx.yRatio[s]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[s]:0)),i}getGoalValues(t,e,s,a,i,r){const o=this.w,h=[],d=(a,i)=>{h.push({[t]:"x"===t?this.getXForValue(a,e,!1):this.getYForValue(a,s,r,!1),attrs:i})};if(o.seriesData.seriesGoals[a]&&o.seriesData.seriesGoals[a][i]&&Array.isArray(o.seriesData.seriesGoals[a][i])&&o.seriesData.seriesGoals[a][i].forEach(t=>{d(t.value,t)}),this.barCtx.barOptions.isDumbbell&&o.rangeData.seriesRange.length){const e=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:o.globals.colors,s={strokeHeight:"x"===t?0:o.globals.markers.size[a],strokeWidth:"x"===t?o.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(e[a])?e[a][0]:e[a]};d(o.rangeData.seriesRangeStart[a][i],s),d(o.rangeData.seriesRangeEnd[a][i],l(n({},s),{strokeColor:Array.isArray(e[a])?e[a][1]:e[a]}))}return h}drawGoalLine({barXPosition:t,barYPosition:e,goalX:s,goalY:a,barWidth:i,barHeight:r}){const o=new g(this.barCtx.w),n=o.group({className:"apexcharts-bar-goals-groups"});n.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:n.node}),n.attr("clip-path",`url(#gridRectMarkerMask${this.barCtx.w.globals.cuid})`);let l=null;return this.barCtx.isHorizontal?Array.isArray(s)&&s.forEach(t=>{if(t.x>=-1&&t.x<=o.w.layout.gridWidth+1){const s=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:r/2,a=e+s+r/2;l=o.drawLine(t.x,a-2*s,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),n.add(l)}}):Array.isArray(a)&&a.forEach(e=>{if(e.y>=-1&&e.y<=o.w.layout.gridHeight+1){const s=void 0!==e.attrs.strokeWidth?e.attrs.strokeWidth:i/2,a=t+s+i/2;l=o.drawLine(a-2*s,e.y,a,e.y,e.attrs.strokeColor?e.attrs.strokeColor:void 0,e.attrs.strokeDashArray,e.attrs.strokeHeight?e.attrs.strokeHeight:2,e.attrs.strokeLineCap),n.add(l)}}),n}drawBarShadow({prevPaths:t,currPaths:e,color:s,realIndex:a,j:i}){const r=this.w,{x:o,x1:n,barYPosition:l}=t,{x:h,x1:d,barYPosition:b}=e,c=l+e.barHeight,u=new g(this.barCtx.w),x=new m,p=u.move(n,c)+u.line(o,c)+u.line(h,b)+u.line(d,b)+u.line(n,c)+("around"===r.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[a][i]?" Z":" z");return u.drawPath({d:p,fill:x.shadeColor(.5,m.rgb2hex(s)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadow apexcharts-decoration-element"})}getZeroValueEncounters({i:t,j:e}){var s;const a=this.w;let i=0,r=0;return(a.config.plotOptions.bar.horizontal?a.seriesData.series.map((t,e)=>e):(null==(s=a.globals.columnSeries)?void 0:s.i.map(t=>t))||[]).forEach(s=>{const o=a.globals.seriesPercent[s][e];o&&i++,s<t&&0===o&&r++}),{nonZeroColumns:i,zeroEncounters:r}}getGroupIndex(t){const e=this.w,s=e.labelData.seriesGroups.findIndex(s=>s.indexOf(e.seriesData.seriesNames[t])>-1),a=this.barCtx.columnGroupIndices;let i=a.indexOf(s);return i<0&&(a.push(s),i=a.length-1),{groupIndex:s,columnGroupIndex:i}}}const v=b.__apex_Filters,C=b.__apex_Animations_computeStagger;class w{constructor(t,e,s){this.ctx=e,this.w=t,this.barOptions=t.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=t.config.stroke.width,this.isNullValue=!1,this.isRangeBar=t.rangeData.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!t.globals.isBarHorizontal&&t.rangeData.seriesRange.length&&t.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.isPyramid=this.barOptions.isPyramid,this.pyramidLayout=null,this.xyRatios=s,this.xRatio=0,this.yRatio=[],this.invertedXRatio=0,this.invertedYRatio=0,this.baseLineY=[],this.baseLineInvertedY=0,null!==this.xyRatios&&(this.xRatio=s.xRatio,this.yRatio=s.yRatio,this.invertedXRatio=s.invertedXRatio,this.invertedYRatio=s.invertedYRatio,this.baseLineY=s.baseLineY,this.baseLineInvertedY=s.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[],this.series=[],this.elSeries=null,this.visibleI=0,this.isReversed=!1;const a=new p(this.w);this.lastActiveBarSerieIndex=a.getActiveConfigSeriesIndex("desc",["bar","column"]),this.columnGroupIndices=[];const i=a.getBarSeriesIndices(),r=new c(this.w);this.stackedSeriesTotals=r.getStackedSeriesTotals(this.w.config.series.map((t,e)=>-1===i.indexOf(e)?e:-1).filter(t=>-1!==t)),this.barHelpers=new y(this)}draw(t,e){var s,a;const i=this.w,r=new g(this.w),o=new c(this.w);t=o.getLogSeries(t),this.series=t,this.yRatio=o.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);const h=r.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&(this.totalItems,this.barOptions.dataLabels.maxItems);for(let o=0,d=0;o<t.length;o++,d++){let b,c;const g=[],u=[],x=i.globals.comboCharts?e[o]:o,{columnGroupIndex:f}=this.barHelpers.getGroupIndex(x),y=r.group({class:"apexcharts-series",rel:o+1,seriesName:m.escapeString(i.seriesData.seriesNames[x]),"data:realIndex":x});p.addCollapsedClassToSeries(this.w,y,x),t[o].length>0&&(this.visibleI=this.visibleI+1),this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[x],this.translationsIndex=x);const C=this.translationsIndex;this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed,this.isPyramid&&(this.pyramidLayout=this.barHelpers.computePyramidLayout(t[o]));const w=this.barHelpers.initialPositions(x),{y:I,yDivision:P,zeroW:W,x:L,xDivision:H,zeroH:k}=w;let D=w.barHeight,R=w.barWidth;c=I,b=L,this.isHorizontal||u.push(b+(null!=R?R:0)/2);const O=r.group({class:"apexcharts-datalabels","data:realIndex":x});i.globals.delayedElements.push({el:O.node}),O.node.classList.add("apexcharts-element-hidden");const A=r.group({class:"apexcharts-bar-goals-markers"}),F=r.group({class:"apexcharts-bar-shadows"});i.globals.delayedElements.push({el:F.node}),F.node.classList.add("apexcharts-element-hidden");for(let e=0;e<t[o].length;e++){const r=this.barHelpers.getStrokeWidth(o,e,x);let h=null;const p={indexes:{i:o,j:e,realIndex:x,translationsIndex:C,bc:d},x:b,y:c,strokeWidth:r,elSeries:y};this.isHorizontal?(h=this.drawBarPaths(l(n({},p),{barHeight:D,zeroW:W,yDivision:P})),R=this.series[o][e]/this.invertedYRatio):(h=this.drawColumnPaths(l(n({},p),{xDivision:H,barWidth:R,zeroH:k})),D=this.series[o][e]/this.yRatio[C]);const w=this.barHelpers.getPathFillColor(t,o,e,x);if(this.isFunnel&&!this.isPyramid&&this.barOptions.isFunnel3d&&"trapezoid"!==(null==(s=i.config.plotOptions.funnel)?void 0:s.shape)&&this.pathArr.length&&e>0){const t=this.barHelpers.drawBarShadow({color:"string"==typeof w.color&&-1===(null==(a=w.color)?void 0:a.indexOf("url"))?w.color:m.hexToRgba(i.globals.colors[o]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:h,realIndex:x,j:e});if(F.add(t),i.config.chart.dropShadow.enabled){new v(this.w).dropShadow(t,i.config.chart.dropShadow,x)}}this.pathArr.push(h);const I=this.barHelpers.drawGoalLine({barXPosition:h.barXPosition,barYPosition:h.barYPosition,goalX:h.goalX,goalY:h.goalY,barHeight:D,barWidth:R});I&&A.add(I),c=h.y,b=h.x,e>0&&u.push(b+(null!=R?R:0)/2),g.push(c),this.renderSeries(l(n({realIndex:x,pathFill:w.color},w.useRangeColor?{lineFill:w.color}:{}),{j:e,i:o,columnGroupIndex:f,pathFrom:h.pathFrom,pathTo:h.pathTo,strokeWidth:r,elSeries:y,x:b,y:c,series:t,barHeight:Math.abs(h.barHeight?h.barHeight:D),barWidth:Math.abs(h.barWidth?h.barWidth:R),elDataLabelsWrap:O,elGoalsMarkers:A,elBarShadows:F,visibleSeries:this.visibleI,type:"bar"}))}i.globals.seriesXvalues[x]=u,i.globals.seriesYvalues[x]=g,h.add(y)}return h}renderSeries({realIndex:t,pathFill:e,lineFill:s,j:a,i:i,columnGroupIndex:r,pathFrom:o,pathTo:n,strokeWidth:l,elSeries:h,x:d,y:b,y1:c,y2:u,series:p,barHeight:f,barWidth:m,barXPosition:y,barYPosition:w,elDataLabelsWrap:I,elGoalsMarkers:P,elBarShadows:W,visibleSeries:L,type:H,classes:k}){var D;const R=this.w,O=new g(this.w,this.ctx);let A=!1;if(h._bindingsDelegated||(h._bindingsDelegated=!0,O.setupEventDelegation(h,`.apexcharts-${H}-area`)),!s){let e=function(t){const e=R.config.stroke.colors;let s;return Array.isArray(e)&&e.length>0&&(s=e[t],s||(s=""),"function"==typeof s)?s({value:R.seriesData.series[t][a],dataPointIndex:a,w:R}):s};const i="function"==typeof R.globals.stroke.colors[t]?e(t):R.globals.stroke.colors[t];s=this.barOptions.distributed?R.globals.stroke.colors[a]:i}const F=new x(this).handleBarDataLabels({x:d,y:b,y1:c,y2:u,i:i,j:a,series:p,realIndex:t,columnGroupIndex:r,barHeight:f,barWidth:m,barXPosition:y,barYPosition:w,visibleSeries:L});R.globals.isBarHorizontal||(F.dataLabelsPos.dataLabelsX+Math.max(m,R.globals.barPadForNumericAxis)<0||F.dataLabelsPos.dataLabelsX-Math.max(m,R.globals.barPadForNumericAxis)>R.layout.gridWidth)&&(A=!0),R.config.series[i].data[a]&&R.config.series[i].data[a].strokeColor&&(s=R.config.series[i].data[a].strokeColor),this.isNullValue&&(e="none");const S=R.config.chart.animations,X=S.animateGradually;let j=0;if(X&&!1!==X.enabled){const t=R.globals.dataPoints||1,e=X.delay||0,s=Math.min(e,.5*S.speed/Math.max(1,t));let r=C({style:"sequential",index:a,baseDelay:s});R.config.chart.stacked&&(r+=i*s*.5);j=r/(e||1)}if(!A){const r=!0===(null==(D=this.ctx.morphTypeChange)?void 0:D.isActive())?this.ctx.morphTypeChange.getSpeed():R.config.chart.animations.dynamicAnimation.speed,d=O.renderPaths({i:i,j:a,realIndex:t,pathFrom:o,pathTo:n,stroke:s,strokeWidth:l,strokeLineCap:R.config.stroke.lineCap,fill:e,animationDelay:j,initialSpeed:R.config.chart.animations.speed,dataChangeSpeed:r,className:`apexcharts-${H}-area ${k}`,chartType:H,bindEventsOnPaths:!1});d.attr("clip-path",`url(#gridRectBarMask${R.globals.cuid})`);const b=R.config.forecastDataPoints;b.count>0&&a>=R.globals.dataPoints-b.count&&(d.node.setAttribute("stroke-dasharray",b.dashArray),d.node.setAttribute("stroke-width",b.strokeWidth),d.node.setAttribute("fill-opacity",b.fillOpacity)),void 0!==c&&void 0!==u&&(d.attr("data-range-y1",c),d.attr("data-range-y2",u));new v(this.w).setSelectionFilter(d,t,a),h.add(d),d.attr({cy:F.dataLabelsPos.bcy,cx:F.dataLabelsPos.bcx,j:a,val:R.seriesData.series[i][a],barHeight:f,barWidth:m}),null!==F.dataLabels&&I.add(F.dataLabels),F.totalDataLabels&&I.add(F.totalDataLabels),h.add(I),P&&h.add(P),W&&h.add(W)}return h}drawBarPaths({indexes:t,barHeight:e,strokeWidth:s,zeroW:a,x:i,y:r,yDivision:o,elSeries:n}){const l=this.w,h=t.i,d=t.j;let b;if(l.axisFlags.isXNumeric)b=(r=(l.seriesData.seriesX[h][d]-l.globals.minX)/this.invertedXRatio-e)+e*this.visibleI;else if(l.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:t,zeroEncounters:s}=this.barHelpers.getZeroValueEncounters({i:h,j:d});t>0&&(e=this.seriesLen*e/t),b=r+e*this.visibleI,b-=e*s}else b=r+e*this.visibleI;const c=this.isFunnel&&"trapezoid"===l.config.plotOptions.funnel.shape,g=this.isPyramid&&this.pyramidLayout?this.pyramidLayout[d]:null,u=!!g;if(g)b=g.y,e=g.height;else if(this.isFunnel&&!c){const t=null!=a?a:0;a=t-(this.barHelpers.getXForValue(this.series[h][d],t)-t)/2}let x;return i=this.barHelpers.getXForValue(this.series[h][d],null!=a?a:0),x=g?this.barHelpers.getPyramidPaths({barYPosition:b,barHeight:e,topHalf:g.topHalf,bottomHalf:g.bottomHalf,realIndex:t.realIndex,j:d,strokeWidth:s,w:l}):c?this.barHelpers.getFunnelTrapezoidPaths({barYPosition:b,barHeight:e,series:this.series,i:h,j:d,realIndex:t.realIndex,strokeWidth:s,w:l}):this.barHelpers.getBarpaths({barYPosition:b,barHeight:e,x1:a,x2:i,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:t.realIndex,i:h,j:d,w:l}),(c||u)&&(a=x.x1,i=x.x),l.axisFlags.isXNumeric||u||(r+=o),u&&(r=b),this.barHelpers.barBackground({j:d,i:h,y1:b-e*this.visibleI,y2:e*this.seriesLen,elSeries:n}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x1:a,x:i,y:r,goalX:this.barHelpers.getGoalValues("x",a,null,h,d,0),barYPosition:b,barHeight:e}}drawColumnPaths({indexes:t,x:e,y:s,xDivision:a,barWidth:i,zeroH:r,strokeWidth:o,elSeries:n}){const l=this.w,h=t.realIndex,d=t.translationsIndex,b=t.i,c=t.j,g=t.bc;let u;if(l.axisFlags.isXNumeric){const t=this.getBarXForNumericXAxis({x:e,j:c,realIndex:h,barWidth:i});e=t.x,u=t.barXPosition}else if(l.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:t,zeroEncounters:s}=this.barHelpers.getZeroValueEncounters({i:b,j:c});t>0&&(i=this.seriesLen*i/t),u=e+i*this.visibleI,u-=i*s}else u=e+i*this.visibleI;s=this.barHelpers.getYForValue(this.series[b][c],r,d);const x=this.barHelpers.getColumnPaths({barXPosition:u,barWidth:i,y1:r,y2:s,strokeWidth:o,isReversed:this.isReversed,series:this.series,realIndex:h,i:b,j:c,w:l});return l.axisFlags.isXNumeric||(e+=a),this.barHelpers.barBackground({bc:g,j:c,i:b,x1:u-o/2-i*this.visibleI,x2:i*this.seriesLen+o/2,elSeries:n}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x:e,y:s,goalY:this.barHelpers.getGoalValues("y",null,r,b,c,d),barXPosition:u,barWidth:i}}getBarXForNumericXAxis({x:t,barWidth:e,realIndex:s,j:a}){const i=this.w;let r=s;return i.seriesData.seriesX[s].length||(r=i.globals.maxValsInArrayIndex),m.isNumber(i.seriesData.seriesX[r][a])&&(t=(i.seriesData.seriesX[r][a]-i.globals.minX)/this.xRatio-e*this.seriesLen/2),{barXPosition:t+e*this.visibleI,x:t}}getPreviousPath(t,e,s){const a=this.w;let i=null;for(let s=0;s<a.globals.previousPaths.length;s++){const r=a.globals.previousPaths[s];r.paths&&r.paths.length>0&&parseInt(r.realIndex,10)===parseInt(String(t),10)&&void 0!==r.paths[e]&&(i=r.paths[e].d)}return i&&w.pathCommandCount(i)===w.pathCommandCount(s)?i:s}static pathCommandCount(t){if(!t)return 0;const e=t.match(/[A-Za-z]/g);return e?e.length:0}}const I=t=>{const e=function(t){const e=[];let s=t[0],a=t[1],i=e[0]=W(s,a),r=1;for(let o=t.length-1;r<o;r++)s=a,a=t[r+1],e[r]=.5*(i+(i=W(s,a)));return e[r]=i,e}(t),s=t.length-1,a=[];let i,r,o,n;for(let a=0;a<s;a++)o=W(t[a],t[a+1]),Math.abs(o)<1e-6?e[a]=e[a+1]=0:(i=e[a]/o,r=e[a+1]/o,n=i*i+r*r,n>9&&(n=3*o/Math.sqrt(n),e[a]=n*i,e[a+1]=n*r));for(let i=0;i<=s;i++)n=(t[Math.min(s,i+1)][0]-t[Math.max(0,i-1)][0])/(6*(1+e[i]*e[i])),a.push([n||0,e[i]*n||0]);return a},P={points(t){const e=I(t),s=t[1],a=t[0],i=[],r=e[1],o=e[0];i.push(a,[a[0]+o[0],a[1]+o[1],s[0]-r[0],s[1]-r[1],s[0],s[1]]);for(let s=2,a=e.length;s<a;s++){const a=t[s],r=e[s];i.push([a[0]-r[0],a[1]-r[1],a[0],a[1]])}return i},slice(t,e,s){const a=t.slice(e,s);if(e){if(s-e>1&&a[1].length<6){const t=a[0].length;a[1]=[2*a[0][t-2]-a[0][t-4],2*a[0][t-1]-a[0][t-3]].concat(a[1])}a[0]=a[0].slice(-2)}return a}};function W(t,e){return(e[1]-t[1])/(e[0]-t[0])}function L({graphics:t,w:e,elSeries:s,pointsByCat:a,options:i,distributed:r,realIndex:o,wrapClass:n,pointClass:l}){if(!i||!1===i.show||!a.length)return;const h=null!=i.opacity?i.opacity:.9,d=null!=i.strokeColor?i.strokeColor:"#fff",b=null!=i.strokeWidth?i.strokeWidth:1,c=e.config.chart.animations.enabled&&!e.globals.resized&&!e.globals.dataChanged,g=t.group({class:c?`${n} apexcharts-element-hidden`:n});c&&e.globals.delayedElements.push({el:g.node}),a.forEach(({groups:s,j:a})=>{const n=r?e.globals.colors[a]:e.globals.colors[o],c=i.fillColor,u="series"===c?n:"series-dark"===c?H(n,.45):c||H(n,.45);s.forEach(s=>{const i=t.drawPath({d:s.d,fill:null!=s.fill?s.fill:u,stroke:b>0?d:"none",strokeWidth:b,fillOpacity:h,classes:l});i.attr("data:realIndex",o),i.attr("j",a),i.attr("clip-path",`url(#gridRectBarMask${e.globals.cuid})`),i.node.style.pointerEvents="none",g.add(i)})}),s.add(g)}function H(t,e){const s=m.parseHex(t);if(!s)return t;const a=Math.max(0,1-e);return`rgb(${Math.round(s[0]*a)},${Math.round(s[1]*a)},${Math.round(s[2]*a)})`}function k(t,e){if(!t.length)return"#000";if(1===t.length)return t[0];const s=Math.max(0,Math.min(1,e))*(t.length-1),a=Math.floor(s),i=s-a,r=m.parseHex(t[a])||[0,0,0],o=m.parseHex(t[Math.min(a+1,t.length-1)])||r,n=(t,e)=>Math.round(t+(e-t)*i);return`rgb(${n(r[0],o[0])},${n(r[1],o[1])},${n(r[2],o[2])})`}function D(t){let e=(2654435769^t)>>>0;return e=Math.imul(e^e>>>16,73244475),e=Math.imul(e^e>>>16,73244475),((e^e>>>16)>>>0)/4294967296}function R(t,e,s){return`M ${t-s} ${e} a ${s} ${s} 0 1 0 ${2*s} 0 a ${s} ${s} 0 1 0 ${-2*s} 0 `}function O(t,e,s){return`M ${t-s} ${e-s} h ${2*s} v ${2*s} h ${-2*s} z `}function A(t){const e=[];for(let s=0;s<t.length;s+=2)e.push(t[s+1],t[s]);return e}h.use({violin:class extends w{draw(t,e,s){const a=this.w,i=new g(this.w),r=new f(this.w);this.violinOptions=a.config.plotOptions.violin,this.pointsOptions=this.violinOptions.points,this.bandwidthScale=this.violinOptions.bandwidthScale||1,this.normalize=this.violinOptions.normalize||"individual",this.distributed=a.config.plotOptions.bar.distributed,this.isHorizontal=a.config.plotOptions.bar.horizontal,this.coreUtils=new c(this.w),t=this.coreUtils.getLogSeries(t),this.series=t,this.yRatio=this.coreUtils.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);const o=i.group({class:"apexcharts-violin-series apexcharts-plot-series"});for(let e=0;e<t.length;e++){let n,l;const h=[],d=[],b=a.globals.comboCharts?s[e]:e,{columnGroupIndex:c}=this.barHelpers.getGroupIndex(b),g=i.group({class:"apexcharts-series",seriesName:m.escapeString(a.seriesData.seriesNames[b]),rel:e+1,"data:realIndex":b});p.addCollapsedClassToSeries(this.w,g,b),t[e].length>0&&(this.visibleI=this.visibleI+1);let u=0;this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[b][0],u=b);const x=this.barHelpers.initialPositions(b),{y:f,barHeight:y,yDivision:v,zeroW:C,x:w,barWidth:I,xDivision:P,zeroH:W}=x;l=f,n=w,d.push(n+(null!=I?I:0)/2);const H=i.group({class:"apexcharts-datalabels","data:realIndex":b});if(this.seriesMaxWeight=0,"group"===this.normalize){(a.violinData.seriesViolinDensity[b]||[]).forEach(t=>{t&&t.maxWeight>this.seriesMaxWeight&&(this.seriesMaxWeight=t.maxWeight)})}const k=[];for(let s=0;s<a.globals.dataPoints;s++){const i=this.barHelpers.getStrokeWidth(e,s,b),o=this.isHorizontal?this.drawHorizontalViolin({indexes:{i:e,j:s,realIndex:b,translationsIndex:u},y:l,yDivision:v,barHeight:y,zeroW:C}):this.drawVerticalViolin({indexes:{i:e,j:s,realIndex:b,translationsIndex:u},x:n,xDivision:P,barWidth:I,zeroH:W});n=o.x,l=o.y,s>0&&d.push(o.center),h.push(o.alongRepresentative);const x=this.buildPointsSubPath({realIndex:b,j:s,center:o.center,halfExtent:o.halfExtent,alongFn:o.alongFn,density:o.density,maxWeight:o.maxWeight});x.length&&k.push({groups:x,j:s});const p=r.fillPath({seriesNumber:this.distributed?s:b,dataPointIndex:s,color:this.distributed?a.globals.colors[s]:void 0,value:t[e][s]});this.renderSeries({realIndex:b,pathFill:p,lineFill:a.globals.stroke.colors[b],j:s,i:e,pathFrom:o.pathFrom,pathTo:o.pathTo,strokeWidth:i,elSeries:g,x:n,y:l,series:t,columnGroupIndex:c,barHeight:y,barWidth:I,elDataLabelsWrap:H,visibleSeries:this.visibleI,type:"violin"});const f=g.node.querySelector(`path.apexcharts-violin-area[j='${s}']`);f&&isFinite(o.alongRepresentative)&&f.setAttribute(this.isHorizontal?"cx":"cy",`${o.alongRepresentative}`)}L({graphics:i,w:a,elSeries:g,pointsByCat:k,options:this.pointsOptions,distributed:this.distributed,realIndex:b,wrapClass:"apexcharts-violin-points-wrap",pointClass:"apexcharts-violin-points"}),a.globals.seriesXvalues[b]=d,a.globals.seriesYvalues[b]=h,o.add(g)}return o}drawVerticalViolin({indexes:t,x:e,xDivision:s,barWidth:a,zeroH:i}){var r;const o=this.w,{realIndex:n,j:l,translationsIndex:h}=t,d=this.yRatio[h];o.axisFlags.isXNumeric&&(e=(o.seriesData.seriesX[n][l]-o.globals.minX)/this.xRatio-a/2);const b=e+a*this.visibleI+a/2,c=a/2,g=this.getDensity(n,l),u=this.effectiveMaxWeight(g),x=t=>i-this.logVal(t,n)/d,p=this.buildBodyPath({nodes:g.nodes,center:b,halfExtent:c,maxWeight:u,vertical:!0,alongFn:x,collapsed:!1});let f;return f=o.globals.previousPaths.length>0?this.getPreviousPath(n,l,p):this.buildBodyPath({nodes:g.nodes,center:b,halfExtent:c,maxWeight:u,vertical:!0,alongFn:x,collapsed:!0}),o.axisFlags.isXNumeric||(e+=s),{pathTo:p,pathFrom:f,x:e,y:i,center:b,halfExtent:c,alongFn:x,density:g,maxWeight:u,alongRepresentative:x(null!=(r=this.series[t.i][l])?r:0)}}drawHorizontalViolin({indexes:t,y:e,yDivision:s,barHeight:a,zeroW:i}){var r;const o=this.w,{realIndex:n,j:l}=t,h=this.invertedYRatio;o.axisFlags.isXNumeric&&(e=(o.seriesData.seriesX[n][l]-o.globals.minX)/this.invertedXRatio-a/2);const d=e+a*this.visibleI+a/2,b=a/2,c=this.getDensity(n,l),g=this.effectiveMaxWeight(c),u=t=>i+this.logVal(t,n)/h,x=this.buildBodyPath({nodes:c.nodes,center:d,halfExtent:b,maxWeight:g,vertical:!1,alongFn:u,collapsed:!1});let p;return p=o.globals.previousPaths.length>0?this.getPreviousPath(n,l,x):this.buildBodyPath({nodes:c.nodes,center:d,halfExtent:b,maxWeight:g,vertical:!1,alongFn:u,collapsed:!0}),o.axisFlags.isXNumeric||(e+=s),{pathTo:x,pathFrom:p,x:i,y:e,center:d,halfExtent:b,alongFn:u,maxWeight:g,density:c,alongRepresentative:u(null!=(r=this.series[t.i][l])?r:0)}}getDensity(t,e){var s;const a=null==(s=this.w.violinData.seriesViolinDensity[t])?void 0:s[e];if(!a||!a.values.length)return{nodes:[],maxWeight:0};const i=a.values.map((t,e)=>e);i.sort((t,e)=>a.values[t]-a.values[e]);const r=[];let o=null;for(const t of i){const e=a.values[t];null!==o&&e===o||(r.push({v:e,w:a.weights[t]}),o=e)}return{nodes:r,maxWeight:a.maxWeight}}effectiveMaxWeight(t){return"group"===this.normalize&&this.seriesMaxWeight>0?this.seriesMaxWeight:t.maxWeight}buildBodyPath({nodes:t,center:e,halfExtent:s,maxWeight:a,vertical:i,alongFn:r,collapsed:o}){const n=new g(this.w);if(0===t.length){const t=r(0);return i?n.move(e,t)+n.line(e,t):n.move(t,e)+n.line(t,e)}const l=t=>{if(o||a<=0)return 0;const e=t/a*s*this.bandwidthScale;return Math.min(s,Math.max(0,e))},h=[],d=[];for(let s=0;s<t.length;s++){const a=r(t[s].v),o=l(t[s].w);i?(h.push([e+o,a]),d.push([e-o,a])):(h.push([a,e+o]),d.push([a,e-o]))}return d.reverse(),this.smoothSegment(h,i,!1)+this.smoothSegment(d,i,!0)+"z"}smoothSegment(t,e,s){const a=new g(this.w),i=t[0];let r=s?a.line(i[0],i[1]):a.move(i[0],i[1]);if(t.length<3||!this.strictlyMonotonic(t,e)){for(let e=1;e<t.length;e++)r+=a.line(t[e][0],t[e][1]);return r}const o=t.map(([t,s])=>e?[s,t]:[t,s]),n=P.points(o);return r+=(t=>{let e="";for(let s=0;s<t.length;s++){const a=t[s],i=a.length;i>4?(e+=`C${a[0]}, ${a[1]}`,e+=`, ${a[2]}, ${a[3]}`,e+=`, ${a[4]}, ${a[5]}`):i>2&&(e+=`S${a[0]}, ${a[1]}`,e+=`, ${a[2]}, ${a[3]}`)}return e})(e?n.map(A):n),r}strictlyMonotonic(t,e){const s=e?1:0;for(let e=1;e<t.length;e++)if(t[e][s]===t[e-1][s])return!1;return!0}buildPointsSubPath({realIndex:t,j:e,center:s,halfExtent:a,alongFn:i,density:r,maxWeight:o}){var n;return function({w:t,points:e,seedA:s,seedB:a,center:i,halfExtent:r,alongFn:o,isHorizontal:n,options:l,clampAt:h}){const d=l;if(!d||!1===d.show)return[];if(!e||!e.length)return[];const b=d.maxPoints||3e3,c=e.length>b?Math.ceil(e.length/b):1,g=null!=d.size?d.size:2.5,u=r*(null!=d.jitter?d.jitter:.5),x=!1!==d.constrainToViolin&&"function"==typeof h,p="square"===d.shape,f=d.colorScale,m=f&&Array.isArray(f.colors)&&f.colors.length>0,y=m?Math.max(2,f.steps||24):1,v=m&&null!=f.min?f.min:t.globals.minY,C=(m&&null!=f.max?f.max:t.globals.maxY)-v||1,w=m?new Array(y).fill(""):[""];for(let t=0;t<e.length;t+=c){const r=e[t],l=o(r);let d=2*(D(7919*s+100003*a+t)-.5)*u;if(x){const t=h(r);d>t&&(d=t),d<-t&&(d=-t)}const b=n?l:i+d,c=n?i+d:l,f=p?O(b,c,g):R(b,c,g);if(m){let t=(r-v)/C;t<0&&(t=0),t>1&&(t=1),w[Math.round(t*(y-1))]+=f}else w[0]+=f}if(!m)return w[0]?[{fill:null,d:w[0]}]:[];const I=[];for(let t=0;t<y;t++)w[t]&&I.push({fill:k(f.colors,t/(y-1)),d:w[t]});return I}({w:this.w,points:null==(n=this.w.violinData.seriesViolinPoints[t])?void 0:n[e],seedA:t,seedB:e,center:s,halfExtent:a,alongFn:i,isHorizontal:this.isHorizontal,options:this.pointsOptions,clampAt:t=>this.halfWidthAtValue(t,r,a,o)})}halfWidthAtValue(t,e,s,a){const{nodes:i}=e,r=null!=a?a:e.maxWeight;if(!i.length||r<=0)return 0;const o=t=>Math.min(s,t/r*s*this.bandwidthScale);if(t<=i[0].v)return o(i[0].w);if(t>=i[i.length-1].v)return o(i[i.length-1].w);for(let e=1;e<i.length;e++)if(t<=i[e].v){const s=i[e-1],a=i[e],r=a.v===s.v?0:(t-s.v)/(a.v-s.v);return o(s.w+(a.w-s.w)*r)}return 0}logVal(t,e){return this.coreUtils.getLogValAtSeriesIndex(t,e)}}}),exports.default=h;