{"version":3,"sources":[""],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/offline-exporting\n * @requires highcharts\n * @requires highcharts/modules/exporting\n *\n * Client side exporting module\n *\n * (c) 2015-2024 Torstein Honsi / Oystein Moseng\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"AST\"], root[\"_Highcharts\"][\"Chart\"], root[\"_Highcharts\"][\"HttpUtilities\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/offline-exporting\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"AST\"],amd1[\"Chart\"],amd1[\"HttpUtilities\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/offline-exporting\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"AST\"], root[\"_Highcharts\"][\"Chart\"], root[\"_Highcharts\"][\"HttpUtilities\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"AST\"], root[\"Highcharts\"][\"Chart\"], root[\"Highcharts\"][\"HttpUtilities\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__660__, __WEBPACK_EXTERNAL_MODULE__960__, __WEBPACK_EXTERNAL_MODULE__156__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 660:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__660__;\n\n/***/ }),\n\n/***/ 960:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__960__;\n\n/***/ }),\n\n/***/ 156:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__156__;\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (/* binding */ offline_exporting_src)\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es-modules/Extensions/DownloadURL.js\n/* *\n *\n * (c) 2015-2024 Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Mixin for downloading content in the browser\n *\n * */\n\n/* *\n *\n * Imports\n *\n * */\n\nconst { isSafari, win, win: { document: doc } } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\nconst domurl = win.URL || win.webkitURL || win;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Convert base64 dataURL to Blob if supported, otherwise returns undefined.\n * @private\n * @function Highcharts.dataURLtoBlob\n * @param {string} dataURL\n * URL to convert\n * @return {string|undefined}\n * Blob\n */\nfunction dataURLtoBlob(dataURL) {\n const parts = dataURL\n .replace(/filename=.*;/, '')\n .match(/data:([^;]*)(;base64)?,([A-Z+\\d\\/]+)/i);\n if (parts &&\n parts.length > 3 &&\n (win.atob) &&\n win.ArrayBuffer &&\n win.Uint8Array &&\n win.Blob &&\n (domurl.createObjectURL)) {\n // Try to convert data URL to Blob\n const binStr = win.atob(parts[3]), buf = new win.ArrayBuffer(binStr.length), binary = new win.Uint8Array(buf);\n for (let i = 0; i < binary.length; ++i) {\n binary[i] = binStr.charCodeAt(i);\n }\n return domurl\n .createObjectURL(new win.Blob([binary], { 'type': parts[1] }));\n }\n}\n/**\n * Download a data URL in the browser. Can also take a blob as first param.\n *\n * @private\n * @function Highcharts.downloadURL\n * @param {string|global.URL} dataURL\n * The dataURL/Blob to download\n * @param {string} filename\n * The name of the resulting file (w/extension)\n * @return {void}\n */\nfunction downloadURL(dataURL, filename) {\n const nav = win.navigator, a = doc.createElement('a');\n // IE specific blob implementation\n // Don't use for normal dataURLs\n if (typeof dataURL !== 'string' &&\n !(dataURL instanceof String) &&\n nav.msSaveOrOpenBlob) {\n nav.msSaveOrOpenBlob(dataURL, filename);\n return;\n }\n dataURL = '' + dataURL;\n if (nav.userAgent.length > 1000 /* RegexLimits.shortLimit */) {\n throw new Error('Input too long');\n }\n const // Some browsers have limitations for data URL lengths. Try to convert\n // to Blob or fall back. Edge always needs that blob.\n isOldEdgeBrowser = /Edge\\/\\d+/.test(nav.userAgent), \n // Safari on iOS needs Blob in order to download PDF\n safariBlob = (isSafari &&\n typeof dataURL === 'string' &&\n dataURL.indexOf('data:application/pdf') === 0);\n if (safariBlob || isOldEdgeBrowser || dataURL.length > 2000000) {\n dataURL = dataURLtoBlob(dataURL) || '';\n if (!dataURL) {\n throw new Error('Failed to convert to blob');\n }\n }\n // Try HTML5 download attr if supported\n if (typeof a.download !== 'undefined') {\n a.href = dataURL;\n a.download = filename; // HTML5 download attribute\n doc.body.appendChild(a);\n a.click();\n doc.body.removeChild(a);\n }\n else {\n // No download attr, just opening data URI\n try {\n if (!win.open(dataURL, 'chart')) {\n throw new Error('Failed to open window');\n }\n }\n catch {\n // If window.open failed, try location.href\n win.location.href = dataURL;\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nconst DownloadURL = {\n dataURLtoBlob,\n downloadURL\n};\n/* harmony default export */ const Extensions_DownloadURL = (DownloadURL);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"AST\"],\"commonjs\":[\"highcharts\",\"AST\"],\"commonjs2\":[\"highcharts\",\"AST\"],\"root\":[\"Highcharts\",\"AST\"]}\nvar highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_ = __webpack_require__(660);\nvar highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default = /*#__PURE__*/__webpack_require__.n(highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Chart\"],\"commonjs\":[\"highcharts\",\"Chart\"],\"commonjs2\":[\"highcharts\",\"Chart\"],\"root\":[\"Highcharts\",\"Chart\"]}\nvar highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_ = __webpack_require__(960);\n;// ./code/es-modules/Core/Chart/ChartNavigationComposition.js\n/**\n *\n * (c) 2010-2024 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Composition\n *\n * */\nvar ChartNavigationComposition;\n(function (ChartNavigationComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(chart) {\n if (!chart.navigation) {\n chart.navigation = new Additions(chart);\n }\n return chart;\n }\n ChartNavigationComposition.compose = compose;\n /* *\n *\n * Class\n *\n * */\n /**\n * Initializes `chart.navigation` object which delegates `update()` methods\n * to all other common classes (used in exporting and navigationBindings).\n * @private\n */\n class Additions {\n /* *\n *\n * Constructor\n *\n * */\n constructor(chart) {\n this.updates = [];\n this.chart = chart;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers an `update()` method in the `chart.navigation` object.\n *\n * @private\n * @param {UpdateFunction} updateFn\n * The `update()` method that will be called in `chart.update()`.\n */\n addUpdate(updateFn) {\n this.chart.navigation.updates.push(updateFn);\n }\n /**\n * @private\n */\n update(options, redraw) {\n this.updates.forEach((updateFn) => {\n updateFn.call(this.chart, options, redraw);\n });\n }\n }\n ChartNavigationComposition.Additions = Additions;\n})(ChartNavigationComposition || (ChartNavigationComposition = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Chart_ChartNavigationComposition = (ChartNavigationComposition);\n\n;// ./code/es-modules/Extensions/Exporting/ExportingDefaults.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { isTouchDevice } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * API Options\n *\n * */\n// Add the export related options\n/**\n * Options for the exporting module. For an overview on the matter, see\n * [the docs](https://www.highcharts.com/docs/export-module/export-module-overview) and\n * read our [Fair Usage Policy](https://www.highcharts.com/docs/export-module/privacy-disclaimer-export).\n *\n * @requires modules/exporting\n * @optionparent exporting\n */\nconst exporting = {\n /**\n * Experimental setting to allow HTML inside the chart (added through\n * the `useHTML` options), directly in the exported image. This allows\n * you to preserve complicated HTML structures like tables or bi-directional\n * text in exported charts.\n *\n * Disclaimer: The HTML is rendered in a `foreignObject` tag in the\n * generated SVG. The official export server is based on PhantomJS,\n * which supports this, but other SVG clients, like Batik, does not\n * support it. This also applies to downloaded SVG that you want to\n * open in a desktop client.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.8\n * @apioption exporting.allowHTML\n */\n /**\n * Allows the end user to sort the data table by clicking on column headers.\n *\n * @since 10.3.3\n * @apioption exporting.allowTableSorting\n */\n allowTableSorting: true,\n /**\n * Allow exporting a chart retaining any user-applied CSS.\n *\n * Note that this is is default behavior in [styledMode](#chart.styledMode).\n *\n * @see [styledMode](#chart.styledMode)\n *\n * @sample {highcharts} highcharts/exporting/apply-stylesheets/\n *\n * @type {boolean}\n * @default false\n * @since 12.0.0\n * @apioption exporting.applyStyleSheets\n */\n /**\n * Additional chart options to be merged into the chart before exporting to\n * an image format. This does not apply to printing the chart via the export\n * menu.\n *\n * For example, a common use case is to add data labels to improve\n * readability of the exported chart, or to add a printer-friendly color\n * scheme to exported PDFs.\n *\n * @sample {highcharts} highcharts/exporting/chartoptions-data-labels/\n * Added data labels\n * @sample {highstock} highcharts/exporting/chartoptions-data-labels/\n * Added data labels\n *\n * @type {Highcharts.Options}\n * @apioption exporting.chartOptions\n */\n /**\n * Whether to enable the exporting module. Disabling the module will\n * hide the context button, but API methods will still be available.\n *\n * @sample {highcharts} highcharts/exporting/enabled-false/\n * Exporting module is loaded but disabled\n * @sample {highstock} highcharts/exporting/enabled-false/\n * Exporting module is loaded but disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.0\n * @apioption exporting.enabled\n */\n /**\n * Function to call if the offline-exporting module fails to export\n * a chart on the client side, and [fallbackToExportServer](\n * #exporting.fallbackToExportServer) is disabled. If left undefined, an\n * exception is thrown instead. Receives two parameters, the exporting\n * options, and the error from the module.\n *\n * @see [fallbackToExportServer](#exporting.fallbackToExportServer)\n *\n * @type {Highcharts.ExportingErrorCallbackFunction}\n * @since 5.0.0\n * @requires modules/exporting\n * @requires modules/offline-exporting\n * @apioption exporting.error\n */\n /**\n * Whether or not to fall back to the export server if the offline-exporting\n * module is unable to export the chart on the client side. This happens for\n * certain browsers, and certain features (e.g.\n * [allowHTML](#exporting.allowHTML)), depending on the image type exporting\n * to. For very complex charts, it is possible that export can fail in\n * browsers that don't support Blob objects, due to data URL length limits.\n * It is recommended to define the [exporting.error](#exporting.error)\n * handler if disabling fallback, in order to notify users in case export\n * fails.\n *\n * @type {boolean}\n * @default true\n * @since 4.1.8\n * @requires modules/exporting\n * @requires modules/offline-exporting\n * @apioption exporting.fallbackToExportServer\n */\n /**\n * The filename, without extension, to use for the exported chart.\n *\n * @sample {highcharts} highcharts/exporting/filename/\n * Custom file name\n * @sample {highstock} highcharts/exporting/filename/\n * Custom file name\n *\n * @type {string}\n * @default chart\n * @since 2.0\n * @apioption exporting.filename\n */\n /**\n * Highcharts v11.2.0 and older. An object containing additional key value\n * data for the POST form that sends the SVG to the export server. For\n * example, a `target` can be set to make sure the generated image is\n * received in another frame, or a custom `enctype` or `encoding` can be\n * set.\n *\n * With Highcharts v11.3.0, the `fetch` API replaced the old HTML form. To\n * modify the request, now use [fetchOptions](#exporting.fetchOptions)\n * instead.\n *\n * @deprecated\n * @type {Highcharts.HTMLAttributes}\n * @since 3.0.8\n * @apioption exporting.formAttributes\n */\n /**\n * Options for the fetch request used when sending the SVG to the export\n * server.\n *\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch)\n * for more information\n *\n * @type {Object}\n * @since 11.3.0\n * @apioption exporting.fetchOptions\n */\n /**\n * Path where Highcharts will look for export module dependencies to\n * load on demand if they don't already exist on `window`. Should currently\n * point to location of [CanVG](https://github.com/canvg/canvg) library,\n * [jsPDF](https://github.com/parallax/jsPDF) and\n * [svg2pdf.js](https://github.com/yWorks/svg2pdf.js), required for client\n * side export in certain browsers.\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/lib\n * @since 5.0.0\n * @apioption exporting.libURL\n */\n /**\n * Analogous to [sourceWidth](#exporting.sourceWidth).\n *\n * @type {number}\n * @since 3.0\n * @apioption exporting.sourceHeight\n */\n /**\n * The width of the original chart when exported, unless an explicit\n * [chart.width](#chart.width) is set, or a pixel width is set on the\n * container. The width exported raster image is then multiplied by\n * [scale](#exporting.scale).\n *\n * @sample {highcharts} highcharts/exporting/sourcewidth/\n * Source size demo\n * @sample {highstock} highcharts/exporting/sourcewidth/\n * Source size demo\n * @sample {highmaps} maps/exporting/sourcewidth/\n * Source size demo\n *\n * @type {number}\n * @since 3.0\n * @apioption exporting.sourceWidth\n */\n /**\n * The pixel width of charts exported to PNG or JPG. As of Highcharts\n * 3.0, the default pixel width is a function of the [chart.width](\n * #chart.width) or [exporting.sourceWidth](#exporting.sourceWidth) and the\n * [exporting.scale](#exporting.scale).\n *\n * @sample {highcharts} highcharts/exporting/width/\n * Export to 200px wide images\n * @sample {highstock} highcharts/exporting/width/\n * Export to 200px wide images\n *\n * @type {number}\n * @since 2.0\n * @apioption exporting.width\n */\n /**\n * Default MIME type for exporting if `chart.exportChart()` is called\n * without specifying a `type` option. Possible values are `image/png`,\n * `image/jpeg`, `application/pdf` and `image/svg+xml`.\n *\n * @type {Highcharts.ExportingMimeTypeValue}\n * @since 2.0\n */\n type: 'image/png',\n /**\n * The URL for the server module converting the SVG string to an image\n * format. By default this points to Highchart's free web service.\n *\n * @since 2.0\n */\n url: 'https://export-svg.highcharts.com/',\n /**\n * Settings for a custom font for the exported PDF, when using the\n * `offline-exporting` module. This is used for languages containing\n * non-ASCII characters, like Chinese, Russian, Japanese etc.\n *\n * As described in the [jsPDF\n * docs](https://github.com/parallax/jsPDF#use-of-unicode-characters--utf-8),\n * the 14 standard fonts in PDF are limited to the ASCII-codepage.\n * Therefore, in order to support other text in the exported PDF, one or\n * more TTF font files have to be passed on to the exporting module.\n *\n * See more in [the\n * docs](https://www.highcharts.com/docs/export-module/client-side-export).\n *\n * @sample {highcharts} highcharts/exporting/offline-download-pdffont/\n * Download PDF in a language containing non-Latin characters.\n *\n * @since 10.0.0\n * @requires modules/offline-exporting\n */\n pdfFont: {\n /**\n * The TTF font file for normal `font-style`. If font variations like\n * `bold` or `italic` are not defined, the `normal` font will be used\n * for those too.\n *\n * @type string|undefined\n */\n normal: void 0,\n /**\n * The TTF font file for bold text.\n *\n * @type string|undefined\n */\n bold: void 0,\n /**\n * The TTF font file for bold and italic text.\n *\n * @type string|undefined\n */\n bolditalic: void 0,\n /**\n * The TTF font file for italic text.\n *\n * @type string|undefined\n */\n italic: void 0\n },\n /**\n * When printing the chart from the menu item in the burger menu, if\n * the on-screen chart exceeds this width, it is resized. After printing\n * or cancelled, it is restored. The default width makes the chart\n * fit into typical paper format. Note that this does not affect the\n * chart when printing the web page as a whole.\n *\n * @since 4.2.5\n */\n printMaxWidth: 780,\n /**\n * Defines the scale or zoom factor for the exported image compared\n * to the on-screen display. While for instance a 600px wide chart\n * may look good on a website, it will look bad in print. The default\n * scale of 2 makes this chart export to a 1200px PNG or JPG.\n *\n * @see [chart.width](#chart.width)\n * @see [exporting.sourceWidth](#exporting.sourceWidth)\n *\n * @sample {highcharts} highcharts/exporting/scale/\n * Scale demonstrated\n * @sample {highstock} highcharts/exporting/scale/\n * Scale demonstrated\n * @sample {highmaps} maps/exporting/scale/\n * Scale demonstrated\n *\n * @since 3.0\n */\n scale: 2,\n /**\n * Options for the export related buttons, print and export. In addition\n * to the default buttons listed here, custom buttons can be added.\n * See [navigation.buttonOptions](#navigation.buttonOptions) for general\n * options.\n *\n * @type {Highcharts.Dictionary<*>}\n * @requires modules/exporting\n */\n buttons: {\n /**\n * Options for the export button.\n *\n * In styled mode, export button styles can be applied with the\n * `.highcharts-contextbutton` class.\n *\n * @declare Highcharts.ExportingButtonsOptionsObject\n * @extends navigation.buttonOptions\n * @requires modules/exporting\n */\n contextButton: {\n /**\n * A click handler callback to use on the button directly instead of\n * the popup menu.\n *\n * @sample highcharts/exporting/buttons-contextbutton-onclick/\n * Skip the menu and export the chart directly\n *\n * @type {Function}\n * @since 2.0\n * @apioption exporting.buttons.contextButton.onclick\n */\n /**\n * See [navigation.buttonOptions.symbolFill](\n * #navigation.buttonOptions.symbolFill).\n *\n * @type {Highcharts.ColorString}\n * @default #666666\n * @since 2.0\n * @apioption exporting.buttons.contextButton.symbolFill\n */\n /**\n * The horizontal position of the button relative to the `align`\n * option.\n *\n * @type {number}\n * @default -10\n * @since 2.0\n * @apioption exporting.buttons.contextButton.x\n */\n /**\n * The class name of the context button.\n */\n className: 'highcharts-contextbutton',\n /**\n * The class name of the menu appearing from the button.\n */\n menuClassName: 'highcharts-contextmenu',\n /**\n * The symbol for the button. Points to a definition function in\n * the `Highcharts.Renderer.symbols` collection. The default\n * `menu` function is part of the exporting module. Possible\n * values are \"circle\", \"square\", \"diamond\", \"triangle\",\n * \"triangle-down\", \"menu\", \"menuball\" or custom shape.\n *\n * @sample highcharts/exporting/buttons-contextbutton-symbol/\n * Use a circle for symbol\n * @sample highcharts/exporting/buttons-contextbutton-symbol-custom/\n * Custom shape as symbol\n *\n * @type {Highcharts.SymbolKeyValue|\"menu\"|\"menuball\"|string}\n * @since 2.0\n */\n symbol: 'menu',\n /**\n * The key to a [lang](#lang) option setting that is used for the\n * button's title tooltip. When the key is `contextButtonTitle`, it\n * refers to [lang.contextButtonTitle](#lang.contextButtonTitle)\n * that defaults to \"Chart context menu\".\n *\n * @since 6.1.4\n */\n titleKey: 'contextButtonTitle',\n /**\n * A collection of strings pointing to config options for the menu\n * items. The config options are defined in the\n * `menuItemDefinitions` option.\n *\n * By default, there is the \"View in full screen\" and \"Print\" menu\n * items, plus one menu item for each of the available export types.\n *\n * @sample {highcharts} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highstock} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highmaps} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n *\n * @type {Array}\n * @default [\"viewFullscreen\", \"printChart\", \"separator\", \"downloadPNG\", \"downloadJPEG\", \"downloadSVG\"]\n * @since 2.0\n */\n menuItems: [\n 'viewFullscreen',\n 'printChart',\n 'separator',\n 'downloadPNG',\n 'downloadJPEG',\n 'downloadSVG'\n ],\n y: -5\n }\n },\n /**\n * An object consisting of definitions for the menu items in the context\n * menu. Each key value pair has a `key` that is referenced in the\n * [menuItems](#exporting.buttons.contextButton.menuItems) setting,\n * and a `value`, which is an object with the following properties:\n *\n * - **onclick:** The click handler for the menu item\n *\n * - **text:** The text for the menu item\n *\n * - **textKey:** If internationalization is required, the key to a language\n * string\n *\n * Custom text for the \"exitFullScreen\" can be set only in lang options\n * (it is not a separate button).\n *\n * @sample {highcharts} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highstock} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highmaps} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n *\n *\n * @type {Highcharts.Dictionary}\n * @default {\"viewFullscreen\": {}, \"printChart\": {}, \"separator\": {}, \"downloadPNG\": {}, \"downloadJPEG\": {}, \"downloadPDF\": {}, \"downloadSVG\": {}}\n * @since 5.0.13\n */\n menuItemDefinitions: {\n /**\n * @ignore\n */\n viewFullscreen: {\n textKey: 'viewFullscreen',\n onclick: function () {\n if (this.fullscreen) {\n this.fullscreen.toggle();\n }\n }\n },\n /**\n * @ignore\n */\n printChart: {\n textKey: 'printChart',\n onclick: function () {\n this.print();\n }\n },\n /**\n * @ignore\n */\n separator: {\n separator: true\n },\n /**\n * @ignore\n */\n downloadPNG: {\n textKey: 'downloadPNG',\n onclick: function () {\n this.exportChart();\n }\n },\n /**\n * @ignore\n */\n downloadJPEG: {\n textKey: 'downloadJPEG',\n onclick: function () {\n this.exportChart({\n type: 'image/jpeg'\n });\n }\n },\n /**\n * @ignore\n */\n downloadPDF: {\n textKey: 'downloadPDF',\n onclick: function () {\n this.exportChart({\n type: 'application/pdf'\n });\n }\n },\n /**\n * @ignore\n */\n downloadSVG: {\n textKey: 'downloadSVG',\n onclick: function () {\n this.exportChart({\n type: 'image/svg+xml'\n });\n }\n }\n }\n};\n// Add language\n/**\n * @optionparent lang\n */\nconst lang = {\n /**\n * Exporting module only. The text for the menu item to view the chart\n * in full screen.\n *\n * @since 8.0.1\n */\n viewFullscreen: 'View in full screen',\n /**\n * Exporting module only. The text for the menu item to exit the chart\n * from full screen.\n *\n * @since 8.0.1\n */\n exitFullscreen: 'Exit from full screen',\n /**\n * Exporting module only. The text for the menu item to print the chart.\n *\n * @since 3.0.1\n * @requires modules/exporting\n */\n printChart: 'Print chart',\n /**\n * Exporting module only. The text for the PNG download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadPNG: 'Download PNG image',\n /**\n * Exporting module only. The text for the JPEG download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadJPEG: 'Download JPEG image',\n /**\n * Exporting module only. The text for the PDF download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadPDF: 'Download PDF document',\n /**\n * Exporting module only. The text for the SVG download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadSVG: 'Download SVG vector image',\n /**\n * Exporting module menu. The tooltip title for the context menu holding\n * print and export menu items.\n *\n * @since 3.0\n * @requires modules/exporting\n */\n contextButtonTitle: 'Chart context menu'\n};\n/**\n * A collection of options for buttons and menus appearing in the exporting\n * module or in Stock Tools.\n *\n * @requires modules/exporting\n * @optionparent navigation\n */\nconst navigation = {\n /**\n * A collection of options for buttons appearing in the exporting\n * module.\n *\n * In styled mode, the buttons are styled with the\n * `.highcharts-contextbutton` and `.highcharts-button-symbol` classes.\n *\n * @requires modules/exporting\n */\n buttonOptions: {\n /**\n * Whether to enable buttons.\n *\n * @sample highcharts/navigation/buttonoptions-enabled/\n * Exporting module loaded but buttons disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.0\n * @apioption navigation.buttonOptions.enabled\n */\n /**\n * The pixel size of the symbol on the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolSize: 14,\n /**\n * The x position of the center of the symbol inside the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolX: 14.5,\n /**\n * The y position of the center of the symbol inside the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolY: 13.5,\n /**\n * Alignment for the buttons.\n *\n * @sample highcharts/navigation/buttonoptions-align/\n * Center aligned\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'right',\n /**\n * The pixel spacing between buttons, and between the context button and\n * the title.\n *\n * @sample highcharts/title/widthadjust\n * Adjust the spacing when using text button\n * @since 2.0\n */\n buttonSpacing: 5,\n /**\n * Pixel height of the buttons.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n height: 28,\n /**\n * A text string to add to the individual button.\n *\n * @sample highcharts/exporting/buttons-text/\n * Full text button\n * @sample highcharts/exporting/buttons-text-usehtml/\n * Icon using CSS font in text\n * @sample highcharts/exporting/buttons-text-symbol/\n * Combined symbol and text\n *\n * @type {string}\n * @default null\n * @since 3.0\n * @apioption navigation.buttonOptions.text\n */\n /**\n * Whether to use HTML for rendering the button. HTML allows for things\n * like inline CSS or image-based icons.\n *\n * @sample highcharts/exporting/buttons-text-usehtml/\n * Icon using CSS font in text\n *\n * @type boolean\n * @default false\n * @since 10.3.0\n * @apioption navigation.buttonOptions.useHTML\n */\n /**\n * The vertical offset of the button's position relative to its\n * `verticalAlign`.\n *\n * @sample highcharts/navigation/buttonoptions-verticalalign/\n * Buttons at lower right\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption navigation.buttonOptions.y\n */\n /**\n * The vertical alignment of the buttons. Can be one of `\"top\"`,\n * `\"middle\"` or `\"bottom\"`.\n *\n * @sample highcharts/navigation/buttonoptions-verticalalign/\n * Buttons at lower right\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'top',\n /**\n * The pixel width of the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n width: 28,\n /**\n * Fill color for the symbol within the button.\n *\n * @sample highcharts/navigation/buttonoptions-symbolfill/\n * Blue symbol stroke for one of the buttons\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.0\n */\n symbolFill: \"#666666\" /* Palette.neutralColor60 */,\n /**\n * The color of the symbol's stroke or line.\n *\n * @sample highcharts/navigation/buttonoptions-symbolstroke/\n * Blue symbol stroke\n *\n * @type {Highcharts.ColorString}\n * @since 2.0\n */\n symbolStroke: \"#666666\" /* Palette.neutralColor60 */,\n /**\n * The pixel stroke width of the symbol on the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolStrokeWidth: 3,\n /**\n * A configuration object for the button theme. The object accepts\n * SVG properties like `stroke-width`, `stroke` and `fill`.\n * Tri-state button styles are supported by the `states.hover` and\n * `states.select` objects.\n *\n * @sample highcharts/navigation/buttonoptions-theme/\n * Theming the buttons\n *\n * @requires modules/exporting\n *\n * @since 3.0\n */\n theme: {\n /**\n * The default fill exists only to capture hover events.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fill: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * Padding for the button.\n */\n padding: 5,\n /**\n * Default stroke for the buttons.\n *\n * @type {Highcharts.ColorString}\n */\n stroke: 'none',\n /**\n * Default stroke linecap for the buttons.\n */\n 'stroke-linecap': 'round'\n }\n },\n /**\n * CSS styles for the popup menu appearing by default when the export\n * icon is clicked. This menu is rendered in HTML.\n *\n * @see In styled mode, the menu is styled with the `.highcharts-menu`\n * class.\n *\n * @sample highcharts/navigation/menustyle/\n * Light gray menu background\n *\n * @type {Highcharts.CSSObject}\n * @default {\"background\": \"#ffffff\", \"borderRadius\": \"3px\", \"padding\": \"0.5em\"}\n * @since 2.0\n */\n menuStyle: {\n /** @ignore-option */\n border: 'none',\n /** @ignore-option */\n borderRadius: '3px',\n /** @ignore-option */\n background: \"#ffffff\" /* Palette.backgroundColor */,\n /** @ignore-option */\n padding: '0.5em'\n },\n /**\n * CSS styles for the individual items within the popup menu appearing\n * by default when the export icon is clicked. The menu items are\n * rendered in HTML. Font size defaults to `11px` on desktop and `14px`\n * on touch devices.\n *\n * @see In styled mode, the menu items are styled with the\n * `.highcharts-menu-item` class.\n *\n * @sample {highcharts} highcharts/navigation/menuitemstyle/\n * Add a grey stripe to the left\n *\n * @type {Highcharts.CSSObject}\n * @default {\"padding\": \"0.5em\", \"color\": \"#333333\", \"background\": \"none\", \"borderRadius\": \"3px\", \"fontSize\": \"0.8em\", \"transition\": \"background 250ms, color 250ms\"}\n * @since 2.0\n */\n menuItemStyle: {\n /** @ignore-option */\n background: 'none',\n /** @ignore-option */\n borderRadius: '3px',\n /** @ignore-option */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @ignore-option */\n padding: '0.5em',\n /** @ignore-option */\n fontSize: isTouchDevice ? '0.9em' : '0.8em',\n /** @ignore-option */\n transition: 'background 250ms, color 250ms'\n },\n /**\n * CSS styles for the hover state of the individual items within the\n * popup menu appearing by default when the export icon is clicked. The\n * menu items are rendered in HTML.\n *\n * @see In styled mode, the menu items are styled with the\n * `.highcharts-menu-item` class.\n *\n * @sample highcharts/navigation/menuitemhoverstyle/\n * Bold text on hover\n *\n * @type {Highcharts.CSSObject}\n * @default {\"background\": \"#f2f2f2\" }\n * @since 2.0\n */\n menuItemHoverStyle: {\n /** @ignore-option */\n background: \"#f2f2f2\" /* Palette.neutralColor5 */\n }\n};\n/* *\n *\n * Default Export\n *\n * */\nconst ExportingDefaults = {\n exporting,\n lang,\n navigation\n};\n/* harmony default export */ const Exporting_ExportingDefaults = (ExportingDefaults);\n\n;// ./code/es-modules/Extensions/Exporting/ExportingSymbols.js\n/* *\n *\n * Exporting module\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Composition\n *\n * */\nvar ExportingSymbols;\n(function (ExportingSymbols) {\n /* *\n *\n * Constants\n *\n * */\n const modifiedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(SVGRendererClass) {\n if (modifiedClasses.indexOf(SVGRendererClass) === -1) {\n modifiedClasses.push(SVGRendererClass);\n const symbols = SVGRendererClass.prototype.symbols;\n symbols.menu = menu;\n symbols.menuball = menuball.bind(symbols);\n }\n }\n ExportingSymbols.compose = compose;\n /**\n * @private\n */\n function menu(x, y, width, height) {\n const arr = [\n ['M', x, y + 2.5],\n ['L', x + width, y + 2.5],\n ['M', x, y + height / 2 + 0.5],\n ['L', x + width, y + height / 2 + 0.5],\n ['M', x, y + height - 1.5],\n ['L', x + width, y + height - 1.5]\n ];\n return arr;\n }\n /**\n * @private\n */\n function menuball(x, y, width, height) {\n const h = (height / 3) - 2;\n let path = [];\n path = path.concat(this.circle(width - h, y, h, h), this.circle(width - h, y + h + 4, h, h), this.circle(width - h, y + 2 * (h + 4), h, h));\n return path;\n }\n})(ExportingSymbols || (ExportingSymbols = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Exporting_ExportingSymbols = (ExportingSymbols);\n\n;// ./code/es-modules/Extensions/Exporting/Fullscreen.js\n/* *\n *\n * (c) 2009-2024 Rafal Sebestjanski\n *\n * Full screen for Highcharts\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n/**\n * The module allows user to enable display chart in full screen mode.\n * Used in StockTools too.\n * Based on default solutions in browsers.\n */\n\n\n\nconst { composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent, fireEvent, pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction onChartBeforeRender() {\n /**\n * @name Highcharts.Chart#fullscreen\n * @type {Highcharts.Fullscreen}\n * @requires modules/full-screen\n */\n this.fullscreen = new Fullscreen(this);\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * Handles displaying chart's container in the fullscreen mode.\n *\n * **Note**: Fullscreen is not supported on iPhone due to iOS limitations.\n *\n * @class\n * @name Highcharts.Fullscreen\n *\n * @requires modules/exporting\n */\nclass Fullscreen {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Prepares the chart class to support fullscreen.\n *\n * @param {typeof_Highcharts.Chart} ChartClass\n * The chart class to decorate with fullscreen support.\n */\n static compose(ChartClass) {\n if (pushUnique(composed, 'Fullscreen')) {\n // Initialize fullscreen\n addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n }\n }\n /* *\n *\n * Constructors\n *\n * */\n constructor(chart) {\n /**\n * Chart managed by the fullscreen controller.\n * @name Highcharts.Fullscreen#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * The flag is set to `true` when the chart is displayed in\n * the fullscreen mode.\n *\n * @name Highcharts.Fullscreen#isOpen\n * @type {boolean|undefined}\n * @since 8.0.1\n */\n this.isOpen = false;\n const container = chart.renderTo;\n // Hold event and methods available only for a current browser.\n if (!this.browserProps) {\n if (typeof container.requestFullscreen === 'function') {\n this.browserProps = {\n fullscreenChange: 'fullscreenchange',\n requestFullscreen: 'requestFullscreen',\n exitFullscreen: 'exitFullscreen'\n };\n }\n else if (container.mozRequestFullScreen) {\n this.browserProps = {\n fullscreenChange: 'mozfullscreenchange',\n requestFullscreen: 'mozRequestFullScreen',\n exitFullscreen: 'mozCancelFullScreen'\n };\n }\n else if (container.webkitRequestFullScreen) {\n this.browserProps = {\n fullscreenChange: 'webkitfullscreenchange',\n requestFullscreen: 'webkitRequestFullScreen',\n exitFullscreen: 'webkitExitFullscreen'\n };\n }\n else if (container.msRequestFullscreen) {\n this.browserProps = {\n fullscreenChange: 'MSFullscreenChange',\n requestFullscreen: 'msRequestFullscreen',\n exitFullscreen: 'msExitFullscreen'\n };\n }\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Stops displaying the chart in fullscreen mode.\n * Exporting module required.\n *\n * @since 8.0.1\n *\n * @function Highcharts.Fullscreen#close\n * @return {void}\n * @requires modules/full-screen\n */\n close() {\n const fullscreen = this, chart = fullscreen.chart, optionsChart = chart.options.chart;\n fireEvent(chart, 'fullscreenClose', null, function () {\n // Don't fire exitFullscreen() when user exited\n // using 'Escape' button.\n if (fullscreen.isOpen &&\n fullscreen.browserProps &&\n chart.container.ownerDocument instanceof Document) {\n chart.container.ownerDocument[fullscreen.browserProps.exitFullscreen]();\n }\n // Unbind event as it's necessary only before exiting\n // from fullscreen.\n if (fullscreen.unbindFullscreenEvent) {\n fullscreen.unbindFullscreenEvent = fullscreen\n .unbindFullscreenEvent();\n }\n chart.setSize(fullscreen.origWidth, fullscreen.origHeight, false);\n fullscreen.origWidth = void 0;\n fullscreen.origHeight = void 0;\n optionsChart.width = fullscreen.origWidthOption;\n optionsChart.height = fullscreen.origHeightOption;\n fullscreen.origWidthOption = void 0;\n fullscreen.origHeightOption = void 0;\n fullscreen.isOpen = false;\n fullscreen.setButtonText();\n });\n }\n /**\n * Displays the chart in fullscreen mode.\n * When fired customly by user before exporting context button is created,\n * button's text will not be replaced - it's on the user side.\n * Exporting module required.\n *\n * @since 8.0.1\n *\n * @function Highcharts.Fullscreen#open\n * @return {void}\n * @requires modules/full-screen\n */\n open() {\n const fullscreen = this, chart = fullscreen.chart, optionsChart = chart.options.chart;\n fireEvent(chart, 'fullscreenOpen', null, function () {\n if (optionsChart) {\n fullscreen.origWidthOption = optionsChart.width;\n fullscreen.origHeightOption = optionsChart.height;\n }\n fullscreen.origWidth = chart.chartWidth;\n fullscreen.origHeight = chart.chartHeight;\n // Handle exitFullscreen() method when user clicks 'Escape' button.\n if (fullscreen.browserProps) {\n const unbindChange = addEvent(chart.container.ownerDocument, // Chart's document\n fullscreen.browserProps.fullscreenChange, function () {\n // Handle lack of async of browser's\n // fullScreenChange event.\n if (fullscreen.isOpen) {\n fullscreen.isOpen = false;\n fullscreen.close();\n }\n else {\n chart.setSize(null, null, false);\n fullscreen.isOpen = true;\n fullscreen.setButtonText();\n }\n });\n const unbindDestroy = addEvent(chart, 'destroy', unbindChange);\n fullscreen.unbindFullscreenEvent = () => {\n unbindChange();\n unbindDestroy();\n };\n const promise = chart.renderTo[fullscreen.browserProps.requestFullscreen]();\n if (promise) {\n promise['catch'](function () {\n alert(// eslint-disable-line no-alert\n 'Full screen is not supported inside a frame.');\n });\n }\n }\n });\n }\n /**\n * Replaces the exporting context button's text when toogling the\n * fullscreen mode.\n *\n * @private\n *\n * @since 8.0.1\n *\n * @requires modules/full-screen\n */\n setButtonText() {\n const chart = this.chart, exportDivElements = chart.exportDivElements, exportingOptions = chart.options.exporting, menuItems = (exportingOptions &&\n exportingOptions.buttons &&\n exportingOptions.buttons.contextButton.menuItems), lang = chart.options.lang;\n if (exportingOptions &&\n exportingOptions.menuItemDefinitions &&\n lang &&\n lang.exitFullscreen &&\n lang.viewFullscreen &&\n menuItems &&\n exportDivElements) {\n const exportDivElement = exportDivElements[menuItems.indexOf('viewFullscreen')];\n if (exportDivElement) {\n highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(exportDivElement, !this.isOpen ?\n (exportingOptions.menuItemDefinitions.viewFullscreen\n .text ||\n lang.viewFullscreen) : lang.exitFullscreen);\n }\n }\n }\n /**\n * Toggles displaying the chart in fullscreen mode.\n * By default, when the exporting module is enabled, a context button with\n * a drop down menu in the upper right corner accesses this function.\n * Exporting module required.\n *\n * @since 8.0.1\n *\n * @sample highcharts/members/chart-togglefullscreen/\n * Toggle fullscreen mode from a HTML button\n *\n * @function Highcharts.Fullscreen#toggle\n * @requires modules/full-screen\n */\n toggle() {\n const fullscreen = this;\n if (!fullscreen.isOpen) {\n fullscreen.open();\n }\n else {\n fullscreen.close();\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Exporting_Fullscreen = (Fullscreen);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * Gets fired when closing the fullscreen\n *\n * @callback Highcharts.FullScreenfullscreenCloseCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * The chart on which the event occurred.\n *\n * @param {global.Event} event\n * The event that occurred.\n */\n/**\n * Gets fired when opening the fullscreen\n *\n * @callback Highcharts.FullScreenfullscreenOpenCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * The chart on which the event occurred.\n *\n * @param {global.Event} event\n * The event that occurred.\n */\n(''); // Keeps doclets above separated from following code\n/* *\n *\n * API Options\n *\n * */\n/**\n * Fires when a fullscreen is closed through the context menu item,\n * or a fullscreen is closed on the `Escape` button click,\n * or the `Chart.fullscreen.close` method.\n *\n * @sample highcharts/chart/events-fullscreen\n * Title size change on fullscreen open\n *\n * @type {Highcharts.FullScreenfullscreenCloseCallbackFunction}\n * @since 10.1.0\n * @context Highcharts.Chart\n * @requires modules/full-screen\n * @apioption chart.events.fullscreenClose\n */\n/**\n * Fires when a fullscreen is opened through the context menu item,\n * or the `Chart.fullscreen.open` method.\n *\n * @sample highcharts/chart/events-fullscreen\n * Title size change on fullscreen open\n *\n * @type {Highcharts.FullScreenfullscreenOpenCallbackFunction}\n * @since 10.1.0\n * @context Highcharts.Chart\n * @requires modules/full-screen\n * @apioption chart.events.fullscreenOpen\n */\n(''); // Keeps doclets above in transpiled file\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"HttpUtilities\"],\"commonjs\":[\"highcharts\",\"HttpUtilities\"],\"commonjs2\":[\"highcharts\",\"HttpUtilities\"],\"root\":[\"Highcharts\",\"HttpUtilities\"]}\nvar highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_ = __webpack_require__(156);\nvar highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_default = /*#__PURE__*/__webpack_require__.n(highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_);\n;// ./code/es-modules/Extensions/Exporting/Exporting.js\n/* *\n *\n * Exporting module\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\n\nconst { defaultOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n\nconst { doc: Exporting_doc, SVG_NS, win: Exporting_win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { addEvent: Exporting_addEvent, css, createElement, discardElement, extend, find, fireEvent: Exporting_fireEvent, isObject, merge, objectEach, pick, removeEvent, splat, uniqueKey } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Composition\n *\n * */\nvar Exporting;\n(function (Exporting) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n // These CSS properties are not inlined. Remember camelCase.\n const inlineDenylist = [\n /-/, // In Firefox, both hyphened and camelCased names are listed\n /^(clipPath|cssText|d|height|width)$/, // Full words\n /^font$/, // More specific props are set\n /[lL]ogical(Width|Height)$/,\n /^parentRule$/,\n /^(cssRules|ownerRules)$/, // #19516 read-only properties\n /perspective/,\n /TapHighlightColor/,\n /^transition/,\n /^length$/, // #7700\n /^\\d+$/ // #17538\n ];\n // These ones are translated to attributes rather than styles\n const inlineToAttributes = [\n 'fill',\n 'stroke',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeWidth',\n 'textAnchor',\n 'x',\n 'y'\n ];\n Exporting.inlineAllowlist = [];\n const unstyledElements = [\n 'clipPath',\n 'defs',\n 'desc'\n ];\n /* *\n *\n * Variables\n *\n * */\n let printingChart;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add the export button to the chart, with options.\n *\n * @private\n * @function Highcharts.Chart#addButton\n * @param {Highcharts.NavigationButtonOptions} options\n * @requires modules/exporting\n */\n function addButton(options) {\n const chart = this, renderer = chart.renderer, btnOptions = merge(chart.options.navigation.buttonOptions, options), onclick = btnOptions.onclick, menuItems = btnOptions.menuItems, symbolSize = btnOptions.symbolSize || 12;\n let symbol;\n if (!chart.btnCount) {\n chart.btnCount = 0;\n }\n // Keeps references to the button elements\n if (!chart.exportDivElements) {\n chart.exportDivElements = [];\n chart.exportSVGElements = [];\n }\n if (btnOptions.enabled === false || !btnOptions.theme) {\n return;\n }\n const theme = chart.styledMode ? {} : btnOptions.theme;\n let callback;\n if (onclick) {\n callback = function (e) {\n if (e) {\n e.stopPropagation();\n }\n onclick.call(chart, e);\n };\n }\n else if (menuItems) {\n callback = function (e) {\n // Consistent with onclick call (#3495)\n if (e) {\n e.stopPropagation();\n }\n chart.contextMenu(button.menuClassName, menuItems, button.translateX || 0, button.translateY || 0, button.width || 0, button.height || 0, button);\n button.setState(2);\n };\n }\n if (btnOptions.text && btnOptions.symbol) {\n theme.paddingLeft = pick(theme.paddingLeft, 30);\n }\n else if (!btnOptions.text) {\n extend(theme, {\n width: btnOptions.width,\n height: btnOptions.height,\n padding: 0\n });\n }\n const button = renderer\n .button(btnOptions.text, 0, 0, callback, theme, void 0, void 0, void 0, void 0, btnOptions.useHTML)\n .addClass(options.className)\n .attr({\n title: pick(chart.options.lang[btnOptions._titleKey || btnOptions.titleKey], '')\n });\n button.menuClassName = (options.menuClassName ||\n 'highcharts-menu-' + chart.btnCount++);\n if (btnOptions.symbol) {\n symbol = renderer\n .symbol(btnOptions.symbol, Math.round((btnOptions.symbolX || 0) - (symbolSize / 2)), Math.round((btnOptions.symbolY || 0) - (symbolSize / 2)), symbolSize, symbolSize\n // If symbol is an image, scale it (#7957)\n , {\n width: symbolSize,\n height: symbolSize\n })\n .addClass('highcharts-button-symbol')\n .attr({\n zIndex: 1\n })\n .add(button);\n if (!chart.styledMode) {\n symbol.attr({\n stroke: btnOptions.symbolStroke,\n fill: btnOptions.symbolFill,\n 'stroke-width': btnOptions.symbolStrokeWidth || 1\n });\n }\n }\n button\n .add(chart.exportingGroup)\n .align(extend(btnOptions, {\n width: button.width,\n x: pick(btnOptions.x, chart.buttonOffset) // #1654\n }), true, 'spacingBox');\n chart.buttonOffset += (((button.width || 0) + btnOptions.buttonSpacing) *\n (btnOptions.align === 'right' ? -1 : 1));\n chart.exportSVGElements.push(button, symbol);\n }\n /**\n * Clean up after printing a chart.\n *\n * @function Highcharts#afterPrint\n *\n * @private\n *\n * @param {Highcharts.Chart} chart\n * Chart that was (or suppose to be) printed\n *\n * @emits Highcharts.Chart#event:afterPrint\n */\n function afterPrint() {\n const chart = this;\n if (!chart.printReverseInfo) {\n return void 0;\n }\n const { childNodes, origDisplay, resetParams } = chart.printReverseInfo;\n // Put the chart back in\n chart.moveContainers(chart.renderTo);\n // Restore all body content\n [].forEach.call(childNodes, function (node, i) {\n if (node.nodeType === 1) {\n node.style.display = (origDisplay[i] || '');\n }\n });\n chart.isPrinting = false;\n // Reset printMaxWidth\n if (resetParams) {\n chart.setSize.apply(chart, resetParams);\n }\n delete chart.printReverseInfo;\n printingChart = void 0;\n Exporting_fireEvent(chart, 'afterPrint');\n }\n /**\n * Prepare chart and document before printing a chart.\n *\n * @function Highcharts#beforePrint\n *\n * @private\n *\n *\n * @emits Highcharts.Chart#event:beforePrint\n */\n function beforePrint() {\n const chart = this, body = Exporting_doc.body, printMaxWidth = chart.options.exporting.printMaxWidth, printReverseInfo = {\n childNodes: body.childNodes,\n origDisplay: [],\n resetParams: void 0\n };\n chart.isPrinting = true;\n chart.pointer?.reset(void 0, 0);\n Exporting_fireEvent(chart, 'beforePrint');\n // Handle printMaxWidth\n const handleMaxWidth = printMaxWidth &&\n chart.chartWidth > printMaxWidth;\n if (handleMaxWidth) {\n printReverseInfo.resetParams = [\n chart.options.chart.width,\n void 0,\n false\n ];\n chart.setSize(printMaxWidth, void 0, false);\n }\n // Hide all body content\n [].forEach.call(printReverseInfo.childNodes, function (node, i) {\n if (node.nodeType === 1) {\n printReverseInfo.origDisplay[i] = node.style.display;\n node.style.display = 'none';\n }\n });\n // Pull out the chart\n chart.moveContainers(body);\n // Storage details for undo action after printing\n chart.printReverseInfo = printReverseInfo;\n }\n /**\n * @private\n */\n function chartCallback(chart) {\n const composition = chart;\n composition.renderExporting();\n Exporting_addEvent(chart, 'redraw', composition.renderExporting);\n // Destroy the export elements at chart destroy\n Exporting_addEvent(chart, 'destroy', composition.destroyExport);\n // Uncomment this to see a button directly below the chart, for quick\n // testing of export\n /*\n let button, viewImage, viewSource;\n if (!chart.renderer.forExport) {\n viewImage = function () {\n let div = doc.createElement('div');\n div.innerHTML = chart.getSVGForExport();\n chart.renderTo.parentNode.appendChild(div);\n };\n\n viewSource = function () {\n let pre = doc.createElement('pre');\n pre.innerHTML = chart.getSVGForExport()\n .replace(//g, '>');\n chart.renderTo.parentNode.appendChild(pre);\n };\n\n viewImage();\n\n // View SVG Image\n button = doc.createElement('button');\n button.innerHTML = 'View SVG Image';\n chart.renderTo.parentNode.appendChild(button);\n button.onclick = viewImage;\n\n // View SVG Source\n button = doc.createElement('button');\n button.innerHTML = 'View SVG Source';\n chart.renderTo.parentNode.appendChild(button);\n button.onclick = viewSource;\n }\n //*/\n }\n /**\n * @private\n */\n function compose(ChartClass, SVGRendererClass) {\n Exporting_ExportingSymbols.compose(SVGRendererClass);\n Exporting_Fullscreen.compose(ChartClass);\n const chartProto = ChartClass.prototype;\n if (!chartProto.exportChart) {\n chartProto.afterPrint = afterPrint;\n chartProto.exportChart = exportChart;\n chartProto.inlineStyles = inlineStyles;\n chartProto.print = print;\n chartProto.sanitizeSVG = sanitizeSVG;\n chartProto.getChartHTML = getChartHTML;\n chartProto.getSVG = getSVG;\n chartProto.getSVGForExport = getSVGForExport;\n chartProto.getFilename = getFilename;\n chartProto.moveContainers = moveContainers;\n chartProto.beforePrint = beforePrint;\n chartProto.contextMenu = contextMenu;\n chartProto.addButton = addButton;\n chartProto.destroyExport = destroyExport;\n chartProto.renderExporting = renderExporting;\n chartProto.callbacks.push(chartCallback);\n Exporting_addEvent(ChartClass, 'init', onChartInit);\n Exporting_addEvent(ChartClass, 'layOutTitle', onChartLayOutTitle);\n if ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari) {\n Exporting_win.matchMedia('print').addListener(function (mqlEvent) {\n if (!printingChart) {\n return void 0;\n }\n if (mqlEvent.matches) {\n printingChart.beforePrint();\n }\n else {\n printingChart.afterPrint();\n }\n });\n }\n defaultOptions.exporting = merge(Exporting_ExportingDefaults.exporting, defaultOptions.exporting);\n defaultOptions.lang = merge(Exporting_ExportingDefaults.lang, defaultOptions.lang);\n // Buttons and menus are collected in a separate config option set\n // called 'navigation'. This can be extended later to add control\n // buttons like zoom and pan right click menus.\n defaultOptions.navigation = merge(Exporting_ExportingDefaults.navigation, defaultOptions.navigation);\n }\n }\n Exporting.compose = compose;\n /**\n * Display a popup menu for choosing the export type.\n *\n * @private\n * @function Highcharts.Chart#contextMenu\n * @param {string} className\n * An identifier for the menu.\n * @param {Array} items\n * A collection with text and onclicks for the items.\n * @param {number} x\n * The x position of the opener button\n * @param {number} y\n * The y position of the opener button\n * @param {number} width\n * The width of the opener button\n * @param {number} height\n * The height of the opener button\n * @requires modules/exporting\n */\n function contextMenu(className, items, x, y, width, height, button) {\n const chart = this, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className, \n // For mouse leave detection\n menuPadding = Math.max(width, height);\n let innerMenu, menu = chart[cacheName];\n // Create the menu only the first time\n if (!menu) {\n // Create a HTML element above the SVG\n chart.exportContextMenu = chart[cacheName] = menu =\n createElement('div', {\n className: className\n }, {\n position: 'absolute',\n zIndex: 1000,\n padding: menuPadding + 'px',\n pointerEvents: 'auto',\n ...chart.renderer.style\n }, chart.scrollablePlotArea?.fixedDiv || chart.container);\n innerMenu = createElement('ul', { className: 'highcharts-menu' }, chart.styledMode ? {} : {\n listStyle: 'none',\n margin: 0,\n padding: 0\n }, menu);\n // Presentational CSS\n if (!chart.styledMode) {\n css(innerMenu, extend({\n MozBoxShadow: '3px 3px 10px #888',\n WebkitBoxShadow: '3px 3px 10px #888',\n boxShadow: '3px 3px 10px #888'\n }, navOptions.menuStyle));\n }\n // Hide on mouse out\n menu.hideMenu = function () {\n css(menu, { display: 'none' });\n if (button) {\n button.setState(0);\n }\n chart.openMenu = false;\n // #10361, #9998\n css(chart.renderTo, { overflow: 'hidden' });\n css(chart.container, { overflow: 'hidden' });\n highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(menu.hideTimer);\n Exporting_fireEvent(chart, 'exportMenuHidden');\n };\n // Hide the menu some time after mouse leave (#1357)\n chart.exportEvents.push(Exporting_addEvent(menu, 'mouseleave', function () {\n menu.hideTimer = Exporting_win.setTimeout(menu.hideMenu, 500);\n }), Exporting_addEvent(menu, 'mouseenter', function () {\n highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(menu.hideTimer);\n }), \n // Hide it on clicking or touching outside the menu (#2258,\n // #2335, #2407)\n Exporting_addEvent(Exporting_doc, 'mouseup', function (e) {\n if (!chart.pointer?.inClass(e.target, className)) {\n menu.hideMenu();\n }\n }), Exporting_addEvent(menu, 'click', function () {\n if (chart.openMenu) {\n menu.hideMenu();\n }\n }));\n // Create the items\n items.forEach(function (item) {\n if (typeof item === 'string') {\n item = chart.options.exporting\n .menuItemDefinitions[item];\n }\n if (isObject(item, true)) {\n let element;\n if (item.separator) {\n element = createElement('hr', void 0, void 0, innerMenu);\n }\n else {\n // When chart initialized with the table, wrong button\n // text displayed, #14352.\n if (item.textKey === 'viewData' &&\n chart.isDataTableVisible) {\n item.textKey = 'hideData';\n }\n element = createElement('li', {\n className: 'highcharts-menu-item',\n onclick: function (e) {\n if (e) { // IE7\n e.stopPropagation();\n }\n menu.hideMenu();\n if (typeof item !== 'string' && item.onclick) {\n item.onclick.apply(chart, arguments);\n }\n }\n }, void 0, innerMenu);\n highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(element, item.text ||\n chart.options.lang[item.textKey]);\n if (!chart.styledMode) {\n element.onmouseover = function () {\n css(this, navOptions.menuItemHoverStyle);\n };\n element.onmouseout = function () {\n css(this, navOptions.menuItemStyle);\n };\n css(element, extend({\n cursor: 'pointer'\n }, navOptions.menuItemStyle || {}));\n }\n }\n // Keep references to menu divs to be able to destroy them\n chart.exportDivElements.push(element);\n }\n });\n // Keep references to menu and innerMenu div to be able to destroy\n // them\n chart.exportDivElements.push(innerMenu, menu);\n chart.exportMenuWidth = menu.offsetWidth;\n chart.exportMenuHeight = menu.offsetHeight;\n }\n const menuStyle = { display: 'block' };\n // If outside right, right align it\n if (x + (chart.exportMenuWidth || 0) > chartWidth) {\n menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';\n }\n else {\n menuStyle.left = (x - menuPadding) + 'px';\n }\n // If outside bottom, bottom align it\n if (y + height + (chart.exportMenuHeight || 0) > chartHeight &&\n button.alignOptions?.verticalAlign !== 'top') {\n menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';\n }\n else {\n menuStyle.top = (y + height - menuPadding) + 'px';\n }\n css(menu, menuStyle);\n // #10361, #9998\n css(chart.renderTo, { overflow: '' });\n css(chart.container, { overflow: '' });\n chart.openMenu = true;\n Exporting_fireEvent(chart, 'exportMenuShown');\n }\n /**\n * Destroy the export buttons.\n * @private\n * @function Highcharts.Chart#destroyExport\n * @param {global.Event} [e]\n * @requires modules/exporting\n */\n function destroyExport(e) {\n const chart = e ? e.target : this, exportSVGElements = chart.exportSVGElements, exportDivElements = chart.exportDivElements, exportEvents = chart.exportEvents;\n let cacheName;\n // Destroy the extra buttons added\n if (exportSVGElements) {\n exportSVGElements.forEach((elem, i) => {\n // Destroy and null the svg elements\n if (elem) { // #1822\n elem.onclick = elem.ontouchstart = null;\n cacheName = 'cache-' + elem.menuClassName;\n if (chart[cacheName]) {\n delete chart[cacheName];\n }\n exportSVGElements[i] = elem.destroy();\n }\n });\n exportSVGElements.length = 0;\n }\n // Destroy the exporting group\n if (chart.exportingGroup) {\n chart.exportingGroup.destroy();\n delete chart.exportingGroup;\n }\n // Destroy the divs for the menu\n if (exportDivElements) {\n exportDivElements.forEach(function (elem, i) {\n if (elem) {\n // Remove the event handler\n highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(elem.hideTimer); // #5427\n removeEvent(elem, 'mouseleave');\n // Remove inline events\n // (chart.exportDivElements as any)[i] =\n exportDivElements[i] =\n elem.onmouseout =\n elem.onmouseover =\n elem.ontouchstart =\n elem.onclick = null;\n // Destroy the div by moving to garbage bin\n discardElement(elem);\n }\n });\n exportDivElements.length = 0;\n }\n if (exportEvents) {\n exportEvents.forEach(function (unbind) {\n unbind();\n });\n exportEvents.length = 0;\n }\n }\n /**\n * Exporting module required. Submit an SVG version of the chart to a server\n * along with some parameters for conversion.\n *\n * @sample highcharts/members/chart-exportchart/\n * Export with no options\n * @sample highcharts/members/chart-exportchart-filename/\n * PDF type and custom filename\n * @sample highcharts/members/chart-exportchart-custom-background/\n * Different chart background in export\n * @sample stock/members/chart-exportchart/\n * Export with Highcharts Stock\n *\n * @function Highcharts.Chart#exportChart\n *\n * @param {Highcharts.ExportingOptions} exportingOptions\n * Exporting options in addition to those defined in\n * [exporting](https://api.highcharts.com/highcharts/exporting).\n *\n * @param {Highcharts.Options} chartOptions\n * Additional chart options for the exported chart. For example a\n * different background color can be added here, or `dataLabels` for\n * export only.\n *\n * @requires modules/exporting\n */\n function exportChart(exportingOptions, chartOptions) {\n const svg = this.getSVGForExport(exportingOptions, chartOptions);\n // Merge the options\n exportingOptions = merge(this.options.exporting, exportingOptions);\n // Do the post\n highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_default().post(exportingOptions.url, {\n filename: exportingOptions.filename ?\n exportingOptions.filename.replace(/\\//g, '-') :\n this.getFilename(),\n type: exportingOptions.type,\n width: exportingOptions.width,\n scale: exportingOptions.scale,\n svg: svg\n }, exportingOptions.fetchOptions);\n }\n /**\n * Return the unfiltered innerHTML of the chart container. Used as hook for\n * plugins. In styled mode, it also takes care of inlining CSS style rules.\n *\n * @see Chart#getSVG\n *\n * @function Highcharts.Chart#getChartHTML\n *\n * @return {string}\n * The unfiltered SVG of the chart.\n *\n * @requires modules/exporting\n */\n function getChartHTML(applyStyleSheets) {\n if (applyStyleSheets) {\n this.inlineStyles();\n }\n return this.container.innerHTML;\n }\n /**\n * Get the default file name used for exported charts. By default it creates\n * a file name based on the chart title.\n *\n * @function Highcharts.Chart#getFilename\n *\n * @return {string} A file name without extension.\n *\n * @requires modules/exporting\n */\n function getFilename() {\n const s = this.userOptions.title && this.userOptions.title.text;\n let filename = this.options.exporting.filename;\n if (filename) {\n return filename.replace(/\\//g, '-');\n }\n if (typeof s === 'string') {\n filename = s\n .toLowerCase()\n .replace(/<\\/?[^>]+(>|$)/g, '') // Strip HTML tags\n .replace(/[\\s_]+/g, '-')\n .replace(/[^a-z\\d\\-]/g, '') // Preserve only latin\n .replace(/^[\\-]+/g, '') // Dashes in the start\n .replace(/[\\-]+/g, '-') // Dashes in a row\n .substr(0, 24)\n .replace(/[\\-]+$/g, ''); // Dashes in the end;\n }\n if (!filename || filename.length < 5) {\n filename = 'chart';\n }\n return filename;\n }\n /**\n * Return an SVG representation of the chart.\n *\n * @sample highcharts/members/chart-getsvg/\n * View the SVG from a button\n *\n * @function Highcharts.Chart#getSVG\n *\n * @param {Highcharts.Options} [chartOptions]\n * Additional chart options for the generated SVG representation. For\n * collections like `xAxis`, `yAxis` or `series`, the additional\n * options is either merged in to the original item of the same\n * `id`, or to the first item if a common id is not found.\n *\n * @return {string}\n * The SVG representation of the rendered chart.\n *\n * @emits Highcharts.Chart#event:getSVG\n *\n * @requires modules/exporting\n */\n function getSVG(chartOptions) {\n const chart = this;\n let svg, seriesOptions, \n // Copy the options and add extra options\n options = merge(chart.options, chartOptions);\n // Use userOptions to make the options chain in series right (#3881)\n options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions && chartOptions.plotOptions);\n // ... and likewise with time, avoid that undefined time properties are\n // merged over legacy global time options\n options.time = merge(chart.userOptions.time, chartOptions && chartOptions.time);\n // Create a sandbox where a new chart will be generated\n const sandbox = createElement('div', null, {\n position: 'absolute',\n top: '-9999em',\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, Exporting_doc.body);\n // Get the source size\n const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting.sourceWidth ||\n options.chart.width ||\n (/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||\n (options.isGantt ? 800 : 600), sourceHeight = options.exporting.sourceHeight ||\n options.chart.height ||\n (/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||\n 400;\n // Override some options\n extend(options.chart, {\n animation: false,\n renderTo: sandbox,\n forExport: true,\n renderer: 'SVGRenderer',\n width: sourceWidth,\n height: sourceHeight\n });\n options.exporting.enabled = false; // Hide buttons in print\n delete options.data; // #3004\n // prepare for replicating the chart\n options.series = [];\n chart.series.forEach(function (serie) {\n seriesOptions = merge(serie.userOptions, {\n animation: false, // Turn off animation\n enableMouseTracking: false,\n showCheckbox: false,\n visible: serie.visible\n });\n // Used for the navigator series that has its own option set\n if (!seriesOptions.isInternal) {\n options.series.push(seriesOptions);\n }\n });\n const colls = {};\n chart.axes.forEach(function (axis) {\n // Assign an internal key to ensure a one-to-one mapping (#5924)\n if (!axis.userOptions.internalKey) { // #6444\n axis.userOptions.internalKey = uniqueKey();\n }\n if (!axis.options.isInternal) {\n if (!colls[axis.coll]) {\n colls[axis.coll] = true;\n options[axis.coll] = [];\n }\n options[axis.coll].push(merge(axis.userOptions, {\n visible: axis.visible,\n // Force some options that could have be set directly on\n // the axis while missing in the userOptions or options.\n type: axis.type,\n uniqueNames: axis.uniqueNames\n }));\n }\n });\n // Make sure the `colorAxis` object of the `defaultOptions` isn't used\n // in the chart copy's user options, because a color axis should only be\n // added when the user actually applies it.\n options.colorAxis = chart.userOptions.colorAxis;\n // Generate the chart copy\n const chartCopy = new chart.constructor(options, chart.callback);\n // Axis options and series options (#2022, #3900, #5982)\n if (chartOptions) {\n ['xAxis', 'yAxis', 'series'].forEach(function (coll) {\n const collOptions = {};\n if (chartOptions[coll]) {\n collOptions[coll] = chartOptions[coll];\n chartCopy.update(collOptions);\n }\n });\n }\n // Reflect axis extremes in the export (#5924)\n chart.axes.forEach(function (axis) {\n const axisCopy = find(chartCopy.axes, (copy) => copy.options.internalKey === axis.userOptions.internalKey);\n if (axisCopy) {\n const extremes = axis.getExtremes(), \n // Make sure min and max overrides in the\n // `exporting.chartOptions.xAxis` settings are reflected.\n // These should override user-set extremes via zooming,\n // scrollbar etc (#7873).\n exportOverride = splat(chartOptions?.[axis.coll] || {})[0], userMin = 'min' in exportOverride ?\n exportOverride.min :\n extremes.userMin, userMax = 'max' in exportOverride ?\n exportOverride.max :\n extremes.userMax;\n if (((typeof userMin !== 'undefined' &&\n userMin !== axisCopy.min) || (typeof userMax !== 'undefined' &&\n userMax !== axisCopy.max))) {\n axisCopy.setExtremes(userMin ?? void 0, userMax ?? void 0, true, false);\n }\n }\n });\n // Get the SVG from the container's innerHTML\n svg = chartCopy.getChartHTML(chart.styledMode ||\n options.exporting?.applyStyleSheets);\n Exporting_fireEvent(this, 'getSVG', { chartCopy: chartCopy });\n svg = chart.sanitizeSVG(svg, options);\n // Free up memory\n options = null;\n chartCopy.destroy();\n discardElement(sandbox);\n return svg;\n }\n /**\n * @private\n * @function Highcharts.Chart#getSVGForExport\n */\n function getSVGForExport(options, chartOptions) {\n const chartExportingOptions = this.options.exporting;\n return this.getSVG(merge({ chart: { borderRadius: 0 } }, chartExportingOptions.chartOptions, chartOptions, {\n exporting: {\n sourceWidth: ((options && options.sourceWidth) ||\n chartExportingOptions.sourceWidth),\n sourceHeight: ((options && options.sourceHeight) ||\n chartExportingOptions.sourceHeight)\n }\n }));\n }\n /**\n * Make hyphenated property names out of camelCase\n * @private\n * @param {string} prop\n * Property name in camelCase\n * @return {string}\n * Hyphenated property name\n */\n function hyphenate(prop) {\n return prop.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n });\n }\n /**\n * Analyze inherited styles from stylesheets and add them inline\n *\n * @private\n * @function Highcharts.Chart#inlineStyles\n *\n * @todo What are the border styles for text about? In general, text has a\n * lot of properties.\n *\n * @todo Make it work with IE9 and IE10.\n *\n * @requires modules/exporting\n */\n function inlineStyles() {\n const denylist = inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE\n defaultStyles = {};\n let dummySVG;\n // Create an iframe where we read default styles without pollution from\n // this body\n const iframe = Exporting_doc.createElement('iframe');\n css(iframe, {\n width: '1px',\n height: '1px',\n visibility: 'hidden'\n });\n Exporting_doc.body.appendChild(iframe);\n const iframeDoc = (iframe.contentWindow && iframe.contentWindow.document);\n if (iframeDoc) {\n iframeDoc.body.appendChild(iframeDoc.createElementNS(SVG_NS, 'svg'));\n }\n /**\n * Call this on all elements and recurse to children\n * @private\n * @param {Highcharts.HTMLDOMElement} node\n * Element child\n */\n function recurse(node) {\n const filteredStyles = {};\n let styles, parentStyles, dummy, denylisted, allowlisted, i;\n /**\n * Check computed styles and whether they are in the allow/denylist\n * for styles or attributes.\n * @private\n * @param {string} val\n * Style value\n * @param {string} prop\n * Style property name\n */\n function filterStyles(val, prop) {\n // Check against allowlist & denylist\n denylisted = allowlisted = false;\n if (allowlist.length) {\n // Styled mode in IE has a allowlist instead. Exclude all\n // props not in this list.\n i = allowlist.length;\n while (i-- && !allowlisted) {\n allowlisted = allowlist[i].test(prop);\n }\n denylisted = !allowlisted;\n }\n // Explicitly remove empty transforms\n if (prop === 'transform' && val === 'none') {\n denylisted = true;\n }\n i = denylist.length;\n while (i-- && !denylisted) {\n if (prop.length > 1000 /* RegexLimits.shortLimit */) {\n throw new Error('Input too long');\n }\n denylisted = (denylist[i].test(prop) ||\n typeof val === 'function');\n }\n if (!denylisted) {\n // If parent node has the same style, it gets inherited, no\n // need to inline it. Top-level props should be diffed\n // against parent (#7687).\n if ((parentStyles[prop] !== val ||\n node.nodeName === 'svg') &&\n defaultStyles[node.nodeName][prop] !== val) {\n // Attributes\n if (!inlineToAttributes ||\n inlineToAttributes.indexOf(prop) !== -1) {\n if (val) {\n node.setAttribute(hyphenate(prop), val);\n }\n // Styles\n }\n else {\n filteredStyles[prop] = val;\n }\n }\n }\n }\n if (iframeDoc &&\n node.nodeType === 1 &&\n unstyledElements.indexOf(node.nodeName) === -1) {\n styles = Exporting_win.getComputedStyle(node, null);\n parentStyles = node.nodeName === 'svg' ?\n {} :\n Exporting_win.getComputedStyle(node.parentNode, null);\n // Get default styles from the browser so that we don't have to\n // add these\n if (!defaultStyles[node.nodeName]) {\n /*\n If (!dummySVG) {\n dummySVG = doc.createElementNS(H.SVG_NS, 'svg');\n dummySVG.setAttribute('version', '1.1');\n doc.body.appendChild(dummySVG);\n }\n */\n dummySVG = iframeDoc.getElementsByTagName('svg')[0];\n dummy = iframeDoc.createElementNS(node.namespaceURI, node.nodeName);\n dummySVG.appendChild(dummy);\n // Get the defaults into a standard object (simple merge\n // won't do)\n const s = Exporting_win.getComputedStyle(dummy, null), defaults = {};\n for (const key in s) {\n if (key.length < 1000 /* RegexLimits.shortLimit */ &&\n typeof s[key] === 'string' &&\n !/^\\d+$/.test(key)) {\n defaults[key] = s[key];\n }\n }\n defaultStyles[node.nodeName] = defaults;\n // Remove default fill, otherwise text disappears when\n // exported\n if (node.nodeName === 'text') {\n delete defaultStyles.text.fill;\n }\n dummySVG.removeChild(dummy);\n }\n // Loop through all styles and add them inline if they are ok\n for (const p in styles) {\n if (\n // Some browsers put lots of styles on the prototype...\n (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isFirefox ||\n (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ||\n (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari || // #16902\n // ... Chrome puts them on the instance\n Object.hasOwnProperty.call(styles, p)) {\n filterStyles(styles[p], p);\n }\n }\n // Apply styles\n css(node, filteredStyles);\n // Set default stroke width (needed at least for IE)\n if (node.nodeName === 'svg') {\n node.setAttribute('stroke-width', '1px');\n }\n if (node.nodeName === 'text') {\n return;\n }\n // Recurse\n [].forEach.call(node.children || node.childNodes, recurse);\n }\n }\n /**\n * Remove the dummy objects used to get defaults\n * @private\n */\n function tearDown() {\n dummySVG.parentNode.removeChild(dummySVG);\n // Remove trash from DOM that stayed after each exporting\n iframe.parentNode.removeChild(iframe);\n }\n recurse(this.container.querySelector('svg'));\n tearDown();\n }\n /**\n * Move the chart container(s) to another div.\n *\n * @function Highcharts#moveContainers\n *\n * @private\n *\n * @param {Highcharts.HTMLDOMElement} moveTo\n * Move target\n */\n function moveContainers(moveTo) {\n const { scrollablePlotArea } = this;\n (\n // When scrollablePlotArea is active (#9533)\n scrollablePlotArea ?\n [\n scrollablePlotArea.fixedDiv,\n scrollablePlotArea.scrollingContainer\n ] :\n [this.container]).forEach(function (div) {\n moveTo.appendChild(div);\n });\n }\n /**\n * Add update methods to handle chart.update and chart.exporting.update and\n * chart.navigation.update. These must be added to the chart instance rather\n * than the Chart prototype in order to use the chart instance inside the\n * update function.\n * @private\n */\n function onChartInit() {\n const chart = this, \n /**\n * @private\n * @param {\"exporting\"|\"navigation\"} prop\n * Property name in option root\n * @param {Highcharts.ExportingOptions|Highcharts.NavigationOptions} options\n * Options to update\n * @param {boolean} [redraw=true]\n * Whether to redraw\n */\n update = (prop, options, redraw) => {\n chart.isDirtyExporting = true;\n merge(true, chart.options[prop], options);\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n chart.exporting = {\n update: function (options, redraw) {\n update('exporting', options, redraw);\n }\n };\n // Register update() method for navigation. Cannot be set the same way\n // as for exporting, because navigation options are shared with bindings\n // which has separate update() logic.\n Chart_ChartNavigationComposition\n .compose(chart).navigation\n .addUpdate((options, redraw) => {\n update('navigation', options, redraw);\n });\n }\n /**\n * On layout of titles (title, subtitle and caption), adjust the `alignTo``\n * box to avoid the context menu button.\n * @private\n */\n function onChartLayOutTitle({ alignTo, key, textPxLength }) {\n const exportingOptions = this.options.exporting, { align, buttonSpacing = 0, verticalAlign, width = 0 } = merge(this.options.navigation?.buttonOptions, exportingOptions?.buttons?.contextButton), space = alignTo.width - textPxLength, widthAdjust = width + buttonSpacing;\n if ((exportingOptions?.enabled ?? true) &&\n key === 'title' &&\n align === 'right' &&\n verticalAlign === 'top') {\n if (space < 2 * widthAdjust) {\n if (space < widthAdjust) {\n alignTo.width -= widthAdjust;\n }\n else if (this.title?.alignValue !== 'left') {\n alignTo.x -= widthAdjust - space / 2;\n }\n }\n }\n }\n /**\n * Exporting module required. Clears away other elements in the page and\n * prints the chart as it is displayed. By default, when the exporting\n * module is enabled, a context button with a drop down menu in the upper\n * right corner accesses this function.\n *\n * @sample highcharts/members/chart-print/\n * Print from a HTML button\n *\n * @function Highcharts.Chart#print\n *\n *\n * @emits Highcharts.Chart#event:beforePrint\n * @emits Highcharts.Chart#event:afterPrint\n *\n * @requires modules/exporting\n */\n function print() {\n const chart = this;\n if (chart.isPrinting) { // Block the button while in printing mode\n return;\n }\n printingChart = chart;\n if (!(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari) {\n chart.beforePrint();\n }\n // Give the browser time to draw WebGL content, an issue that randomly\n // appears (at least) in Chrome ~67 on the Mac (#8708).\n setTimeout(() => {\n Exporting_win.focus(); // #1510\n Exporting_win.print();\n // Allow the browser to prepare before reverting\n if (!(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari) {\n setTimeout(() => {\n chart.afterPrint();\n }, 1000);\n }\n }, 1);\n }\n /**\n * Add the buttons on chart load\n * @private\n * @function Highcharts.Chart#renderExporting\n * @requires modules/exporting\n */\n function renderExporting() {\n const chart = this, exportingOptions = chart.options.exporting, buttons = exportingOptions.buttons, isDirty = chart.isDirtyExporting || !chart.exportSVGElements;\n chart.buttonOffset = 0;\n if (chart.isDirtyExporting) {\n chart.destroyExport();\n }\n if (isDirty && exportingOptions.enabled !== false) {\n chart.exportEvents = [];\n chart.exportingGroup = chart.exportingGroup ||\n chart.renderer.g('exporting-group').attr({\n zIndex: 3 // #4955, // #8392\n }).add();\n objectEach(buttons, function (button) {\n chart.addButton(button);\n });\n chart.isDirtyExporting = false;\n }\n }\n /**\n * Exporting module only. A collection of fixes on the produced SVG to\n * account for expand properties, browser bugs.\n * Returns a cleaned SVG.\n *\n * @private\n * @function Highcharts.Chart#sanitizeSVG\n * @param {string} svg\n * SVG code to sanitize\n * @param {Highcharts.Options} options\n * Chart options to apply\n * @return {string}\n * Sanitized SVG code\n * @requires modules/exporting\n */\n function sanitizeSVG(svg, options) {\n const split = svg.indexOf('') + 6;\n let html = svg.substr(split);\n // Remove any HTML added to the container after the SVG (#894, #9087)\n svg = svg.substr(0, split);\n // Move HTML into a foreignObject\n if (options && options.exporting && options.exporting.allowHTML) {\n if (html) {\n html = '' +\n '' +\n // Some tags needs to be closed in xhtml (#13726)\n html.replace(/(<(?:img|br).*?(?=\\>))>/g, '$1 />') +\n '' +\n '';\n svg = svg.replace('', html + '');\n }\n }\n svg = svg\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(/|undefined}\n*/ /**\n* Indicates a separator line instead of an item.\n*\n* @name Highcharts.ExportingMenuObject#separator\n* @type {boolean|undefined}\n*/\n/**\n * Possible MIME types for exporting.\n *\n * @typedef {\"image/png\"|\"image/jpeg\"|\"application/pdf\"|\"image/svg+xml\"} Highcharts.ExportingMimeTypeValue\n */\n(''); // Keeps doclets above in transpiled file\n/* *\n *\n * API Options\n *\n * */\n/**\n * Fires after a chart is printed through the context menu item or the\n * `Chart.print` method.\n *\n * @sample highcharts/chart/events-beforeprint-afterprint/\n * Rescale the chart to print\n *\n * @type {Highcharts.ExportingAfterPrintCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Chart\n * @requires modules/exporting\n * @apioption chart.events.afterPrint\n */\n/**\n * Fires before a chart is printed through the context menu item or\n * the `Chart.print` method.\n *\n * @sample highcharts/chart/events-beforeprint-afterprint/\n * Rescale the chart to print\n *\n * @type {Highcharts.ExportingBeforePrintCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Chart\n * @requires modules/exporting\n * @apioption chart.events.beforePrint\n */\n(''); // Keeps doclets above in transpiled file\n\n;// ./code/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Declarations\n *\n * */\nconst OfflineExportingDefaults = {\n libURL: 'https://code.highcharts.com/12.1.2/lib/',\n // When offline-exporting is loaded, redefine the menu item definitions\n // related to download.\n menuItemDefinitions: {\n downloadPNG: {\n textKey: 'downloadPNG',\n onclick: function () {\n this.exportChartLocal();\n }\n },\n downloadJPEG: {\n textKey: 'downloadJPEG',\n onclick: function () {\n this.exportChartLocal({\n type: 'image/jpeg'\n });\n }\n },\n downloadSVG: {\n textKey: 'downloadSVG',\n onclick: function () {\n this.exportChartLocal({\n type: 'image/svg+xml'\n });\n }\n },\n downloadPDF: {\n textKey: 'downloadPDF',\n onclick: function () {\n this.exportChartLocal({\n type: 'application/pdf'\n });\n }\n }\n }\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const OfflineExporting_OfflineExportingDefaults = (OfflineExportingDefaults);\n\n;// ./code/es-modules/Extensions/OfflineExporting/OfflineExporting.js\n/* *\n *\n * Client side exporting module\n *\n * (c) 2015 Torstein Honsi / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\nconst { defaultOptions: OfflineExporting_defaultOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { downloadURL: OfflineExporting_downloadURL } = Extensions_DownloadURL;\n\n\nconst { doc: OfflineExporting_doc, win: OfflineExporting_win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { ajax } = (highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_default());\n\n\nconst { addEvent: OfflineExporting_addEvent, error, extend: OfflineExporting_extend, fireEvent: OfflineExporting_fireEvent, merge: OfflineExporting_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nhighcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().allowedAttributes.push('data-z-index', 'fill-opacity', 'filter', 'rx', 'ry', 'stroke-dasharray', 'stroke-linejoin', 'stroke-opacity', 'text-anchor', 'transform', 'version', 'viewBox', 'visibility', 'xmlns', 'xmlns:xlink');\nhighcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().allowedTags.push('desc', 'clippath', 'g');\n/* *\n *\n * Composition\n *\n * */\nvar OfflineExporting;\n(function (OfflineExporting) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n // Dummy object so we can reuse our canvas-tools.js without errors\n OfflineExporting.CanVGRenderer = {}, OfflineExporting.domurl = OfflineExporting_win.URL || OfflineExporting_win.webkitURL || OfflineExporting_win, \n // Milliseconds to defer image load event handlers to offset IE bug\n OfflineExporting.loadEventDeferDelay = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ? 150 : 0;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extends OfflineExporting with Chart.\n * @private\n */\n function compose(ChartClass) {\n const chartProto = ChartClass.prototype;\n if (!chartProto.exportChartLocal) {\n chartProto.getSVGForLocalExport = getSVGForLocalExport;\n chartProto.exportChartLocal = exportChartLocal;\n // Extend the default options to use the local exporter logic\n OfflineExporting_merge(true, OfflineExporting_defaultOptions.exporting, OfflineExporting_OfflineExportingDefaults);\n }\n return ChartClass;\n }\n OfflineExporting.compose = compose;\n /**\n * Get data URL to an image of an SVG and call download on it options\n * object:\n * - **filename:** Name of resulting downloaded file without extension.\n * Default is `chart`.\n *\n * - **type:** File type of resulting download. Default is `image/png`.\n *\n * - **scale:** Scaling factor of downloaded image compared to source.\n * Default is `1`.\n * - **libURL:** URL pointing to location of dependency scripts to download\n * on demand. Default is the exporting.libURL option of the global\n * Highcharts options pointing to our server.\n *\n * @function Highcharts.downloadSVGLocal\n *\n * @param {string} svg\n * The generated SVG\n *\n * @param {Highcharts.ExportingOptions} options\n * The exporting options\n *\n * @param {Function} failCallback\n * The callback function in case of errors\n *\n * @param {Function} [successCallback]\n * The callback function in case of success\n *\n */\n function downloadSVGLocal(svg, options, failCallback, successCallback) {\n const dummySVGContainer = OfflineExporting_doc.createElement('div'), imageType = options.type || 'image/png', filename = ((options.filename || 'chart') +\n '.' +\n (imageType === 'image/svg+xml' ?\n 'svg' : imageType.split('/')[1])), scale = options.scale || 1;\n let svgurl, blob, finallyHandler, libURL = (options.libURL || OfflineExporting_defaultOptions.exporting.libURL), objectURLRevoke = true, pdfFont = options.pdfFont;\n // Allow libURL to end with or without fordward slash\n libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL;\n /*\n * Detect if we need to load TTF fonts for the PDF, then load them and\n * proceed.\n *\n * @private\n */\n const loadPdfFonts = (svgElement, callback) => {\n const hasNonASCII = (s) => (\n // eslint-disable-next-line no-control-regex\n /[^\\u0000-\\u007F\\u200B]+/.test(s));\n // Register an event in order to add the font once jsPDF is\n // initialized\n const addFont = (variant, base64) => {\n OfflineExporting_win.jspdf.jsPDF.API.events.push([\n 'initialized',\n function () {\n this.addFileToVFS(variant, base64);\n this.addFont(variant, 'HighchartsFont', variant);\n if (!this.getFontList().HighchartsFont) {\n this.setFont('HighchartsFont');\n }\n }\n ]);\n };\n // If there are no non-ASCII characters in the SVG, do not use\n // bother downloading the font files\n if (pdfFont && !hasNonASCII(svgElement.textContent || '')) {\n pdfFont = void 0;\n }\n // Add new font if the URL is declared, #6417.\n const variants = ['normal', 'italic', 'bold', 'bolditalic'];\n // Shift the first element off the variants and add as a font.\n // Then asynchronously trigger the next variant until calling the\n // callback when the variants are empty.\n let normalBase64;\n const shiftAndLoadVariant = () => {\n const variant = variants.shift();\n // All variants shifted and possibly loaded, proceed\n if (!variant) {\n return callback();\n }\n const url = pdfFont && pdfFont[variant];\n if (url) {\n ajax({\n url,\n responseType: 'blob',\n success: (data, xhr) => {\n const reader = new FileReader();\n reader.onloadend = function () {\n if (typeof this.result === 'string') {\n const base64 = this.result.split(',')[1];\n addFont(variant, base64);\n if (variant === 'normal') {\n normalBase64 = base64;\n }\n }\n shiftAndLoadVariant();\n };\n reader.readAsDataURL(xhr.response);\n },\n error: shiftAndLoadVariant\n });\n }\n else {\n // For other variants, fall back to normal text weight/style\n if (normalBase64) {\n addFont(variant, normalBase64);\n }\n shiftAndLoadVariant();\n }\n };\n shiftAndLoadVariant();\n };\n /*\n * @private\n */\n const downloadPDF = () => {\n highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(dummySVGContainer, svg);\n const textElements = dummySVGContainer.getElementsByTagName('text'), \n // Copy style property to element from parents if it's not\n // there. Searches up hierarchy until it finds prop, or hits the\n // chart container.\n setStylePropertyFromParents = function (el, propName) {\n let curParent = el;\n while (curParent && curParent !== dummySVGContainer) {\n if (curParent.style[propName]) {\n let value = curParent.style[propName];\n if (propName === 'fontSize' && /em$/.test(value)) {\n value = Math.round(parseFloat(value) * 16) + 'px';\n }\n el.style[propName] = value;\n break;\n }\n curParent = curParent.parentNode;\n }\n };\n let titleElements, outlineElements;\n // Workaround for the text styling. Making sure it does pick up\n // settings for parent elements.\n [].forEach.call(textElements, function (el) {\n // Workaround for the text styling. making sure it does pick up\n // the root element\n ['fontFamily', 'fontSize']\n .forEach((property) => {\n setStylePropertyFromParents(el, property);\n });\n el.style.fontFamily = pdfFont && pdfFont.normal ?\n // Custom PDF font\n 'HighchartsFont' :\n // Generic font (serif, sans-serif etc)\n String(el.style.fontFamily &&\n el.style.fontFamily.split(' ').splice(-1));\n // Workaround for plotband with width, removing title from text\n // nodes\n titleElements = el.getElementsByTagName('title');\n [].forEach.call(titleElements, function (titleElement) {\n el.removeChild(titleElement);\n });\n // Remove all .highcharts-text-outline elements, #17170\n outlineElements =\n el.getElementsByClassName('highcharts-text-outline');\n while (outlineElements.length > 0) {\n const outline = outlineElements[0];\n if (outline.parentNode) {\n outline.parentNode.removeChild(outline);\n }\n }\n });\n const svgNode = dummySVGContainer.querySelector('svg');\n if (svgNode) {\n loadPdfFonts(svgNode, () => {\n svgToPdf(svgNode, 0, scale, (pdfData) => {\n try {\n OfflineExporting_downloadURL(pdfData, filename);\n if (successCallback) {\n successCallback();\n }\n }\n catch (e) {\n failCallback(e);\n }\n });\n });\n }\n };\n // Initiate download depending on file type\n if (imageType === 'image/svg+xml') {\n // SVG download. In this case, we want to use Microsoft specific\n // Blob if available\n try {\n if (typeof OfflineExporting_win.MSBlobBuilder !== 'undefined') {\n blob = new OfflineExporting_win.MSBlobBuilder();\n blob.append(svg);\n svgurl = blob.getBlob('image/svg+xml');\n }\n else {\n svgurl = svgToDataUrl(svg);\n }\n OfflineExporting_downloadURL(svgurl, filename);\n if (successCallback) {\n successCallback();\n }\n }\n catch (e) {\n failCallback(e);\n }\n }\n else if (imageType === 'application/pdf') {\n if (OfflineExporting_win.jspdf && OfflineExporting_win.jspdf.jsPDF) {\n downloadPDF();\n }\n else {\n // Must load pdf libraries first. // Don't destroy the object\n // URL yet since we are doing things asynchronously. A cleaner\n // solution would be nice, but this will do for now.\n objectURLRevoke = true;\n getScript(libURL + 'jspdf.js', function () {\n getScript(libURL + 'svg2pdf.js', downloadPDF);\n });\n }\n }\n else {\n // PNG/JPEG download - create bitmap from SVG\n svgurl = svgToDataUrl(svg);\n finallyHandler = function () {\n try {\n OfflineExporting.domurl.revokeObjectURL(svgurl);\n }\n catch (e) {\n // Ignore\n }\n };\n // First, try to get PNG by rendering on canvas\n imageToDataUrl(svgurl, imageType, {}, scale, function (imageURL) {\n // Success\n try {\n OfflineExporting_downloadURL(imageURL, filename);\n if (successCallback) {\n successCallback();\n }\n }\n catch (e) {\n failCallback(e);\n }\n }, function () {\n if (svg.length > 100000000 /* RegexLimits.svgLimit */) {\n throw new Error('Input too long');\n }\n // Failed due to tainted canvas\n // Create new and untainted canvas\n const canvas = OfflineExporting_doc.createElement('canvas'), ctx = canvas.getContext('2d'), matchedImageWidth = svg.match(\n // eslint-disable-next-line max-len\n /^]*\\s{,1000}width\\s{,1000}=\\s{,1000}\\\"?(\\d+)\\\"?[^>]*>/), matchedImageHeight = svg.match(\n // eslint-disable-next-line max-len\n /^]*\\s{0,1000}height\\s{,1000}=\\s{,1000}\\\"?(\\d+)\\\"?[^>]*>/);\n if (ctx && matchedImageWidth && matchedImageHeight) {\n const imageWidth = +matchedImageWidth[1] * scale, imageHeight = +matchedImageHeight[1] * scale, downloadWithCanVG = () => {\n const v = OfflineExporting_win.canvg.Canvg.fromString(ctx, svg);\n v.start();\n try {\n OfflineExporting_downloadURL(OfflineExporting_win.navigator.msSaveOrOpenBlob ?\n canvas.msToBlob() :\n canvas.toDataURL(imageType), filename);\n if (successCallback) {\n successCallback();\n }\n }\n catch (e) {\n failCallback(e);\n }\n finally {\n finallyHandler();\n }\n };\n canvas.width = imageWidth;\n canvas.height = imageHeight;\n if (OfflineExporting_win.canvg) {\n // Use preloaded canvg\n downloadWithCanVG();\n }\n else {\n // Must load canVG first.\n // Don't destroy the object URL yet since we are\n // doing things asynchronously. A cleaner solution\n // would be nice, but this will do for now.\n objectURLRevoke = true;\n getScript(libURL + 'canvg.js', downloadWithCanVG);\n }\n }\n }, \n // No canvas support\n failCallback, \n // Failed to load image\n failCallback, \n // Finally\n function () {\n if (objectURLRevoke) {\n finallyHandler();\n }\n });\n }\n }\n OfflineExporting.downloadSVGLocal = downloadSVGLocal;\n /* eslint-disable valid-jsdoc */\n /**\n * Exporting and offline-exporting modules required. Export a chart to\n * an image locally in the user's browser.\n *\n * @function Highcharts.Chart#exportChartLocal\n *\n * @param {Highcharts.ExportingOptions} [exportingOptions]\n * Exporting options, the same as in\n * {@link Highcharts.Chart#exportChart}.\n *\n * @param {Highcharts.Options} [chartOptions]\n * Additional chart options for the exported chart. For example\n * a different background color can be added here, or\n * `dataLabels` for export only.\n *\n *\n * @requires modules/exporting\n * @requires modules/offline-exporting\n */\n function exportChartLocal(exportingOptions, chartOptions) {\n const chart = this, options = OfflineExporting_merge(chart.options.exporting, exportingOptions), fallbackToExportServer = function (err) {\n if (options.fallbackToExportServer === false) {\n if (options.error) {\n options.error(options, err);\n }\n else {\n error(28, true); // Fallback disabled\n }\n }\n else {\n chart.exportChart(options);\n }\n }, svgSuccess = function (svg) {\n // If SVG contains foreignObjects PDF fails in all browsers\n // and all exports except SVG will fail in IE, as both CanVG\n // and svg2pdf choke on this. Gracefully fall back.\n if (svg.indexOf(' -1 &&\n options.type !== 'image/svg+xml' &&\n ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS || options.type === 'application/pdf')) {\n fallbackToExportServer(new Error('Image type not supported for charts with embedded HTML'));\n }\n else {\n OfflineExporting.downloadSVGLocal(svg, OfflineExporting_extend({ filename: chart.getFilename() }, options), fallbackToExportServer, () => OfflineExporting_fireEvent(chart, 'exportChartLocalSuccess'));\n }\n }, \n // Return true if the SVG contains images with external data. With\n // the boost module there are `image` elements with encoded PNGs,\n // these are supported by svg2pdf and should pass (#10243).\n hasExternalImages = function () {\n return [].some.call(chart.container.getElementsByTagName('image'), function (image) {\n const href = image.getAttribute('href');\n return (href !== '' &&\n typeof href === 'string' &&\n href.indexOf('data:') !== 0);\n });\n };\n // If we are on IE and in styled mode, add an allowlist to the renderer\n // for inline styles that we want to pass through. There are so many\n // styles by default in IE that we don't want to denylist them all.\n if ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS && chart.styledMode && !Exporting_Exporting.inlineAllowlist.length) {\n Exporting_Exporting.inlineAllowlist.push(/^blockSize/, /^border/, /^caretColor/, /^color/, /^columnRule/, /^columnRuleColor/, /^cssFloat/, /^cursor/, /^fill$/, /^fillOpacity/, /^font/, /^inlineSize/, /^length/, /^lineHeight/, /^opacity/, /^outline/, /^parentRule/, /^rx$/, /^ry$/, /^stroke/, /^textAlign/, /^textAnchor/, /^textDecoration/, /^transform/, /^vectorEffect/, /^visibility/, /^x$/, /^y$/);\n }\n // Always fall back on:\n // - MS browsers: Embedded images JPEG/PNG, or any PDF\n // - Embedded images and PDF\n if (((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS &&\n (options.type === 'application/pdf' ||\n chart.container.getElementsByTagName('image').length &&\n options.type !== 'image/svg+xml')) || (options.type === 'application/pdf' &&\n hasExternalImages())) {\n fallbackToExportServer(new Error('Image type not supported for this chart/browser.'));\n return;\n }\n chart.getSVGForLocalExport(options, chartOptions || {}, fallbackToExportServer, svgSuccess);\n }\n /**\n * Downloads a script and executes a callback when done.\n *\n * @private\n * @function getScript\n * @param {string} scriptLocation\n * @param {Function} callback\n */\n function getScript(scriptLocation, callback) {\n const head = OfflineExporting_doc.getElementsByTagName('head')[0], script = OfflineExporting_doc.createElement('script');\n script.type = 'text/javascript';\n script.src = scriptLocation;\n script.onload = callback;\n script.onerror = function () {\n error('Error loading script ' + scriptLocation);\n };\n head.appendChild(script);\n }\n OfflineExporting.getScript = getScript;\n /**\n * Get SVG of chart prepared for client side export. This converts\n * embedded images in the SVG to data URIs. It requires the regular\n * exporting module. The options and chartOptions arguments are passed\n * to the getSVGForExport function.\n *\n * @private\n * @function Highcharts.Chart#getSVGForLocalExport\n * @param {Highcharts.ExportingOptions} options\n * @param {Highcharts.Options} chartOptions\n * @param {Function} failCallback\n * @param {Function} successCallback\n */\n function getSVGForLocalExport(options, chartOptions, failCallback, successCallback) {\n const chart = this, \n // After grabbing the SVG of the chart's copy container we need\n // to do sanitation on the SVG\n sanitize = (svg) => chart.sanitizeSVG(svg, chartCopyOptions), \n // When done with last image we have our SVG\n checkDone = () => {\n if (images && imagesEmbedded === imagesLength) {\n successCallback(sanitize(chartCopyContainer.innerHTML));\n }\n }, \n // Success handler, we converted image to base64!\n embeddedSuccess = (imageURL, imageType, callbackArgs) => {\n ++imagesEmbedded;\n // Change image href in chart copy\n callbackArgs.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageURL);\n checkDone();\n };\n let el, chartCopyContainer, chartCopyOptions, href = null, images, imagesLength = 0, imagesEmbedded = 0;\n // Hook into getSVG to get a copy of the chart copy's\n // container (#8273)\n chart.unbindGetSVG = OfflineExporting_addEvent(chart, 'getSVG', (e) => {\n chartCopyOptions = e.chartCopy.options;\n chartCopyContainer = e.chartCopy.container.cloneNode(true);\n images = chartCopyContainer && chartCopyContainer\n .getElementsByTagName('image') || [];\n imagesLength = images.length;\n });\n // Trigger hook to get chart copy\n chart.getSVGForExport(options, chartOptions);\n try {\n // If there are no images to embed, the SVG is okay now.\n if (!images || !images.length) {\n // Use SVG of chart copy\n successCallback(sanitize(chartCopyContainer.innerHTML));\n return;\n }\n // Go through the images we want to embed\n for (let i = 0; i < images.length; i++) {\n el = images[i];\n href = el.getAttributeNS('http://www.w3.org/1999/xlink', 'href');\n if (href) {\n OfflineExporting.imageToDataUrl(href, 'image/png', { imageElement: el }, options.scale, embeddedSuccess, \n // Tainted canvas\n failCallback, \n // No canvas support\n failCallback, \n // Failed to load source\n failCallback);\n // Hidden, boosted series have blank href (#10243)\n }\n else {\n imagesEmbedded++;\n el.parentNode.removeChild(el);\n i--;\n checkDone();\n }\n }\n }\n catch (e) {\n failCallback(e);\n }\n // Clean up\n chart.unbindGetSVG();\n }\n /**\n * Get data:URL from image URL. Pass in callbacks to handle results.\n *\n * @private\n * @function Highcharts.imageToDataUrl\n *\n * @param {string} imageURL\n *\n * @param {string} imageType\n *\n * @param {*} callbackArgs\n * callbackArgs is used only by callbacks.\n *\n * @param {number} scale\n *\n * @param {Function} successCallback\n * Receives four arguments: imageURL, imageType, callbackArgs,\n * and scale.\n *\n * @param {Function} taintedCallback\n * Receives four arguments: imageURL, imageType, callbackArgs,\n * and scale.\n *\n * @param {Function} noCanvasSupportCallback\n * Receives four arguments: imageURL, imageType, callbackArgs,\n * and scale.\n *\n * @param {Function} failedLoadCallback\n * Receives four arguments: imageURL, imageType, callbackArgs,\n * and scale.\n *\n * @param {Function} [finallyCallback]\n * finallyCallback is always called at the end of the process. All\n * callbacks receive four arguments: imageURL, imageType,\n * callbackArgs, and scale.\n */\n function imageToDataUrl(imageURL, imageType, callbackArgs, scale, successCallback, taintedCallback, noCanvasSupportCallback, failedLoadCallback, finallyCallback) {\n let img = new OfflineExporting_win.Image(), taintedHandler;\n const loadHandler = () => {\n setTimeout(function () {\n const canvas = OfflineExporting_doc.createElement('canvas'), ctx = canvas.getContext && canvas.getContext('2d');\n let dataURL;\n try {\n if (!ctx) {\n noCanvasSupportCallback(imageURL, imageType, callbackArgs, scale);\n }\n else {\n canvas.height = img.height * scale;\n canvas.width = img.width * scale;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n // Now we try to get the contents of the canvas.\n try {\n dataURL = canvas.toDataURL(imageType);\n successCallback(dataURL, imageType, callbackArgs, scale);\n }\n catch (e) {\n taintedHandler(imageURL, imageType, callbackArgs, scale);\n }\n }\n }\n finally {\n if (finallyCallback) {\n finallyCallback(imageURL, imageType, callbackArgs, scale);\n }\n }\n // IE bug where image is not always ready despite calling load\n // event.\n }, OfflineExporting.loadEventDeferDelay);\n }, \n // Image load failed (e.g. invalid URL)\n errorHandler = () => {\n failedLoadCallback(imageURL, imageType, callbackArgs, scale);\n if (finallyCallback) {\n finallyCallback(imageURL, imageType, callbackArgs, scale);\n }\n };\n // This is called on load if the image drawing to canvas failed with a\n // security error. We retry the drawing with crossOrigin set to\n // Anonymous.\n taintedHandler = () => {\n img = new OfflineExporting_win.Image();\n taintedHandler = taintedCallback;\n // Must be set prior to loading image source\n img.crossOrigin = 'Anonymous';\n img.onload = loadHandler;\n img.onerror = errorHandler;\n img.src = imageURL;\n };\n img.onload = loadHandler;\n img.onerror = errorHandler;\n img.src = imageURL;\n }\n OfflineExporting.imageToDataUrl = imageToDataUrl;\n /**\n * Get blob URL from SVG code. Falls back to normal data URI.\n *\n * @private\n * @function Highcharts.svgToDataURL\n */\n function svgToDataUrl(svg) {\n // Webkit and not chrome\n const userAgent = OfflineExporting_win.navigator.userAgent;\n const webKit = (userAgent.indexOf('WebKit') > -1 &&\n userAgent.indexOf('Chrome') < 0);\n try {\n // Safari requires data URI since it doesn't allow navigation to\n // blob URLs. ForeignObjects also don't work well in Blobs in Chrome\n // (#14780).\n if (!webKit && svg.indexOf(' width ? 'p' : 'l', 'pt', [width, height]);\n // Workaround for #7090, hidden elements were drawn anyway. It comes\n // down to https://github.com/yWorks/svg2pdf.js/issues/28. Check this\n // later.\n [].forEach.call(svgElement.querySelectorAll('*[visibility=\"hidden\"]'), function (node) {\n node.parentNode.removeChild(node);\n });\n // Workaround for #13948, multiple stops in linear gradient set to 0\n // causing error in Acrobat\n const gradients = svgElement.querySelectorAll('linearGradient');\n for (let index = 0; index < gradients.length; index++) {\n const gradient = gradients[index];\n const stops = gradient.querySelectorAll('stop');\n let i = 0;\n while (i < stops.length &&\n stops[i].getAttribute('offset') === '0' &&\n stops[i + 1].getAttribute('offset') === '0') {\n stops[i].remove();\n i++;\n }\n }\n // Workaround for #15135, zero width spaces, which Highcharts uses\n // to break lines, are not correctly rendered in PDF. Replace it\n // with a regular space and offset by some pixels to compensate.\n [].forEach.call(svgElement.querySelectorAll('tspan'), (tspan) => {\n if (tspan.textContent === '\\u200B') {\n tspan.textContent = ' ';\n tspan.setAttribute('dx', -5);\n }\n });\n pdfDoc.svg(svgElement, {\n x: 0,\n y: 0,\n width,\n height,\n removeInvalid: true\n }).then(() => callback(pdfDoc.output('datauristring')));\n }\n OfflineExporting.svgToPdf = svgToPdf;\n})(OfflineExporting || (OfflineExporting = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const OfflineExporting_OfflineExporting = (OfflineExporting);\n\n;// ./code/es-modules/masters/modules/offline-exporting.src.js\n\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n// Compatibility\nG.dataURLtoBlob = G.dataURLtoBlob || Extensions_DownloadURL.dataURLtoBlob;\nG.downloadSVGLocal = OfflineExporting_OfflineExporting.downloadSVGLocal;\nG.downloadURL = G.downloadURL || Extensions_DownloadURL.downloadURL;\n// Compose\nOfflineExporting_OfflineExporting.compose(G.Chart);\n/* harmony default export */ const offline_exporting_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","define","amd","amd1","window","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__660__","__WEBPACK_EXTERNAL_MODULE__960__","__WEBPACK_EXTERNAL_MODULE__156__","ChartNavigationComposition","ExportingSymbols","Exporting","OfflineExporting","__webpack_modules__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","offline_exporting_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","isSafari","win","document","doc","domurl","URL","webkitURL","dataURLtoBlob","dataURL","parts","replace","match","length","atob","ArrayBuffer","Uint8Array","Blob","createObjectURL","binStr","buf","binary","i","charCodeAt","Extensions_DownloadURL","downloadURL","filename","nav","navigator","createElement","String","msSaveOrOpenBlob","userAgent","Error","isOldEdgeBrowser","test","safariBlob","indexOf","download","href","body","appendChild","click","removeChild","open","location","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default","compose","chart","navigation","Additions","constructor","updates","addUpdate","updateFn","push","update","options","redraw","forEach","Chart_ChartNavigationComposition","isTouchDevice","Exporting_ExportingDefaults","exporting","allowTableSorting","type","url","pdfFont","normal","bold","bolditalic","italic","printMaxWidth","scale","buttons","contextButton","className","menuClassName","symbol","titleKey","menuItems","y","menuItemDefinitions","viewFullscreen","textKey","onclick","fullscreen","toggle","printChart","print","separator","downloadPNG","exportChart","downloadJPEG","downloadPDF","downloadSVG","lang","exitFullscreen","contextButtonTitle","buttonOptions","symbolSize","symbolX","symbolY","align","buttonSpacing","height","verticalAlign","width","symbolFill","symbolStroke","symbolStrokeWidth","theme","fill","padding","stroke","menuStyle","border","borderRadius","background","menuItemStyle","color","fontSize","transition","menuItemHoverStyle","modifiedClasses","menu","x","menuball","h","path","concat","circle","SVGRendererClass","symbols","bind","Exporting_ExportingSymbols","composed","addEvent","fireEvent","pushUnique","onChartBeforeRender","Fullscreen","ChartClass","isOpen","container","renderTo","browserProps","requestFullscreen","fullscreenChange","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","close","optionsChart","ownerDocument","Document","unbindFullscreenEvent","setSize","origWidth","origHeight","origWidthOption","origHeightOption","setButtonText","chartWidth","chartHeight","unbindChange","unbindDestroy","promise","alert","exportDivElements","exportingOptions","exportDivElement","setElementHTML","text","highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_","highcharts_HttpUtilities_commonjs_highcharts_HttpUtilities_commonjs2_highcharts_HttpUtilities_root_Highcharts_HttpUtilities_default","defaultOptions","Exporting_doc","SVG_NS","Exporting_win","Exporting_addEvent","css","discardElement","extend","find","Exporting_fireEvent","isObject","merge","objectEach","pick","removeEvent","splat","uniqueKey","printingChart","inlineDenylist","inlineToAttributes","inlineAllowlist","unstyledElements","addButton","callback","renderer","btnOptions","btnCount","exportSVGElements","enabled","styledMode","e","stopPropagation","contextMenu","button","translateX","translateY","setState","paddingLeft","useHTML","addClass","attr","title","_titleKey","Math","round","zIndex","add","exportingGroup","buttonOffset","afterPrint","printReverseInfo","childNodes","origDisplay","resetParams","moveContainers","node","nodeType","style","display","isPrinting","apply","beforePrint","pointer","reset","chartCallback","composition","renderExporting","destroyExport","items","navOptions","cacheName","menuPadding","max","innerMenu","exportContextMenu","position","pointerEvents","scrollablePlotArea","fixedDiv","listStyle","margin","MozBoxShadow","WebkitBoxShadow","boxShadow","hideMenu","openMenu","overflow","clearTimeout","hideTimer","exportEvents","setTimeout","inClass","target","item","element","isDataTableVisible","arguments","onmouseover","onmouseout","cursor","exportMenuWidth","offsetWidth","exportMenuHeight","offsetHeight","right","left","alignOptions","bottom","top","elem","ontouchstart","destroy","unbind","chartOptions","svg","getSVGForExport","post","getFilename","fetchOptions","getChartHTML","applyStyleSheets","inlineStyles","innerHTML","s","userOptions","toLowerCase","substr","getSVG","seriesOptions","plotOptions","time","sandbox","cssWidth","cssHeight","sourceWidth","parseInt","isGantt","sourceHeight","animation","forExport","data","series","serie","enableMouseTracking","showCheckbox","visible","isInternal","colls","axes","axis","internalKey","coll","uniqueNames","colorAxis","chartCopy","collOptions","axisCopy","copy","extremes","getExtremes","exportOverride","userMin","min","userMax","setExtremes","sanitizeSVG","chartExportingOptions","dummySVG","allowlist","defaultStyles","iframe","visibility","iframeDoc","contentWindow","createElementNS","recurse","styles","parentStyles","dummy","denylisted","allowlisted","filteredStyles","nodeName","getComputedStyle","parentNode","getElementsByTagName","namespaceURI","defaults","p","isFirefox","isMS","filterStyles","val","denylist","setAttribute","children","querySelector","moveTo","scrollingContainer","div","onChartInit","isDirtyExporting","onChartLayOutTitle","alignTo","textPxLength","space","widthAdjust","alignValue","focus","isDirty","g","split","html","allowHTML","Exporting_Fullscreen","chartProto","callbacks","matchMedia","addListener","mqlEvent","matches","Exporting_Exporting","OfflineExporting_OfflineExportingDefaults","libURL","exportChartLocal","OfflineExporting_defaultOptions","OfflineExporting_downloadURL","OfflineExporting_doc","OfflineExporting_win","ajax","OfflineExporting_addEvent","error","OfflineExporting_extend","OfflineExporting_fireEvent","OfflineExporting_merge","allowedAttributes","allowedTags","fallbackToExportServer","err","some","image","getAttribute","getSVGForLocalExport","downloadSVGLocal","getScript","scriptLocation","head","script","src","onload","onerror","failCallback","successCallback","sanitize","chartCopyOptions","checkDone","images","imagesEmbedded","imagesLength","chartCopyContainer","embeddedSuccess","imageURL","imageType","callbackArgs","imageElement","setAttributeNS","el","unbindGetSVG","cloneNode","getAttributeNS","imageToDataUrl","taintedCallback","noCanvasSupportCallback","failedLoadCallback","finallyCallback","img","Image","taintedHandler","loadHandler","canvas","ctx","getContext","drawImage","toDataURL","loadEventDeferDelay","errorHandler","crossOrigin","svgToDataUrl","webKit","encodeURIComponent","svgToPdf","svgElement","Number","pdfDoc","jspdf","jsPDF","querySelectorAll","gradients","index","stops","gradient","remove","tspan","textContent","removeInvalid","then","output","CanVGRenderer","dummySVGContainer","svgurl","blob","finallyHandler","objectURLRevoke","slice","loadPdfFonts","normalBase64","addFont","variant","base64","API","events","addFileToVFS","getFontList","HighchartsFont","setFont","variants","shiftAndLoadVariant","shift","responseType","success","xhr","reader","FileReader","onloadend","result","readAsDataURL","response","titleElements","outlineElements","textElements","setStylePropertyFromParents","propName","curParent","value","parseFloat","property","fontFamily","splice","titleElement","getElementsByClassName","outline","svgNode","pdfData","MSBlobBuilder","append","getBlob","revokeObjectURL","matchedImageWidth","matchedImageHeight","imageWidth","imageHeight","downloadWithCanVG","v","canvg","Canvg","fromString","start","msToBlob","OfflineExporting_OfflineExporting","G","Chart"],"mappings":"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"}