{
"version": 3,
"sources": ["../../src/_js/plugins/modules/exporting.js"],
"sourcesContent": ["!(\n /**\n * Highcharts JS v12.1.2 (2024-12-21)\n * @module highcharts/modules/exporting\n * @requires highcharts\n *\n * Exporting module\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */ (function (e, t) {\n 'object' == typeof exports && 'object' == typeof module\n ? (module.exports = t(\n e._Highcharts,\n e._Highcharts.AST,\n e._Highcharts.Chart\n ))\n : 'function' == typeof define && define.amd\n ? define(\n 'highcharts/modules/exporting',\n ['highcharts/highcharts'],\n function (e) {\n return t(e, e.AST, e.Chart);\n }\n )\n : 'object' == typeof exports\n ? (exports['highcharts/modules/exporting'] = t(\n e._Highcharts,\n e._Highcharts.AST,\n e._Highcharts.Chart\n ))\n : (e.Highcharts = t(e.Highcharts, e.Highcharts.AST, e.Highcharts.Chart));\n })('undefined' == typeof window ? this : window, (e, t, n) =>\n (() => {\n 'use strict';\n var i,\n o,\n r,\n s = {\n 660: (e) => {\n e.exports = t;\n },\n 960: (e) => {\n e.exports = n;\n },\n 944: (t) => {\n t.exports = e;\n },\n },\n l = {};\n function a(e) {\n var t = l[e];\n if (void 0 !== t) return t.exports;\n var n = (l[e] = { exports: {} });\n return s[e](n, n.exports, a), n.exports;\n }\n (a.n = (e) => {\n var t = e && e.__esModule ? () => e.default : () => e;\n return a.d(t, { a: t }), t;\n }),\n (a.d = (e, t) => {\n for (var n in t)\n a.o(t, n) &&\n !a.o(e, n) &&\n Object.defineProperty(e, n, { enumerable: !0, get: t[n] });\n }),\n (a.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t));\n var c = {};\n a.d(c, { default: () => _ });\n var p = a(944),\n h = a.n(p),\n u = a(660),\n d = a.n(u);\n a(960),\n (function (e) {\n e.compose = function (e) {\n return e.navigation || (e.navigation = new t(e)), e;\n };\n class t {\n constructor(e) {\n (this.updates = []), (this.chart = e);\n }\n addUpdate(e) {\n this.chart.navigation.updates.push(e);\n }\n update(e, t) {\n this.updates.forEach((n) => {\n n.call(this.chart, e, t);\n });\n }\n }\n e.Additions = t;\n })(i || (i = {}));\n let g = i,\n { isTouchDevice: f } = h(),\n m = {\n exporting: {\n allowTableSorting: !0,\n type: 'image/png',\n url: 'https://export-svg.highcharts.com/',\n pdfFont: {\n normal: void 0,\n bold: void 0,\n bolditalic: void 0,\n italic: void 0,\n },\n printMaxWidth: 780,\n scale: 2,\n buttons: {\n contextButton: {\n className: 'highcharts-contextbutton',\n menuClassName: 'highcharts-contextmenu',\n symbol: 'menu',\n titleKey: 'contextButtonTitle',\n menuItems: [\n 'viewFullscreen',\n 'printChart',\n 'separator',\n 'downloadPNG',\n 'downloadJPEG',\n 'downloadSVG',\n ],\n y: -5,\n },\n },\n menuItemDefinitions: {\n viewFullscreen: {\n textKey: 'viewFullscreen',\n onclick: function () {\n this.fullscreen && this.fullscreen.toggle();\n },\n },\n printChart: {\n textKey: 'printChart',\n onclick: function () {\n this.print();\n },\n },\n separator: { separator: !0 },\n downloadPNG: {\n textKey: 'downloadPNG',\n onclick: function () {\n this.exportChart();\n },\n },\n downloadJPEG: {\n textKey: 'downloadJPEG',\n onclick: function () {\n this.exportChart({ type: 'image/jpeg' });\n },\n },\n downloadPDF: {\n textKey: 'downloadPDF',\n onclick: function () {\n this.exportChart({ type: 'application/pdf' });\n },\n },\n downloadSVG: {\n textKey: 'downloadSVG',\n onclick: function () {\n this.exportChart({ type: 'image/svg+xml' });\n },\n },\n },\n },\n lang: {\n viewFullscreen: 'View in full screen',\n exitFullscreen: 'Exit from full screen',\n printChart: 'Print chart',\n downloadPNG: 'Download PNG image',\n downloadJPEG: 'Download JPEG image',\n downloadPDF: 'Download PDF document',\n downloadSVG: 'Download SVG vector image',\n contextButtonTitle: 'Chart context menu',\n },\n navigation: {\n buttonOptions: {\n symbolSize: 14,\n symbolX: 14.5,\n symbolY: 13.5,\n align: 'right',\n buttonSpacing: 5,\n height: 28,\n verticalAlign: 'top',\n width: 28,\n symbolFill: '#666666',\n symbolStroke: '#666666',\n symbolStrokeWidth: 3,\n theme: {\n fill: '#ffffff',\n padding: 5,\n stroke: 'none',\n 'stroke-linecap': 'round',\n },\n },\n menuStyle: {\n border: 'none',\n borderRadius: '3px',\n background: '#ffffff',\n padding: '0.5em',\n },\n menuItemStyle: {\n background: 'none',\n borderRadius: '3px',\n color: '#333333',\n padding: '0.5em',\n fontSize: f ? '0.9em' : '0.8em',\n transition: 'background 250ms, color 250ms',\n },\n menuItemHoverStyle: { background: '#f2f2f2' },\n },\n };\n !(function (e) {\n let t = [];\n function n(e, t, n, i) {\n return [\n ['M', e, t + 2.5],\n ['L', e + n, t + 2.5],\n ['M', e, t + i / 2 + 0.5],\n ['L', e + n, t + i / 2 + 0.5],\n ['M', e, t + i - 1.5],\n ['L', e + n, t + i - 1.5],\n ];\n }\n function i(e, t, n, i) {\n let o = i / 3 - 2;\n return [].concat(\n this.circle(n - o, t, o, o),\n this.circle(n - o, t + o + 4, o, o),\n this.circle(n - o, t + 2 * (o + 4), o, o)\n );\n }\n e.compose = function (e) {\n if (-1 === t.indexOf(e)) {\n t.push(e);\n let o = e.prototype.symbols;\n (o.menu = n), (o.menuball = i.bind(o));\n }\n };\n })(o || (o = {}));\n let x = o,\n { composed: y } = h(),\n { addEvent: b, fireEvent: v, pushUnique: w } = h();\n function S() {\n this.fullscreen = new E(this);\n }\n class E {\n static compose(e) {\n w(y, 'Fullscreen') && b(e, 'beforeRender', S);\n }\n constructor(e) {\n (this.chart = e), (this.isOpen = !1);\n let t = e.renderTo;\n !this.browserProps &&\n ('function' == typeof t.requestFullscreen\n ? (this.browserProps = {\n fullscreenChange: 'fullscreenchange',\n requestFullscreen: 'requestFullscreen',\n exitFullscreen: 'exitFullscreen',\n })\n : t.mozRequestFullScreen\n ? (this.browserProps = {\n fullscreenChange: 'mozfullscreenchange',\n requestFullscreen: 'mozRequestFullScreen',\n exitFullscreen: 'mozCancelFullScreen',\n })\n : t.webkitRequestFullScreen\n ? (this.browserProps = {\n fullscreenChange: 'webkitfullscreenchange',\n requestFullscreen: 'webkitRequestFullScreen',\n exitFullscreen: 'webkitExitFullscreen',\n })\n : t.msRequestFullscreen &&\n (this.browserProps = {\n fullscreenChange: 'MSFullscreenChange',\n requestFullscreen: 'msRequestFullscreen',\n exitFullscreen: 'msExitFullscreen',\n }));\n }\n close() {\n let e = this,\n t = e.chart,\n n = t.options.chart;\n v(t, 'fullscreenClose', null, function () {\n e.isOpen &&\n e.browserProps &&\n t.container.ownerDocument instanceof Document &&\n t.container.ownerDocument[e.browserProps.exitFullscreen](),\n e.unbindFullscreenEvent &&\n (e.unbindFullscreenEvent = e.unbindFullscreenEvent()),\n t.setSize(e.origWidth, e.origHeight, !1),\n (e.origWidth = void 0),\n (e.origHeight = void 0),\n (n.width = e.origWidthOption),\n (n.height = e.origHeightOption),\n (e.origWidthOption = void 0),\n (e.origHeightOption = void 0),\n (e.isOpen = !1),\n e.setButtonText();\n });\n }\n open() {\n let e = this,\n t = e.chart,\n n = t.options.chart;\n v(t, 'fullscreenOpen', null, function () {\n if (\n (n &&\n ((e.origWidthOption = n.width),\n (e.origHeightOption = n.height)),\n (e.origWidth = t.chartWidth),\n (e.origHeight = t.chartHeight),\n e.browserProps)\n ) {\n let n = b(\n t.container.ownerDocument,\n e.browserProps.fullscreenChange,\n function () {\n e.isOpen\n ? ((e.isOpen = !1), e.close())\n : (t.setSize(null, null, !1),\n (e.isOpen = !0),\n e.setButtonText());\n }\n ),\n i = b(t, 'destroy', n);\n e.unbindFullscreenEvent = () => {\n n(), i();\n };\n let o = t.renderTo[e.browserProps.requestFullscreen]();\n o &&\n o.catch(function () {\n alert('Full screen is not supported inside a frame.');\n });\n }\n });\n }\n setButtonText() {\n let e = this.chart,\n t = e.exportDivElements,\n n = e.options.exporting,\n i = n && n.buttons && n.buttons.contextButton.menuItems,\n o = e.options.lang;\n if (\n n &&\n n.menuItemDefinitions &&\n o &&\n o.exitFullscreen &&\n o.viewFullscreen &&\n i &&\n t\n ) {\n let e = t[i.indexOf('viewFullscreen')];\n e &&\n d().setElementHTML(\n e,\n this.isOpen\n ? o.exitFullscreen\n : n.menuItemDefinitions.viewFullscreen.text ||\n o.viewFullscreen\n );\n }\n }\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n }\n let { win: C } = h(),\n { discardElement: T, objectEach: O } = h(),\n F = {\n ajax: function (e) {\n let t = {\n json: 'application/json',\n xml: 'application/xml',\n text: 'text/plain',\n octet: 'application/octet-stream',\n },\n n = new XMLHttpRequest();\n function i(t, n) {\n e.error && e.error(t, n);\n }\n if (!e.url) return !1;\n n.open((e.type || 'get').toUpperCase(), e.url, !0),\n (e.headers && e.headers['Content-Type']) ||\n n.setRequestHeader(\n 'Content-Type',\n t[e.dataType || 'json'] || t.text\n ),\n O(e.headers, function (e, t) {\n n.setRequestHeader(t, e);\n }),\n e.responseType && (n.responseType = e.responseType),\n (n.onreadystatechange = function () {\n let t;\n if (4 === n.readyState) {\n if (200 === n.status) {\n if (\n 'blob' !== e.responseType &&\n ((t = n.responseText), 'json' === e.dataType)\n )\n try {\n t = JSON.parse(t);\n } catch (e) {\n if (e instanceof Error) return i(n, e);\n }\n return e.success && e.success(t, n);\n }\n i(n, n.responseText);\n }\n }),\n e.data &&\n 'string' != typeof e.data &&\n (e.data = JSON.stringify(e.data)),\n n.send(e.data);\n },\n getJSON: function (e, t) {\n F.ajax({\n url: e,\n success: t,\n dataType: 'json',\n headers: { 'Content-Type': 'text/plain' },\n });\n },\n post: function (e, t, n) {\n let i = new C.FormData();\n O(t, function (e, t) {\n i.append(t, e);\n }),\n i.append('b64', 'true');\n let { filename: o, type: r } = t;\n return C.fetch(e, { method: 'POST', body: i, ...n }).then((e) => {\n e.ok &&\n e.text().then((e) => {\n let t = document.createElement('a');\n (t.href = `data:${r};base64,${e}`),\n (t.download = o),\n t.click(),\n T(t);\n });\n });\n },\n },\n { defaultOptions: P } = h(),\n { doc: M, SVG_NS: k, win: H } = h(),\n {\n addEvent: N,\n css: D,\n createElement: G,\n discardElement: I,\n extend: W,\n find: R,\n fireEvent: j,\n isObject: q,\n merge: V,\n objectEach: $,\n pick: z,\n removeEvent: L,\n splat: A,\n uniqueKey: K,\n } = h();\n !(function (e) {\n let t;\n let n = [\n /-/,\n /^(clipPath|cssText|d|height|width)$/,\n /^font$/,\n /[lL]ogical(Width|Height)$/,\n /^parentRule$/,\n /^(cssRules|ownerRules)$/,\n /perspective/,\n /TapHighlightColor/,\n /^transition/,\n /^length$/,\n /^\\d+$/,\n ],\n i = [\n 'fill',\n 'stroke',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeWidth',\n 'textAnchor',\n 'x',\n 'y',\n ];\n e.inlineAllowlist = [];\n let o = ['clipPath', 'defs', 'desc'];\n function r(e) {\n let t, n;\n let i = this,\n o = i.renderer,\n r = V(i.options.navigation.buttonOptions, e),\n s = r.onclick,\n l = r.menuItems,\n a = r.symbolSize || 12;\n if (\n (i.btnCount || (i.btnCount = 0),\n i.exportDivElements ||\n ((i.exportDivElements = []), (i.exportSVGElements = [])),\n !1 === r.enabled || !r.theme)\n )\n return;\n let c = i.styledMode ? {} : r.theme;\n s\n ? (n = function (e) {\n e && e.stopPropagation(), s.call(i, e);\n })\n : l &&\n (n = function (e) {\n e && e.stopPropagation(),\n i.contextMenu(\n p.menuClassName,\n l,\n p.translateX || 0,\n p.translateY || 0,\n p.width || 0,\n p.height || 0,\n p\n ),\n p.setState(2);\n }),\n r.text && r.symbol\n ? (c.paddingLeft = z(c.paddingLeft, 30))\n : r.text ||\n W(c, { width: r.width, height: r.height, padding: 0 });\n let p = o\n .button(\n r.text,\n 0,\n 0,\n n,\n c,\n void 0,\n void 0,\n void 0,\n void 0,\n r.useHTML\n )\n .addClass(e.className)\n .attr({ title: z(i.options.lang[r._titleKey || r.titleKey], '') });\n (p.menuClassName =\n e.menuClassName || 'highcharts-menu-' + i.btnCount++),\n r.symbol &&\n ((t = o\n .symbol(\n r.symbol,\n Math.round((r.symbolX || 0) - a / 2),\n Math.round((r.symbolY || 0) - a / 2),\n a,\n a,\n { width: a, height: a }\n )\n .addClass('highcharts-button-symbol')\n .attr({ zIndex: 1 })\n .add(p)),\n i.styledMode ||\n t.attr({\n stroke: r.symbolStroke,\n fill: r.symbolFill,\n 'stroke-width': r.symbolStrokeWidth || 1,\n })),\n p\n .add(i.exportingGroup)\n .align(\n W(r, { width: p.width, x: z(r.x, i.buttonOffset) }),\n !0,\n 'spacingBox'\n ),\n (i.buttonOffset +=\n ((p.width || 0) + r.buttonSpacing) *\n ('right' === r.align ? -1 : 1)),\n i.exportSVGElements.push(p, t);\n }\n function s() {\n if (!this.printReverseInfo) return;\n let {\n childNodes: e,\n origDisplay: n,\n resetParams: i,\n } = this.printReverseInfo;\n this.moveContainers(this.renderTo),\n [].forEach.call(e, function (e, t) {\n 1 === e.nodeType && (e.style.display = n[t] || '');\n }),\n (this.isPrinting = !1),\n i && this.setSize.apply(this, i),\n delete this.printReverseInfo,\n (t = void 0),\n j(this, 'afterPrint');\n }\n function l() {\n let e = M.body,\n t = this.options.exporting.printMaxWidth,\n n = {\n childNodes: e.childNodes,\n origDisplay: [],\n resetParams: void 0,\n };\n (this.isPrinting = !0),\n this.pointer?.reset(void 0, 0),\n j(this, 'beforePrint'),\n t &&\n this.chartWidth > t &&\n ((n.resetParams = [this.options.chart.width, void 0, !1]),\n this.setSize(t, void 0, !1)),\n [].forEach.call(n.childNodes, function (e, t) {\n 1 === e.nodeType &&\n ((n.origDisplay[t] = e.style.display),\n (e.style.display = 'none'));\n }),\n this.moveContainers(e),\n (this.printReverseInfo = n);\n }\n function a(e) {\n e.renderExporting(),\n N(e, 'redraw', e.renderExporting),\n N(e, 'destroy', e.destroyExport);\n }\n function c(e, t, n, i, o, r, s) {\n let l = this,\n a = l.options.navigation,\n c = l.chartWidth,\n p = l.chartHeight,\n u = 'cache-' + e,\n g = Math.max(o, r),\n f,\n m = l[u];\n m ||\n ((l.exportContextMenu =\n l[u] =\n m =\n G(\n 'div',\n { className: e },\n {\n position: 'absolute',\n zIndex: 1e3,\n padding: g + 'px',\n pointerEvents: 'auto',\n ...l.renderer.style,\n },\n l.scrollablePlotArea?.fixedDiv || l.container\n )),\n (f = G(\n 'ul',\n { className: 'highcharts-menu' },\n l.styledMode ? {} : { listStyle: 'none', margin: 0, padding: 0 },\n m\n )),\n l.styledMode ||\n D(\n f,\n W(\n {\n MozBoxShadow: '3px 3px 10px #888',\n WebkitBoxShadow: '3px 3px 10px #888',\n boxShadow: '3px 3px 10px #888',\n },\n a.menuStyle\n )\n ),\n (m.hideMenu = function () {\n D(m, { display: 'none' }),\n s && s.setState(0),\n (l.openMenu = !1),\n D(l.renderTo, { overflow: 'hidden' }),\n D(l.container, { overflow: 'hidden' }),\n h().clearTimeout(m.hideTimer),\n j(l, 'exportMenuHidden');\n }),\n l.exportEvents.push(\n N(m, 'mouseleave', function () {\n m.hideTimer = H.setTimeout(m.hideMenu, 500);\n }),\n N(m, 'mouseenter', function () {\n h().clearTimeout(m.hideTimer);\n }),\n N(M, 'mouseup', function (t) {\n l.pointer?.inClass(t.target, e) || m.hideMenu();\n }),\n N(m, 'click', function () {\n l.openMenu && m.hideMenu();\n })\n ),\n t.forEach(function (e) {\n if (\n ('string' == typeof e &&\n (e = l.options.exporting.menuItemDefinitions[e]),\n q(e, !0))\n ) {\n let t;\n e.separator\n ? (t = G('hr', void 0, void 0, f))\n : ('viewData' === e.textKey &&\n l.isDataTableVisible &&\n (e.textKey = 'hideData'),\n (t = G(\n 'li',\n {\n className: 'highcharts-menu-item',\n onclick: function (t) {\n t && t.stopPropagation(),\n m.hideMenu(),\n 'string' != typeof e &&\n e.onclick &&\n e.onclick.apply(l, arguments);\n },\n },\n void 0,\n f\n )),\n d().setElementHTML(t, e.text || l.options.lang[e.textKey]),\n l.styledMode ||\n ((t.onmouseover = function () {\n D(this, a.menuItemHoverStyle);\n }),\n (t.onmouseout = function () {\n D(this, a.menuItemStyle);\n }),\n D(t, W({ cursor: 'pointer' }, a.menuItemStyle || {})))),\n l.exportDivElements.push(t);\n }\n }),\n l.exportDivElements.push(f, m),\n (l.exportMenuWidth = m.offsetWidth),\n (l.exportMenuHeight = m.offsetHeight));\n let x = { display: 'block' };\n n + (l.exportMenuWidth || 0) > c\n ? (x.right = c - n - o - g + 'px')\n : (x.left = n - g + 'px'),\n i + r + (l.exportMenuHeight || 0) > p &&\n s.alignOptions?.verticalAlign !== 'top'\n ? (x.bottom = p - i - g + 'px')\n : (x.top = i + r - g + 'px'),\n D(m, x),\n D(l.renderTo, { overflow: '' }),\n D(l.container, { overflow: '' }),\n (l.openMenu = !0),\n j(l, 'exportMenuShown');\n }\n function p(e) {\n let t;\n let n = e ? e.target : this,\n i = n.exportSVGElements,\n o = n.exportDivElements,\n r = n.exportEvents;\n i &&\n (i.forEach((e, o) => {\n e &&\n ((e.onclick = e.ontouchstart = null),\n n[(t = 'cache-' + e.menuClassName)] && delete n[t],\n (i[o] = e.destroy()));\n }),\n (i.length = 0)),\n n.exportingGroup &&\n (n.exportingGroup.destroy(), delete n.exportingGroup),\n o &&\n (o.forEach(function (e, t) {\n e &&\n (h().clearTimeout(e.hideTimer),\n L(e, 'mouseleave'),\n (o[t] =\n e.onmouseout =\n e.onmouseover =\n e.ontouchstart =\n e.onclick =\n null),\n I(e));\n }),\n (o.length = 0)),\n r &&\n (r.forEach(function (e) {\n e();\n }),\n (r.length = 0));\n }\n function u(e, t) {\n let n = this.getSVGForExport(e, t);\n (e = V(this.options.exporting, e)),\n F.post(\n e.url,\n {\n filename: e.filename\n ? e.filename.replace(/\\//g, '-')\n : this.getFilename(),\n type: e.type,\n width: e.width,\n scale: e.scale,\n svg: n,\n },\n e.fetchOptions\n );\n }\n function f(e) {\n return e && this.inlineStyles(), this.container.innerHTML;\n }\n function y() {\n let e = this.userOptions.title && this.userOptions.title.text,\n t = this.options.exporting.filename;\n return t\n ? t.replace(/\\//g, '-')\n : ('string' == typeof e &&\n (t = e\n .toLowerCase()\n .replace(/<\\/?[^>]+(>|$)/g, '')\n .replace(/[\\s_]+/g, '-')\n .replace(/[^a-z\\d\\-]/g, '')\n .replace(/^[\\-]+/g, '')\n .replace(/[\\-]+/g, '-')\n .substr(0, 24)\n .replace(/[\\-]+$/g, '')),\n (!t || t.length < 5) && (t = 'chart'),\n t);\n }\n function b(e) {\n let t,\n n,\n i = V(this.options, e);\n (i.plotOptions = V(this.userOptions.plotOptions, e && e.plotOptions)),\n (i.time = V(this.userOptions.time, e && e.time));\n let o = G(\n 'div',\n null,\n {\n position: 'absolute',\n top: '-9999em',\n width: this.chartWidth + 'px',\n height: this.chartHeight + 'px',\n },\n M.body\n ),\n r = this.renderTo.style.width,\n s = this.renderTo.style.height,\n l =\n i.exporting.sourceWidth ||\n i.chart.width ||\n (/px$/.test(r) && parseInt(r, 10)) ||\n (i.isGantt ? 800 : 600),\n a =\n i.exporting.sourceHeight ||\n i.chart.height ||\n (/px$/.test(s) && parseInt(s, 10)) ||\n 400;\n W(i.chart, {\n animation: !1,\n renderTo: o,\n forExport: !0,\n renderer: 'SVGRenderer',\n width: l,\n height: a,\n }),\n (i.exporting.enabled = !1),\n delete i.data,\n (i.series = []),\n this.series.forEach(function (e) {\n (n = V(e.userOptions, {\n animation: !1,\n enableMouseTracking: !1,\n showCheckbox: !1,\n visible: e.visible,\n })).isInternal || i.series.push(n);\n });\n let c = {};\n this.axes.forEach(function (e) {\n e.userOptions.internalKey || (e.userOptions.internalKey = K()),\n e.options.isInternal ||\n (c[e.coll] || ((c[e.coll] = !0), (i[e.coll] = [])),\n i[e.coll].push(\n V(e.userOptions, {\n visible: e.visible,\n type: e.type,\n uniqueNames: e.uniqueNames,\n })\n ));\n }),\n (i.colorAxis = this.userOptions.colorAxis);\n let p = new this.constructor(i, this.callback);\n return (\n e &&\n ['xAxis', 'yAxis', 'series'].forEach(function (t) {\n let n = {};\n e[t] && ((n[t] = e[t]), p.update(n));\n }),\n this.axes.forEach(function (t) {\n let n = R(\n p.axes,\n (e) => e.options.internalKey === t.userOptions.internalKey\n );\n if (n) {\n let i = t.getExtremes(),\n o = A(e?.[t.coll] || {})[0],\n r = 'min' in o ? o.min : i.userMin,\n s = 'max' in o ? o.max : i.userMax;\n ((void 0 !== r && r !== n.min) ||\n (void 0 !== s && s !== n.max)) &&\n n.setExtremes(r ?? void 0, s ?? void 0, !0, !1);\n }\n }),\n (t = p.getChartHTML(\n this.styledMode || i.exporting?.applyStyleSheets\n )),\n j(this, 'getSVG', { chartCopy: p }),\n (t = this.sanitizeSVG(t, i)),\n (i = null),\n p.destroy(),\n I(o),\n t\n );\n }\n function v(e, t) {\n let n = this.options.exporting;\n return this.getSVG(\n V({ chart: { borderRadius: 0 } }, n.chartOptions, t, {\n exporting: {\n sourceWidth: (e && e.sourceWidth) || n.sourceWidth,\n sourceHeight: (e && e.sourceHeight) || n.sourceHeight,\n },\n })\n );\n }\n function w() {\n let t;\n let r = e.inlineAllowlist,\n s = {},\n l = M.createElement('iframe');\n D(l, { width: '1px', height: '1px', visibility: 'hidden' }),\n M.body.appendChild(l);\n let a = l.contentWindow && l.contentWindow.document;\n a && a.body.appendChild(a.createElementNS(k, 'svg')),\n (function e(l) {\n let c, p, u, d, g, f;\n let m = {};\n if (a && 1 === l.nodeType && -1 === o.indexOf(l.nodeName)) {\n if (\n ((c = H.getComputedStyle(l, null)),\n (p =\n 'svg' === l.nodeName\n ? {}\n : H.getComputedStyle(l.parentNode, null)),\n !s[l.nodeName])\n ) {\n (t = a.getElementsByTagName('svg')[0]),\n (u = a.createElementNS(l.namespaceURI, l.nodeName)),\n t.appendChild(u);\n let e = H.getComputedStyle(u, null),\n n = {};\n for (let t in e)\n t.length < 1e3 &&\n 'string' == typeof e[t] &&\n !/^\\d+$/.test(t) &&\n (n[t] = e[t]);\n (s[l.nodeName] = n),\n 'text' === l.nodeName && delete s.text.fill,\n t.removeChild(u);\n }\n for (let e in c)\n (h().isFirefox ||\n h().isMS ||\n h().isSafari ||\n Object.hasOwnProperty.call(c, e)) &&\n (function (e, t) {\n if (((d = g = !1), r.length)) {\n for (f = r.length; f-- && !g; ) g = r[f].test(t);\n d = !g;\n }\n for (\n 'transform' === t && 'none' === e && (d = !0),\n f = n.length;\n f-- && !d;\n\n ) {\n if (t.length > 1e3) throw Error('Input too long');\n d = n[f].test(t) || 'function' == typeof e;\n }\n !d &&\n (p[t] !== e || 'svg' === l.nodeName) &&\n s[l.nodeName][t] !== e &&\n (i && -1 === i.indexOf(t)\n ? (m[t] = e)\n : e &&\n l.setAttribute(\n t.replace(/[A-Z]/g, function (e) {\n return '-' + e.toLowerCase();\n }),\n e\n ));\n })(c[e], e);\n if (\n (D(l, m),\n 'svg' === l.nodeName && l.setAttribute('stroke-width', '1px'),\n 'text' === l.nodeName)\n )\n return;\n [].forEach.call(l.children || l.childNodes, e);\n }\n })(this.container.querySelector('svg')),\n t.parentNode.removeChild(t),\n l.parentNode.removeChild(l);\n }\n function S(e) {\n let { scrollablePlotArea: t } = this;\n (t ? [t.fixedDiv, t.scrollingContainer] : [this.container]).forEach(\n function (t) {\n e.appendChild(t);\n }\n );\n }\n function C() {\n let e = this,\n t = (t, n, i) => {\n (e.isDirtyExporting = !0),\n V(!0, e.options[t], n),\n z(i, !0) && e.redraw();\n };\n (e.exporting = {\n update: function (e, n) {\n t('exporting', e, n);\n },\n }),\n g.compose(e).navigation.addUpdate((e, n) => {\n t('navigation', e, n);\n });\n }\n function T({ alignTo: e, key: t, textPxLength: n }) {\n let i = this.options.exporting,\n {\n align: o,\n buttonSpacing: r = 0,\n verticalAlign: s,\n width: l = 0,\n } = V(\n this.options.navigation?.buttonOptions,\n i?.buttons?.contextButton\n ),\n a = e.width - n,\n c = l + r;\n (i?.enabled ?? !0) &&\n 'title' === t &&\n 'right' === o &&\n 'top' === s &&\n a < 2 * c &&\n (a < c\n ? (e.width -= c)\n : this.title?.alignValue !== 'left' && (e.x -= c - a / 2));\n }\n function O() {\n let e = this;\n e.isPrinting ||\n ((t = e),\n h().isSafari || e.beforePrint(),\n setTimeout(() => {\n H.focus(),\n H.print(),\n h().isSafari ||\n setTimeout(() => {\n e.afterPrint();\n }, 1e3);\n }, 1));\n }\n function B() {\n let e = this,\n t = e.options.exporting,\n n = t.buttons,\n i = e.isDirtyExporting || !e.exportSVGElements;\n (e.buttonOffset = 0),\n e.isDirtyExporting && e.destroyExport(),\n i &&\n !1 !== t.enabled &&\n ((e.exportEvents = []),\n (e.exportingGroup =\n e.exportingGroup ||\n e.renderer.g('exporting-group').attr({ zIndex: 3 }).add()),\n $(n, function (t) {\n e.addButton(t);\n }),\n (e.isDirtyExporting = !1));\n }\n function J(e, t) {\n let n = e.indexOf('') + 6,\n i = e.substr(n);\n return (\n (e = e.substr(0, n)),\n t &&\n t.exporting &&\n t.exporting.allowHTML &&\n i &&\n ((i =\n '' +\n i.replace(/(<(?:img|br).*?(?=\\>))>/g, '$1 />') +\n ''),\n (e = e.replace('', i + ''))),\n (e = e\n .replace(/zIndex=\"[^\"]+\"/g, '')\n .replace(/symbolName=\"[^\"]+\"/g, '')\n .replace(/jQuery\\d+=\"[^\"]+\"/g, '')\n .replace(/url\\((\"|")(.*?)(\"|")\\;?\\)/g, 'url($2)')\n .replace(/url\\([^#]+#/g, 'url(#')\n .replace(\n /