highcharts
Version:
JavaScript charting framework
14 lines • 6.73 kB
JavaScript
/**
* Highcharts JS v13.0.1 (2026-08-17)
* @module highcharts/modules/offline-exporting
* @requires highcharts
* @requires highcharts/modules/exporting
*
* Client side exporting module
*
* (c) 2015-2026 Highsoft AS
* Author: Torstein Hønsi / Øystein Moseng
*
* A commercial license may be required depending on use,
* see www.highcharts.com/license
*/import*as t from"../highcharts.js";let e={};e.n=t=>{let r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},e.d=(t,r)=>{if(Array.isArray(r))for(var o=0;o<r.length;){var a=r[o++],n=r[o++];e.o(t,a)?0===n&&o++:0===n?Object.defineProperty(t,a,{enumerable:!0,value:r[o++]}):Object.defineProperty(t,a,{enumerable:!0,get:n})}else for(var a in r)e.o(r,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:r[a]})},e.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let r=t.default;var o,a=e.n(r);let{isSafari:n,win:l,win:{document:i}}=a(),s=l.URL||l.webkitURL||l;function d(t){let e=t.replace(/filename=.*;/,"").match(/data:([^;]*)(;base64)?,([A-Z+\d\/]+)/i);if(e&&e.length>3&&l.atob&&l.ArrayBuffer&&l.Uint8Array&&l.Blob&&s.createObjectURL){let t=l.atob(e[3]),r=new l.ArrayBuffer(t.length),o=new l.Uint8Array(r);for(let e=0;e<o.length;++e)o[e]=t.charCodeAt(e);return s.createObjectURL(new l.Blob([o],{type:e[1]}))}}function c(t,e){let r=l.navigator,o=i.createElement("a");if("string"!=typeof t&&!(t instanceof String)&&r.msSaveOrOpenBlob)return void r.msSaveOrOpenBlob(t,e);if(t=""+t,r.userAgent.length>1e3)throw Error("Input too long");let a=/Edge\/\d+/.test(r.userAgent);if((n&&"string"==typeof t&&0===t.indexOf("data:application/pdf")||a||t.length>2e6)&&!(t=d(t)||""))throw Error("Failed to convert to blob");if(void 0!==o.download)o.href=t,o.download=e,i.body.appendChild(o),o.click(),i.body.removeChild(o);else try{if(!l.open(t,"chart"))throw Error("Failed to open window")}catch{l.location.href=t}}function f(t){return new Promise((e,o)=>{let a=i.getElementsByTagName("head")[0],n=i.createElement("script");n.type="text/javascript",n.src=t,n.onload=()=>{e()},n.onerror=()=>{let e=`Error loading script ${t}`;(0,r.error)(e),o(Error(e))},a.appendChild(n)})}let p=t.default.AST;var h=e.n(p);let u=t.default.Chart;var g=e.n(u);let y={exporting:{}},{getOptions:b,setOptions:m}=a(),{composed:w,doc:v,win:x}=a();!function(t){let e="Invalid exporting.libURL:";function o(){return!!(x&&x.jspdf?.jsPDF&&x.svg2pdf)}async function n(t,e,r,o){var a,n;let s,d,f,p,u,g,y,b=(a=t,n=o,f=v.createElement("div"),h().setElementHTML(f,a),p=f.getElementsByTagName("text"),u=function(t,e){let r=t;for(;r&&r!==f;){if(r.style[e]){let o=r.style[e];"fontSize"===e&&/em$/.test(o)&&(o=Math.round(16*parseFloat(o))+"px"),t.style[e]=o;break}r=r.parentNode}},[].forEach.call(p,function(t){for(["fontFamily","fontSize"].forEach(e=>{u(t,e)}),t.style.fontFamily=n?.normal?"HighchartsFont":String(t.style.fontFamily&&t.style.fontFamily.split(" ").splice(-1)),s=t.getElementsByTagName("title"),[].forEach.call(s,function(t){t.remove()}),d=t.getElementsByClassName("highcharts-text-outline");d.length>0;)d[0].remove()}),g=/color\(\s*srgb\s+([\d.]+)[, ]+([\d.]+)[, ]+([\d.]+)(?:\s*\/\s*([\d.]+))?\s*\)/,y=t=>{if(t?.startsWith("color(srgb")){let e=t.match(g);if(e){let t=t=>Math.round(255*Math.max(0,Math.min(1,parseFloat(t)))),r=t(e[1]),o=t(e[2]),a=t(e[3]),n=e[4];return void 0!==n?`rgba(${r}, ${o}, ${a}, ${Math.max(0,Math.min(1,parseFloat(n)))})`:`rgb(${r}, ${o}, ${a})`}}},Array.from(f.querySelectorAll("*")).forEach(t=>{["color","fill","stop-color","stroke"].forEach(e=>{let r=y(t.getAttribute(e));r&&t.setAttribute(e,r);let o=y(t.style?.[e]);o&&(t.style[e]=o)})}),f.querySelector("svg"));b&&(await l(b,o),c(await i(b,0,e),r))}async function l(t,e){let r,o,a=(t,e)=>{x.jspdf.jsPDF.API.events.push(["initialized",function(){this.addFileToVFS(t,e),this.addFont(t,"HighchartsFont",t),this.getFontList()?.HighchartsFont||this.setFont("HighchartsFont")}])};for(let n of(e&&(o=t.textContent||"",!/[^\u0000-\u007F\u200B]+/.test(o))&&(e=void 0),["normal","italic","bold","bolditalic"])){let t=e?.[n];if(t)try{let e=await x.fetch(t);if(!e.ok)throw Error(`Failed to fetch font: ${t}`);let o=await e.blob(),l=new FileReader,i=await new Promise((t,e)=>{l.onloadend=()=>{"string"==typeof l.result?t(l.result.split(",")[1]):e(Error("Failed to read font as base64"))},l.onerror=e,l.readAsDataURL(o)});a(n,i),"normal"===n&&(r=i)}catch{}else r&&a(n,r)}}async function i(t,e,r){let o=(Number(t.getAttribute("width"))+2*e)*r,a=(Number(t.getAttribute("height"))+2*e)*r,n=new x.jspdf.jsPDF(a>o?"p":"l","pt",[o,a]);[].forEach.call(t.querySelectorAll('*[visibility="hidden"]'),function(t){t.parentNode.removeChild(t)});let l=t.querySelectorAll("linearGradient");for(let t=0;t<l.length;t++){let e=l[t].querySelectorAll("stop"),r=0;for(;r<e.length&&"0"===e[r].getAttribute("offset")&&"0"===e[r+1].getAttribute("offset");)e[r].remove(),r++}return[].forEach.call(t.querySelectorAll("tspan"),t=>{""===t.textContent&&(t.textContent=" ",t.setAttribute("dx",-5))}),await n.svg(t,{x:0,y:0,width:o,height:a,removeInvalid:!0}),n.output("datauristring")}t.compose=function(t){if((0,r.addEvent)(t,"downloadSVG",async function(t){let{svg:l,exportingOptions:i,exporting:s,preventDefault:d}=t,c=s?.chart;if(i?.type==="application/pdf"){d?.();try{let{type:t,filename:r,scale:s}=a().Exporting.prepareImageOptions(i),d=i.libURL||c?.options.exporting?.libURL,p=function(t){let r;if(!t)return;let o="/"!==t.slice(-1)?t+"/":t;if(x.URL?.canParse)r=x.URL.canParse(o,v.baseURI);else try{r=!!new x.URL(o,v.baseURI).href}catch{r=!1}if(!r)throw Error(`${e} "${t}". Provide a valid URL or path to the jsPDF and svg2pdf scripts.`);return o}(d);if("application/pdf"===t){if(!o()){if(!p)throw Error("PDF export requires jsPDF and svg2pdf.");x.jspdf?.jsPDF||await f(`${p}jspdf.js`),x.svg2pdf||await f(`${p}svg2pdf.js`)}await n(l,s,r,i?.pdfFont)}}catch(t){i?.fallbackToExportServer!==!1&&0===t.message.indexOf(e)&&(0,r.error)(`${t.message} Falling back to export server.`,!1,c),await s?.fallbackToServer(i,t)}}}),!(0,r.pushUnique)(w,"OfflineExporting"))return;(0,r.addEvent)(g(),"load",function(){!(this.renderer.forExport||o())&&(this.options.exporting?.libURL||(0,r.error)("Warning: exporting.libURL not defined, PDF client side export will not work",!1,this))}),(0,r.extend)(g().prototype,{exportChartLocal:async function(t,e){await this.exporting?.exportChart(t,e)}}),m(y);let l=b().exporting?.buttons?.contextButton?.menuItems;l?.push("downloadPDF")},t.downloadSVGLocal=async function(t,e){await a().Exporting.prototype.downloadSVG.call(void 0,t,e)}}(o||(o={}));let E=o,F=a();F.dataURLtoBlob=F.dataURLtoBlob||d,F.downloadSVGLocal=E.downloadSVGLocal,F.downloadURL=F.downloadURL||c,E.compose(F.Exporting);let A=a();export{A as default};