apexcharts
Version:
A JavaScript Chart Library
6 lines (5 loc) • 8.51 kB
JavaScript
/*!
* ApexCharts v5.10.6
* (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 o in t)if("default"!==o){const a=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(e,o,a.get?a:{enumerable:!0,get:()=>t[o]})}return e.default=t,Object.freeze(e)}const o=e(t);function a(t,e){let o=0;for(let e=0;e<t.length;e++)o+=t[e];const a=e/o,s=new Array(t.length);for(let e=0;e<t.length;e++)s[e]=t[e]*a;return s}function s(t,e,o,a){const s=a*a,n=o*o;return Math.max(s*e/n,n/(s*t))}function n(t,e,o,a,n,r){if(0===t)return!0;return s(e,o,a,r)>=s(Math.min(e,n),Math.max(o,n),a+n,r)}function r(t,e,o,a,s,n,r,i){if(r>=i){const r=a/i;let l=n;for(let a=0;a<o;a++){const o=e[a]/r;t.push([s,l,s+r,l+o]),l+=o}}else{const i=a/r;let l=s;for(let a=0;a<o;a++){const o=e[a]/i;t.push([l,n,l+o,n+i]),l+=o}}}function i(t,e,o,a,s){const i=[],l=t.length;if(0===l)return i;const c=new Array(l);let h=0,f=0,g=1/0,d=-1/0,p=0;for(;p<l;){const l=Math.min(a,s),m=t[p];if(n(h,g,d,f,m,l))c[h]=m,h++,f+=m,m<g&&(g=m),m>d&&(d=m),p++;else{if(r(i,c,h,f,e,o,a,s),a>=s){const t=f/s;e+=t,a-=t}else{const t=f/a;o+=t,s-=t}h=0,f=0,g=1/0,d=-1/0}}return h>0&&r(i,c,h,f,e,o,a,s),i}const l={generate:function(t,e,o){const s=t.length,n=new Array(s);for(let e=0;e<s;e++){let o=0;const a=t[e];for(let t=0;t<a.length;t++)o+=a[t];n[e]=o}const r=i(a(n,e*o),0,0,e,o),l=new Array(s);for(let e=0;e<s;e++){const o=r[e],s=o[0],n=o[1],c=o[2]-s,h=o[3]-n;l[e]=i(a(t[e],c*h),s,n,c,h)}return l}},c=o.__apex_Graphics,h=o.__apex_Animations,f=o.__apex_Fill,g=o.__apex_Utils,d=o.__apex_DataLabels;class p{constructor(t,e){this.ctx=e,this.w=t}checkColorRange(){const t=this.w;let e=!1;const o=t.config.plotOptions[t.config.chart.type];return o.colorScale.ranges.length>0&&o.colorScale.ranges.map(t=>{t.from<=0&&(e=!0)}),e}getShadeColor(t,e,o,a){const s=this.w;let n=1;const r=s.config.plotOptions[t].shadeIntensity,i=this.determineColor(t,e,o);s.globals.hasNegs||a?n=s.config.plotOptions[t].reverseNegativeShade?i.percent<0?i.percent/100*(1.25*r):(1-i.percent/100)*(1.25*r):i.percent<=0?1-(1+i.percent/100)*r:(1-i.percent/100)*r:(n=1-i.percent/100,"treemap"===t&&(n=(1-i.percent/100)*(1.25*r)));let l=i.color;const c=new g;if(s.config.plotOptions[t].enableShades)if("dark"===this.w.config.theme.mode){const t=c.shadeColor(-1*n,i.color);l=g.hexToRgba(g.isColorHex(t)?t:g.rgb2hex(t),s.config.fill.opacity)}else{const t=c.shadeColor(n,i.color);l=g.hexToRgba(g.isColorHex(t)?t:g.rgb2hex(t),s.config.fill.opacity)}return{color:l,colorProps:i}}determineColor(t,e,o){const a=this.w,s=a.seriesData.series[e][o],n=a.config.plotOptions[t];let r=n.colorScale.inverse?o:e;n.distributed&&"treemap"===a.config.chart.type&&(r=o);let i=a.globals.colors[r],l=null,c=Math.min(...a.seriesData.series[e]),h=Math.max(...a.seriesData.series[e]);n.distributed||"heatmap"!==t||(c=a.globals.minY,h=a.globals.maxY),void 0!==n.colorScale.min&&(c=n.colorScale.min<a.globals.minY?n.colorScale.min:a.globals.minY,h=n.colorScale.max>a.globals.maxY?n.colorScale.max:a.globals.maxY);const f=Math.abs(h)+Math.abs(c);let g=100*s/(0===f?f-1e-6:f);if(n.colorScale.ranges.length>0){n.colorScale.ranges.map(t=>{if(s>=t.from&&s<=t.to){i=t.color,l=t.foreColor?t.foreColor:null,c=t.from,h=t.to;const e=Math.abs(h)+Math.abs(c);g=100*s/(0===e?e-1e-6:e)}})}return{color:i,foreColor:l,percent:g}}calculateDataLabels({text:t,x:e,y:o,i:a,j:s,colorProps:n,fontSize:r}){const i=this.w.config.dataLabels,l=new c(this.w),h=new d(this.w,this.ctx);let f=null;if(i.enabled){f=l.group({class:"apexcharts-data-labels"});const c=i.offsetX,g=i.offsetY,d=e+c,p=o+parseFloat(i.style.fontSize)/3+g;h.plotDataLabelsText({x:d,y:p,text:t,i:a,j:s,color:n.foreColor,parent:f,fontSize:r,dataLabelsConfig:i})}return f}}const m=o.__apex_Filters;t.use({treemap:class{constructor(t,e){this.ctx=e,this.w=t,this.strokeWidth=this.w.config.stroke.width,this.helpers=new p(t,e),this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.labels=[]}draw(t){const e=this.w,o=new c(this.w,this.ctx),a=new f(this.w),s=o.group({class:"apexcharts-treemap"});if(e.globals.noData)return s;const n=[];t.forEach(t=>{const e=t.map(t=>Math.abs(t));n.push(e)}),this.negRange=this.helpers.checkColorRange(),e.config.series.forEach((t,e)=>{t.data.forEach(t=>{Array.isArray(this.labels[e])||(this.labels[e]=[]),this.labels[e].push(t.x)})});return l.generate(n,e.layout.gridWidth,e.layout.gridHeight).forEach((n,r)=>{var i;const l=o.group({class:"apexcharts-series apexcharts-treemap-series",seriesName:g.escapeString(e.seriesData.seriesNames[r]),rel:r+1,"data:realIndex":r});if(o.setupEventDelegation(l,".apexcharts-treemap-rect"),e.config.chart.dropShadow.enabled){const t=e.config.chart.dropShadow;new m(this.w).dropShadow(s,t,r)}const c=o.group({class:"apexcharts-data-labels"}),h={xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0};n.forEach((s,n)=>{const i=s[0],c=s[1],f=s[2],g=s[3];h.xMin=Math.min(h.xMin,i),h.yMin=Math.min(h.yMin,c),h.xMax=Math.max(h.xMax,f),h.yMax=Math.max(h.yMax,g);const d=this.helpers.getShadeColor(e.config.chart.type,r,n,this.negRange),p=d.color,m=a.fillPath({color:p,seriesNumber:r,dataPointIndex:n}),u=o.drawRect(i,c,f-i,g-c,e.config.plotOptions.treemap.borderRadius,"#fff",1,this.strokeWidth,e.config.plotOptions.treemap.useFillColorAsStroke?p:e.globals.stroke.colors[r]);u.attr({cx:i,cy:c,index:r,i:r,j:n,width:f-i,height:g-c,fill:m}),u.node.classList.add("apexcharts-treemap-rect");let b={x:i+(f-i)/2,y:c+(g-c)/2,width:0,height:0};const x={x:i,y:c,width:f-i,height:g-c};if(e.config.chart.animations.enabled&&!e.globals.dataChanged){let t=1;e.globals.resized||(t=e.config.chart.animations.speed),this.animateTreemap(u,b,x,t)}if(e.globals.dataChanged){let t=1;this.dynamicAnim.enabled&&e.globals.shouldAnimate&&(t=this.dynamicAnim.speed,e.globals.previousPaths[r]&&e.globals.previousPaths[r][n]&&e.globals.previousPaths[r][n].rect&&(b=e.globals.previousPaths[r][n].rect),this.animateTreemap(u,b,x,t))}let w=this.getFontSize(s),y=e.config.dataLabels.formatter(this.labels[r][n],{value:e.seriesData.series[r][n],seriesIndex:r,dataPointIndex:n,w:e});"truncate"===e.config.plotOptions.treemap.dataLabels.format&&(w=parseInt(String(e.config.dataLabels.style.fontSize),10),y=this.truncateLabels(String(y),w,i,c,f,g));let S=null;e.seriesData.series[r][n]&&(S=this.helpers.calculateDataLabels({text:y,x:(i+f)/2,y:(c+g)/2+this.strokeWidth/2+w/3,i:r,j:n,colorProps:d,fontSize:w,series:t})),e.config.dataLabels.enabled&&S&&this.rotateToFitLabel(S,w,y,i,c,f,g),l.add(u),null!==S&&l.add(S)});const f=e.config.plotOptions.treemap.seriesTitle;if(e.config.series.length>1&&f&&f.show){const t=e.config.series[r].name||"";if(t&&h.xMin<1/0&&h.yMin<1/0){const{offsetX:a,offsetY:s,borderColor:n,borderWidth:r,borderRadius:c,style:g}=f,d=g.color||e.config.chart.foreColor,p={left:g.padding.left,right:g.padding.right,top:g.padding.top,bottom:g.padding.bottom},m=o.getTextRects(t,g.fontSize,g.fontFamily),u=m.width+p.left+p.right,b=m.height+p.top+p.bottom,x=h.xMin+(a||0),w=h.yMin+(s||0),y=o.drawRect(x,w,u,b,c,g.background,1,r,n),S=o.drawText({x:x+p.left,y:w+p.top+.75*(null!=(i=null==m?void 0:m.height)?i:0),text:t,fontSize:g.fontSize,fontFamily:g.fontFamily,fontWeight:g.fontWeight,foreColor:d,cssClass:g.cssClass||""});l.add(y),l.add(S)}}l.add(c),s.add(l)}),s}getFontSize(t){const e=this.w;const o=function t(e){let o,a=0;if(Array.isArray(e[0]))for(o=0;o<e.length;o++)a+=t(e[o]);else for(o=0;o<e.length;o++)a+=e[o].length;return a}(this.labels)/function t(e){let o,a=0;if(Array.isArray(e[0]))for(o=0;o<e.length;o++)a+=t(e[o]);else for(o=0;o<e.length;o++)a+=1;return a}(this.labels);return function(t,a){const s=t*a,n=Math.pow(s,.5);return Math.min(n/o,parseInt(e.config.dataLabels.style.fontSize,10))}(t[2]-t[0],t[3]-t[1])}rotateToFitLabel(t,e,o,a,s,n,r){const i=new c(this.w),l=i.getTextRects(o,String(e));if(l.width+this.w.config.stroke.width+5>n-a&&l.width<=r-s){const e=i.rotateAroundCenter(t.node);t.node.setAttribute("transform",`rotate(-90 ${e.x} ${e.y}) translate(${l.height/3})`)}}truncateLabels(t,e,o,a,s,n){const r=new c(this.w),i=r.getTextRects(t,String(e)).width+this.w.config.stroke.width+5>s-o&&n-a>s-o?n-a:s-o,l=r.getTextBasedOnMaxWidth({text:t,maxWidth:i,fontSize:e});return t.length!==l.length&&i/e<5?"":l}animateTreemap(t,e,o,a){const s=new h(this.w);s.animateRect(t,e,o,a,()=>{s.animationCompleted(t)})}}}),exports.default=t;