UNPKG

apexcharts

Version:

A JavaScript Chart Library

6 lines (5 loc) 10.6 kB
/*! * ApexCharts v5.10.6 * (c) 2018-2026 ApexCharts */ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("apexcharts/core");function t(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const a in e)if("default"!==a){const n=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,n.get?n:{enumerable:!0,get:()=>e[a]})}return t.default=e,Object.freeze(t)}const a=t(e),n=a.__apex_axes_AxesUtils,s=a.__apex_Data,r=a.__apex_Series,o=a.__apex_Utils,i=a.__apex_Environment_Environment;e.registerFeatures({exports:class{constructor(e,t){this.w=e,this.ctx=t}svgStringToNode(e){return(new DOMParser).parseFromString(e,"image/svg+xml").documentElement}scaleSvgNode(e,t){const a=parseFloat(e.getAttributeNS(null,"width")),n=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",a*t),e.setAttributeNS(null,"height",n*t),e.setAttributeNS(null,"viewBox","0 0 "+a+" "+n)}getSvgString(e){return new Promise(t=>{const a=this.w;let n=e||a.config.chart.toolbar.export.scale||a.config.chart.toolbar.export.width/a.globals.svgWidth;n||(n=1);const s=a.globals.svgWidth*n,r=a.globals.svgHeight*n,o=a.dom.elWrap.cloneNode(!0);o.style.width=s+"px",o.style.height=r+"px";const i=(new XMLSerializer).serializeToString(o);let l="\n .apexcharts-tooltip, .apexcharts-toolbar, .apexcharts-xaxistooltip, .apexcharts-yaxistooltip, .apexcharts-xcrosshairs, .apexcharts-ycrosshairs, .apexcharts-zoom-rect, .apexcharts-selection-rect {\n display: none;\n }\n ";a.config.legend.show&&a.dom.elLegendWrap&&a.dom.elLegendWrap.children.length>0&&(l+=".apexcharts-flip-y {\n transform: scaleY(-1) translateY(-100%);\n transform-origin: top;\n transform-box: fill-box;\n}\n.apexcharts-flip-x {\n transform: scaleX(-1);\n transform-origin: center;\n transform-box: fill-box;\n}\n.apexcharts-legend {\n display: flex;\n overflow: auto;\n padding: 0 10px;\n}\n.apexcharts-legend.apexcharts-legend-group-horizontal {\n flex-direction: column;\n}\n.apexcharts-legend-group {\n display: flex;\n}\n.apexcharts-legend-group-vertical {\n flex-direction: column-reverse;\n}\n.apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\n flex-wrap: wrap\n}\n.apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\n flex-direction: column;\n bottom: 0;\n}\n.apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\n justify-content: flex-start;\n align-items: flex-start;\n}\n.apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\n justify-content: center;\n align-items: center;\n}\n.apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\n justify-content: flex-end;\n align-items: flex-end;\n}\n.apexcharts-legend-series {\n cursor: pointer;\n line-height: normal;\n display: flex;\n align-items: center;\n}\n.apexcharts-legend-text {\n position: relative;\n font-size: 14px;\n}\n.apexcharts-legend-text *, .apexcharts-legend-marker * {\n pointer-events: none;\n}\n.apexcharts-legend-marker {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n margin-right: 1px;\n}\n\n.apexcharts-legend-series.apexcharts-no-click {\n cursor: auto;\n}\n.apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n display: none !important;\n}\n.apexcharts-inactive-legend {\n opacity: 0.45;\n} ");let c=`\n <svg xmlns="http://www.w3.org/2000/svg"\n version="1.1"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n class="apexcharts-svg"\n xmlns:data="ApexChartsNS"\n transform="translate(0, 0)"\n width="${a.globals.svgWidth}px" height="${a.globals.svgHeight}px">\n <foreignObject width="100%" height="100%">\n <div xmlns="http://www.w3.org/1999/xhtml" style="width:${s}px; height:${r}px;">\n <style type="text/css">\n ${l}\n </style>\n ${i}\n </div>\n </foreignObject>\n </svg>\n `;const g=this.svgStringToNode(c);1!==n&&this.scaleSvgNode(g,n),this.convertImagesToBase64(g).then(()=>{c=(new XMLSerializer).serializeToString(g),t(c.replace(/&nbsp;/g,"&#160;"))})})}convertImagesToBase64(e){const t=e.getElementsByTagName("image"),a=Array.from(t).map(e=>{const t=e.getAttributeNS("http://www.w3.org/1999/xlink","href");return t&&!t.startsWith("data:")?this.getBase64FromUrl(t).then(t=>{e.setAttributeNS("http://www.w3.org/1999/xlink","href",t)}).catch(e=>{}):Promise.resolve()});return Promise.all(a)}getBase64FromUrl(e){return i.isSSR()?Promise.resolve(e):new Promise((t,a)=>{const n=new Image;n.crossOrigin="Anonymous",n.onload=()=>{const e=document.createElement("canvas");e.width=n.width,e.height=n.height;const a=e.getContext("2d");a&&a.drawImage(n,0,0),t(e.toDataURL())},n.onerror=a,n.src=e})}svgUrl(){return new Promise(e=>{this.getSvgString().then(t=>{const a=new Blob([t],{type:"image/svg+xml;charset=utf-8"});e(URL.createObjectURL(a))})})}dataURI(e){return i.isSSR()?Promise.resolve({imgURI:""}):new Promise(t=>{const a=this.w,n=e?e.scale||e.width/a.globals.svgWidth:1,s=document.createElement("canvas");s.width=a.globals.svgWidth*n,s.height=parseInt(a.dom.elWrap.style.height,10)*n;const r="transparent"!==a.config.chart.background&&a.config.chart.background?a.config.chart.background:"#fff",o=s.getContext("2d");o&&(o.fillStyle=r,o.fillRect(0,0,s.width*n,s.height*n),this.getSvgString(n).then(e=>{const a="data:image/svg+xml,"+encodeURIComponent(e),n=new Image;n.crossOrigin="anonymous",n.onload=()=>{o.drawImage(n,0,0);const e=s;if(e.msToBlob){const a=e.msToBlob();t({blob:a})}else{const e=s.toDataURL("image/png");t({imgURI:e})}},n.src=a}))})}exportToSVG(){this.svgUrl().then(e=>{this.triggerDownload(e,this.w.config.chart.toolbar.export.svg.filename,".svg")})}exportToPng(){const e=this.w.config.chart.toolbar.export.scale,t=this.w.config.chart.toolbar.export.width,a=e?{scale:e}:t?{width:t}:void 0;this.dataURI(a).then(({imgURI:e,blob:t})=>{t?navigator.msSaveOrOpenBlob(t,this.w.globals.chartID+".png"):this.triggerDownload(e,this.w.config.chart.toolbar.export.png.filename,".png")})}exportToCSV({series:e,fileName:t,columnDelimiter:a=",",lineDelimiter:i="\n"}){const l=this.w;e||(e=l.config.series);let c=[];const g=[];let h="";const p=l.seriesData.series.map((e,t)=>-1===l.globals.collapsedSeriesIndices.indexOf(t)?e:[]),d=e=>"function"==typeof l.config.chart.toolbar.export.csv.categoryFormatter?l.config.chart.toolbar.export.csv.categoryFormatter(e):"datetime"===l.config.xaxis.type&&String(e).length>=10?new Date(e).toDateString():o.isNumber(e)?e:e.split(a).join(""),x=e=>"function"==typeof l.config.chart.toolbar.export.csv.valueFormatter?l.config.chart.toolbar.export.csv.valueFormatter(e):e,m=Math.max(...e.map(e=>e.data?e.data.length:0)),u=new s(this.w),f=new n(this.w,{theme:this.ctx.theme,timeScale:this.ctx.timeScale}),b=e=>{let t="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){const a=l.formatters.yLabelFormatters[0],n=new r(this.ctx.w).getActiveConfigSeriesIndex();t=a(l.labelData.labels[e],{seriesIndex:n,dataPointIndex:e,w:l})}else t=f.getLabel(l.labelData.labels,l.labelData.timescaleLabels,0,e).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?t=l.config.xaxis.categories[e]:l.config.labels.length&&(t=l.config.labels[e]))}else t=l.config.labels[e];return null===t?"nullvalue":(Array.isArray(t)&&(t=t.join(" ")),o.isNumber(t)?t:t.split(a).join(""))},w=(t,n)=>{var s;if(c.length&&0===n&&g.push(c.join(a)),t.data){t.data=t.data.length&&t.data||[...Array(m)].map(()=>"");for(let r=0;r<t.data.length;r++){c=[];let o=b(r);if("nullvalue"!==o){if(o||(u.isFormatXY()?o=e[n].data[r].x:u.isFormat2DArray()&&(o=e[n].data[r]?e[n].data[r][0]:"")),0===n){c.push(d(o));for(let t=0;t<l.seriesData.series.length;t++){const a=u.isFormatXY()?null==(s=e[t].data[r])?void 0:s.y:p[t][r];c.push(x(a))}}("candlestick"===l.config.chart.type||t.type&&"candlestick"===t.type)&&(c.pop(),c.push(l.candleData.seriesCandleO[n][r]),c.push(l.candleData.seriesCandleH[n][r]),c.push(l.candleData.seriesCandleL[n][r]),c.push(l.candleData.seriesCandleC[n][r])),("boxPlot"===l.config.chart.type||t.type&&"boxPlot"===t.type)&&(c.pop(),c.push(l.candleData.seriesCandleO[n][r]),c.push(l.candleData.seriesCandleH[n][r]),c.push(l.candleData.seriesCandleM[n][r]),c.push(l.candleData.seriesCandleL[n][r]),c.push(l.candleData.seriesCandleC[n][r])),"rangeBar"===l.config.chart.type&&(c.pop(),c.push(l.rangeData.seriesRangeStart[n][r]),c.push(l.rangeData.seriesRangeEnd[n][r])),c.length&&g.push(c.join(a))}}}};c.push(l.config.chart.toolbar.export.csv.headerCategory),"boxPlot"===l.config.chart.type?(c.push("minimum"),c.push("q1"),c.push("median"),c.push("q3"),c.push("maximum")):"candlestick"===l.config.chart.type?(c.push("open"),c.push("high"),c.push("low"),c.push("close")):"rangeBar"===l.config.chart.type?(c.push("minimum"),c.push("maximum")):e.map((e,t)=>{const n=(e.name?e.name:`series-${t}`)+"";l.globals.axisCharts&&c.push(n.split(a).join("")?n.split(a).join(""):`series-${t}`)}),l.globals.axisCharts||(c.push(l.config.chart.toolbar.export.csv.headerValue),g.push(c.join(a))),l.globals.allSeriesHasEqualX||!l.globals.axisCharts||l.config.xaxis.categories.length||l.config.labels.length?e.map((e,t)=>{l.globals.axisCharts?w(e,t):(c=[],c.push(d(l.labelData.labels[t])),c.push(x(p[t])),g.push(c.join(a)))}):(()=>{const t=new Set,n={};e.forEach((a,s)=>{null==a||a.data.forEach(a=>{let r,o;if(u.isFormatXY())r=a.x,o=a.y;else{if(!u.isFormat2DArray())return;r=a[0],o=a[1]}n[r]||(n[r]=Array(e.length).fill("")),n[r][s]=x(o),t.add(r)})}),c.length&&g.push(c.join(a)),Array.from(t).sort().forEach(e=>{g.push([d(e),n[e].join(a)])})})(),h+=g.join(i),this.triggerDownload("data:text/csv; charset=utf-8,"+encodeURIComponent("\ufeff"+h),t||l.config.chart.toolbar.export.csv.filename,".csv")}triggerDownload(e,t,a){if(i.isSSR())return;const n=document.createElement("a");n.href=e,n.download=(t||this.w.globals.chartID)+a,document.body.appendChild(n),n.click(),document.body.removeChild(n)}}}),exports.default=e;