UNPKG

apexcharts

Version:

A JavaScript Chart Library

6 lines (5 loc) 15 kB
/*! * ApexCharts v7.0.0 * (c) 2018-2026 ApexCharts */ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function e(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const s in e)if("default"!==s){const a=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,a.get?a:{enumerable:!0,get:()=>e[s]})}return t.default=e,Object.freeze(t)}const t=e(require("apexcharts/core")),s=t.__apex_axes_AxesUtils,a=t.__apex_Data,r=t.__apex_Series,o=t.__apex_Utils,i=t.__apex_Environment_Environment,n=t.__apex_BrowserAPIs_BrowserAPIs,l=t.__apex_math_SVGNS;t.default.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 s=parseFloat(e.getAttributeNS(null,"width")),a=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",s*t),e.setAttributeNS(null,"height",a*t),e.setAttributeNS(null,"viewBox","0 0 "+s+" "+a)}inlineCanvasLayers(e){const t=this.w.dom.elWrap.querySelectorAll(".apexcharts-series-canvas");if(!t.length)return;const s=e.querySelectorAll(".apexcharts-canvas-series");for(let e=0;e<t.length&&e<s.length;e++){let a;try{a=t[e].toDataURL()}catch(e){continue}const r=s[e],o=document.createElementNS(l,"image");o.setAttribute("x",r.getAttribute("x")||"0"),o.setAttribute("y",r.getAttribute("y")||"0"),o.setAttribute("width",r.getAttribute("width")||"0"),o.setAttribute("height",r.getAttribute("height")||"0"),o.setAttribute("href",a),o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),r.parentNode&&r.parentNode.replaceChild(o,r)}}queryStyleable(e,t){return Array.prototype.slice.call(e.querySelectorAll(t))}setStyleDefaults(e,t){Object.keys(t).forEach(s=>{""===e.style.getPropertyValue(s)&&e.style.setProperty(s,t[s])})}applyExportStyles(e){const t=this.w;this.queryStyleable(e,"style").forEach(e=>e.remove()),this.queryStyleable(e,[".apexcharts-tooltip",".apexcharts-toolbar",".apexcharts-xaxistooltip",".apexcharts-yaxistooltip",".apexcharts-xcrosshairs",".apexcharts-ycrosshairs",".apexcharts-zoom-rect",".apexcharts-selection-rect"].join(", ")).forEach(e=>{e.style.setProperty("display","none","important")}),this.queryStyleable(e,".apexcharts-flip-y").forEach(e=>{this.setStyleDefaults(e,{transform:"scaleY(-1) translateY(-100%)","transform-origin":"top","transform-box":"fill-box"})}),this.queryStyleable(e,".apexcharts-flip-x").forEach(e=>{this.setStyleDefaults(e,{transform:"scaleX(-1)","transform-origin":"center","transform-box":"fill-box"})}),t.config.legend.show&&t.dom.elLegendWrap&&t.dom.elLegendWrap.children.length&&(this.queryStyleable(e,".apexcharts-legend").forEach(e=>{this.setStyleDefaults(e,{display:"flex",overflow:"auto",padding:"0 10px"});const t=e.classList,s=t.contains("apx-legend-position-left")||t.contains("apx-legend-position-right"),a=t.contains("apx-legend-position-top")||t.contains("apx-legend-position-bottom");t.contains("apexcharts-legend-group-horizontal")&&this.setStyleDefaults(e,{"flex-direction":"column"}),s&&this.setStyleDefaults(e,{"flex-direction":"column",bottom:"0"}),a&&this.setStyleDefaults(e,{"flex-wrap":"wrap"}),s||a&&t.contains("apexcharts-align-left")?this.setStyleDefaults(e,{"justify-content":"flex-start","align-items":"flex-start"}):a&&t.contains("apexcharts-align-center")?this.setStyleDefaults(e,{"justify-content":"center","align-items":"center"}):a&&t.contains("apexcharts-align-right")&&this.setStyleDefaults(e,{"justify-content":"flex-end","align-items":"flex-end"})}),this.queryStyleable(e,".apexcharts-legend-group").forEach(e=>{this.setStyleDefaults(e,{display:"flex"})}),this.queryStyleable(e,".apexcharts-legend-group-vertical").forEach(e=>{this.setStyleDefaults(e,{"flex-direction":"column-reverse"})}),this.queryStyleable(e,".apexcharts-legend-series").forEach(e=>{this.setStyleDefaults(e,{cursor:e.classList.contains("apexcharts-no-click")?"auto":"pointer","line-height":"normal",display:"flex","align-items":"center"})}),this.queryStyleable(e,".apexcharts-legend-text").forEach(e=>{this.setStyleDefaults(e,{position:"relative","font-size":"14px"})}),this.queryStyleable(e,".apexcharts-legend-marker").forEach(e=>{this.setStyleDefaults(e,{position:"relative",display:"flex","align-items":"center","justify-content":"center",cursor:"pointer","margin-right":"1px"})}),this.queryStyleable(e,".apexcharts-inactive-legend").forEach(e=>{this.setStyleDefaults(e,{opacity:"0.45"})}),this.queryStyleable(e,".apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series").forEach(e=>{e.style.setProperty("display","none","important")}))}resolveExportBackground(){const e=this.w,t=e.config.chart.background;return t&&"transparent"!==t?t:"dark"===e.config.theme.mode?"#343A3F":"#fff"}collectFontFamilies(){const e=new Set,t=this.w;if(!i.isBrowser()||!t.dom.elWrap)return e;const s=this.queryStyleable(t.dom.elWrap,"text, tspan, .apexcharts-legend-text, .apexcharts-title-text, .apexcharts-subtitle-text");return[t.dom.elWrap,...s].forEach(t=>{const s=n.getComputedStyle(t),a=s&&s.fontFamily;a&&a.split(",").forEach(t=>{const s=t.trim().replace(/^['"]|['"]$/g,"");s&&e.add(s.toLowerCase())})}),e}collectFontFaceRules(){if(!i.isBrowser())return Promise.resolve([]);const e=[],t=[],s=t=>{(t.match(/@font-face\s*\{[^}]*\}/gi)||[]).forEach(t=>{const s=t.match(/font-family\s*:\s*([^;}]+)/i);if(!s)return;const a=s[1].trim().replace(/^['"]|['"]$/g,"");e.push({family:a.toLowerCase(),css:t})})};return Array.from(document.styleSheets||[]).forEach(e=>{let a=null;try{a=e.cssRules}catch(e){a=null}a?Array.from(a).forEach(e=>{5===e.type&&e.cssText&&s(e.cssText)}):e.href&&t.push(fetch(e.href).then(e=>e.ok?e.text():"").then(s).catch(()=>{}))}),Promise.all(t).then(()=>e)}embedFonts(e){const t=this.w;if(!i.isBrowser()||!t.config.chart.toolbar.export.embedFonts||"function"!=typeof fetch)return Promise.resolve();const s=this.collectFontFamilies();return s.size?this.collectFontFaceRules().then(e=>{const t=e.filter(e=>s.has(e.family));return t.length?Promise.all(t.map(e=>this.inlineFontFaceUrls(e.css).catch(()=>null))):Promise.resolve([])}).then(t=>{const s=(t||[]).filter(Boolean).join("\n");if(!s)return;const a=document.createElementNS(l,"style");a.textContent=s,e.insertBefore(a,e.firstChild)}).catch(()=>{}):Promise.resolve()}inlineFontFaceUrls(e){const t=[],s=/url\(\s*(['"]?)([^'")]+)\1\s*\)/gi;let a;for(;null!==(a=s.exec(e));)a[2].startsWith("data:")||t.push(a[2]);return t.length?Promise.all(t.map(e=>this.fetchAsDataUri(e).then(t=>({url:e,dataUri:t})).catch(()=>({url:e,dataUri:null})))).then(t=>{let s=e,a=0;return t.forEach(({url:e,dataUri:t})=>{t&&(s=s.split(e).join(t),a++)}),a?s:null}):Promise.resolve(e.includes("data:")?e:null)}fetchAsDataUri(e){return"function"!=typeof fetch||"function"!=typeof btoa?Promise.reject(new Error("fetch unavailable")):fetch(e).then(t=>{if(!t.ok)throw new Error(`HTTP ${t.status} for ${e}`);const s=t.headers.get("content-type")||"application/octet-stream";return t.arrayBuffer().then(e=>{const t=new Uint8Array(e);let a="";for(let e=0;e<t.length;e+=32768)a+=String.fromCharCode.apply(null,t.subarray(e,e+32768));return`data:${s};base64,${btoa(a)}`})})}getSvgString(e){return new Promise(t=>{const s=this.w;let a=e||s.config.chart.toolbar.export.scale||s.config.chart.toolbar.export.width/s.globals.svgWidth;a||(a=1);const r=s.globals.svgWidth*a,o=s.globals.svgHeight*a,i=s.dom.elWrap.cloneNode(!0);i.style.width=r+"px",i.style.height=o+"px",this.inlineCanvasLayers(i),this.applyExportStyles(i);const n=(new XMLSerializer).serializeToString(i);let l=`\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="${s.globals.svgWidth}px" height="${s.globals.svgHeight}px">\n <foreignObject width="100%" height="100%">\n <div xmlns="http://www.w3.org/1999/xhtml" style="width:${r}px; height:${o}px;">\n ${n}\n </div>\n </foreignObject>\n </svg>\n `;const c=this.svgStringToNode(l);1!==a&&this.scaleSvgNode(c,a),Promise.all([this.convertImagesToBase64(c),this.embedFonts(c)]).then(()=>{l=(new XMLSerializer).serializeToString(c),t(l.replace(/&nbsp;/g,"&#160;"))})})}convertImagesToBase64(e){const t="http://www.w3.org/1999/xlink",s=e.getElementsByTagName("image"),a=Array.from(s).map(e=>{const s=e.getAttributeNS(t,"href"),a=e.getAttribute("href"),r=s||a;if(!r||r.startsWith("data:"))return Promise.resolve();const o=r=>{s&&e.setAttributeNS(t,"href",r),!a&&s||e.setAttribute("href",r)};return this.fetchAsDataUri(r).then(o).catch(()=>this.getBase64FromUrl(r).then(o).catch(e=>{}))});return Promise.all(a)}getBase64FromUrl(e){return i.isSSR()?Promise.resolve(e):new Promise((t,s)=>{const a=new Image;a.crossOrigin="Anonymous",a.onload=()=>{const e=document.createElement("canvas");e.width=a.width,e.height=a.height;const s=e.getContext("2d");s&&s.drawImage(a,0,0),t(e.toDataURL())},a.onerror=s,a.src=e})}svgUrl(){return new Promise(e=>{this.getSvgString().then(t=>{const s=new Blob([t],{type:"image/svg+xml;charset=utf-8"});e(URL.createObjectURL(s))})})}dataURI(e){return i.isSSR()?Promise.resolve({imgURI:""}):new Promise(t=>{const s=this.w,a=e?e.scale||e.width/s.globals.svgWidth:1,r=document.createElement("canvas");r.width=s.globals.svgWidth*a,r.height=parseInt(s.dom.elWrap.style.height,10)*a;const o=this.resolveExportBackground(),i=r.getContext("2d");i&&(i.fillStyle=o,i.fillRect(0,0,r.width,r.height),this.getSvgString(a).then(e=>{const s="data:image/svg+xml,"+encodeURIComponent(e),a=new Image;a.crossOrigin="anonymous",a.onload=()=>{i.drawImage(a,0,0);const e=r;if(e.msToBlob){const s=e.msToBlob();t({blob:s})}else{const e=r.toDataURL("image/png");t({imgURI:e})}},a.src=s}))})}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,s=e?{scale:e}:t?{width:t}:void 0;this.dataURI(s).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:i=",",lineDelimiter:n="\n"}){const l=this.w;e||(e=l.config.series);let c=[];const h=[];let g="";const p=l.seriesData.series.map((e,t)=>-1===l.globals.collapsedSeriesIndices.indexOf(t)?e:[]),u=e=>{if(null==e||o.isNumber(e))return e;const t=String(e);return/^[=+\-@\t\r]/.test(t)?`'${t}`:t},f=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:u(e.split(i).join("")),d=e=>"function"==typeof l.config.chart.toolbar.export.csv.valueFormatter?l.config.chart.toolbar.export.csv.valueFormatter(e):u(e),m=Math.max(...e.map(e=>e.data?e.data.length:0)),x=new a(this.w),y=new s(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 s=l.formatters.yLabelFormatters[0],a=new r(this.ctx.w).getActiveConfigSeriesIndex();t=s(l.labelData.labels[e],{seriesIndex:a,dataPointIndex:e,w:l})}else t=y.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(i).join(""))},w=(t,s)=>{var a,r,o,n,g,u;if(c.length&&0===s&&h.push(c.join(i)),t.data){const y=t.data.length?t.data:[...Array(m)].map(()=>"");for(let m=0;m<y.length;m++){c=[];let y=b(m);if("nullvalue"!==y){if(y||(x.isFormatXY()?y=e[s].data[m].x:x.isFormat2DArray()&&(y=e[s].data[m]?e[s].data[m][0]:"")),0===s){c.push(f(y));for(let t=0;t<l.seriesData.series.length;t++){const s=x.isFormatXY()?null==(a=e[t].data[m])?void 0:a.y:p[t][m];c.push(d(s))}}("candlestick"===l.config.chart.type||t.type&&"candlestick"===t.type)&&(c.pop(),c.push(l.candleData.seriesCandleO[s][m]),c.push(l.candleData.seriesCandleH[s][m]),c.push(l.candleData.seriesCandleL[s][m]),c.push(l.candleData.seriesCandleC[s][m])),("boxPlot"===l.config.chart.type||t.type&&"boxPlot"===t.type)&&(c.pop(),c.push(l.candleData.seriesCandleO[s][m]),c.push(l.candleData.seriesCandleH[s][m]),c.push(l.candleData.seriesCandleM[s][m]),c.push(l.candleData.seriesCandleL[s][m]),c.push(l.candleData.seriesCandleC[s][m])),"rangeBar"===l.config.chart.type&&(c.pop(),c.push(l.rangeData.seriesRangeStart[s][m]),c.push(l.rangeData.seriesRangeEnd[s][m])),("violin"===l.config.chart.type||t.type&&"violin"===t.type)&&(c.pop(),c.push(null==(r=l.violinData.seriesViolinMin[s])?void 0:r[m]),c.push(null==(o=l.violinData.seriesViolinMax[s])?void 0:o[m]),c.push(null!=(u=null==(g=null==(n=l.violinData.seriesViolinPoints[s])?void 0:n[m])?void 0:g.length)?u:0)),c.length&&h.push(c.join(i))}}}};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")):"violin"===l.config.chart.type?(c.push("minimum"),c.push("maximum"),c.push("observations")):e.map((e,t)=>{const s=(e.name?e.name:`series-${t}`)+"";l.globals.axisCharts&&c.push(s.split(i).join("")?s.split(i).join(""):`series-${t}`)}),l.globals.axisCharts||(c.push(l.config.chart.toolbar.export.csv.headerValue),h.push(c.join(i))),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(f(l.labelData.labels[t])),c.push(d(p[t])),h.push(c.join(i)))}):(()=>{const t=new Set,s={};e.forEach((a,r)=>{null==a||a.data.forEach(a=>{let o,i;if(x.isFormatXY())o=a.x,i=a.y;else{if(!x.isFormat2DArray())return;o=a[0],i=a[1]}s[o]||(s[o]=Array(e.length).fill("")),s[o][r]=d(i),t.add(o)})}),c.length&&h.push(c.join(i)),Array.from(t).sort().forEach(e=>{const t=s[e];h.push([f(e),...t].join(i))})})(),g+=h.join(n),this.triggerDownload("data:text/csv; charset=utf-8,"+encodeURIComponent("\ufeff"+g),t||l.config.chart.toolbar.export.csv.filename,".csv")}triggerDownload(e,t,s){if(i.isSSR())return;const a=document.createElement("a");a.href=e,a.download=(t||this.w.globals.chartID)+s,document.body.appendChild(a),a.click(),document.body.removeChild(a)}}}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>t.default});