Hacked By AnonymousFox
{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/highcharts-more\n * @requires highcharts\n *\n * (c) 2009-2024 Torstein Honsi\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\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"Series\"], root[\"_Highcharts\"][\"Series\"][\"types\"][\"column\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"Point\"], root[\"_Highcharts\"][\"Chart\"], root[\"_Highcharts\"][\"SVGElement\"], root[\"_Highcharts\"][\"StackItem\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/highcharts-more\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"SeriesRegistry\"],amd1[\"Series\"],amd1[\"Series\"],[\"types\"],[\"column\"],amd1[\"Color\"],amd1[\"Templating\"],amd1[\"Point\"],amd1[\"Chart\"],amd1[\"SVGElement\"],amd1[\"StackItem\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/highcharts-more\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"Series\"], root[\"_Highcharts\"][\"Series\"][\"types\"][\"column\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"Point\"], root[\"_Highcharts\"][\"Chart\"], root[\"_Highcharts\"][\"SVGElement\"], root[\"_Highcharts\"][\"StackItem\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"Series\"], root[\"Highcharts\"][\"Series\"][\"types\"][\"column\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"Point\"], root[\"Highcharts\"][\"Chart\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"StackItem\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__820__, __WEBPACK_EXTERNAL_MODULE__448__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__260__, __WEBPACK_EXTERNAL_MODULE__960__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__184__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 960:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__960__;\n\n/***/ }),\n\n/***/ 620:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 260:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 28:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 448:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__448__;\n\n/***/ }),\n\n/***/ 820:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__820__;\n\n/***/ }),\n\n/***/ 512:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 184:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__184__;\n\n/***/ }),\n\n/***/ 984:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\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 */ highcharts_more_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// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\"],\"commonjs\":[\"highcharts\",\"Series\"],\"commonjs2\":[\"highcharts\",\"Series\"],\"root\":[\"Highcharts\",\"Series\"]}\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_ = __webpack_require__(820);\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default = /*#__PURE__*/__webpack_require__.n(highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_);\n;// ./code/es-modules/Series/CenteredUtilities.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 { deg2rad } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { fireEvent, isNumber, pick, relativeLength } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/**\n * @private\n */\nvar CenteredUtilities;\n(function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n const options = this.options, chart = this.chart, slicingRoom = 2 * (options.slicedOffset || 0), plotWidth = chart.plotWidth - 2 * slicingRoom, plotHeight = chart.plotHeight - 2 * slicingRoom, centerOption = options.center, smallestSize = Math.min(plotWidth, plotHeight), thickness = options.thickness;\n let handleSlicingRoom, size = options.size, innerSize = options.innerSize || 0, i, value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n const positions = [\n pick(centerOption?.[0], '50%'),\n pick(centerOption?.[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof (highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default()))) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // I == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // Inner size cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // Thickness overrides innerSize, need to be less than pie size (#6647)\n if (isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n fireEvent(this, 'afterGetCenter', { positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * GetStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n const startAngle = isNumber(start) ? start : 0, // Must be a number\n endAngle = ((isNumber(end) && // Must be a number\n end > startAngle && // Must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360), correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n})(CenteredUtilities || (CenteredUtilities = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n* @name Highcharts.RadianAngles#end\n* @type {number}\n*/ /**\n* @name Highcharts.RadianAngles#start\n* @type {number}\n*/\n''; // Keeps doclets above in JS file\n\n;// ./code/es-modules/Extensions/Pane/PaneComposition.js\n/* *\n *\n * Imports\n *\n * */\n\nconst { addEvent, correctFloat, defined, pick: PaneComposition_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/** @private */\nfunction chartGetHoverPane(eventArgs) {\n const chart = this;\n let hoverPane;\n if (eventArgs) {\n chart.pane.forEach((pane) => {\n const x = eventArgs.chartX - chart.plotLeft, y = eventArgs.chartY - chart.plotTop;\n if (isInsidePane(x, y, pane.center)) {\n hoverPane = pane;\n }\n });\n }\n return hoverPane;\n}\n/** @private */\nfunction compose(ChartClass, PointerClass) {\n const chartProto = ChartClass.prototype;\n if (!chartProto.getHoverPane) {\n chartProto.collectionsWithUpdate.push('pane');\n chartProto.getHoverPane = chartGetHoverPane;\n addEvent(ChartClass, 'afterIsInsidePlot', onChartAfterIsInsiderPlot);\n addEvent(PointerClass, 'afterGetHoverData', onPointerAfterGetHoverData);\n addEvent(PointerClass, 'beforeGetHoverData', onPointerBeforeGetHoverData);\n }\n}\n/**\n * Check whether element is inside or outside pane.\n * @private\n * @param {number} x\n * Element's x coordinate\n * @param {number} y\n * Element's y coordinate\n * @param {Array<number>} center\n * Pane's center (x, y) and diameter\n * @param {number} startAngle\n * Pane's normalized start angle in radians (<-PI, PI>)\n * @param {number} endAngle\n * Pane's normalized end angle in radians (<-PI, PI>)\n */\nfunction isInsidePane(x, y, center, startAngle, endAngle) {\n let insideSlice = true;\n const cx = center[0], cy = center[1];\n const distance = Math.sqrt(Math.pow(x - cx, 2) + Math.pow(y - cy, 2));\n if (defined(startAngle) && defined(endAngle)) {\n // Round angle to N-decimals to avoid numeric errors\n const angle = Math.atan2(correctFloat(y - cy, 8), correctFloat(x - cx, 8));\n // Ignore full circle panes:\n if (endAngle !== startAngle) {\n // If normalized start angle is bigger than normalized end,\n // it means angles have different signs. In such situation we\n // check the <-PI, startAngle> and <endAngle, PI> ranges.\n if (startAngle > endAngle) {\n insideSlice = (angle >= startAngle &&\n angle <= Math.PI) || (angle <= endAngle &&\n angle >= -Math.PI);\n }\n else {\n // In this case, we simple check if angle is within the\n // <startAngle, endAngle> range\n insideSlice = angle >= startAngle &&\n angle <= correctFloat(endAngle, 8);\n }\n }\n }\n // Round up radius because x and y values are rounded\n return distance <= Math.ceil(center[2] / 2) && insideSlice;\n}\n/**\n * Check if (x, y) position is within pane for polar.\n * @private\n */\nfunction onChartAfterIsInsiderPlot(e) {\n const chart = this;\n if (chart.polar) {\n if (e.options.inverted) {\n [e.x, e.y] = [e.y, e.x];\n }\n e.isInsidePlot = chart.pane.some((pane) => isInsidePane(e.x, e.y, pane.center, pane.axis && pane.axis.normalizedStartAngleRad, pane.axis && pane.axis.normalizedEndAngleRad));\n }\n}\n/**\n *\n */\nfunction onPointerAfterGetHoverData(eventArgs) {\n const chart = this.chart;\n if (eventArgs.hoverPoint &&\n eventArgs.hoverPoint.plotX &&\n eventArgs.hoverPoint.plotY &&\n chart.hoverPane &&\n !isInsidePane(eventArgs.hoverPoint.plotX, eventArgs.hoverPoint.plotY, chart.hoverPane.center)) {\n eventArgs.hoverPoint = void 0;\n }\n}\n/** @private */\nfunction onPointerBeforeGetHoverData(eventArgs) {\n const chart = this.chart;\n if (chart.polar) {\n // Find pane we are currently hovering over.\n chart.hoverPane = chart.getHoverPane(eventArgs);\n // Edit filter method to handle polar\n eventArgs.filter = function (s) {\n return (s.visible &&\n !(!eventArgs.shared && s.directTouch) && // #3821\n PaneComposition_pick(s.options.enableMouseTracking, true) &&\n (!chart.hoverPane || s.xAxis.pane === chart.hoverPane));\n };\n }\n else {\n chart.hoverPane = void 0;\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nconst PaneComposition = {\n compose\n};\n/* harmony default export */ const Pane_PaneComposition = (PaneComposition);\n\n;// ./code/es-modules/Extensions/Pane/PaneDefaults.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 * API Options\n *\n * */\n/**\n * An array of background items for the pane.\n *\n * @sample {highcharts} highcharts/demo/gauge-speedometer/\n * Speedometer gauge with multiple backgrounds\n *\n * @type {Array<*>}\n * @optionparent pane.background\n */\nconst background = {\n /**\n * The class name for this background.\n *\n * @sample {highcharts} highcharts/css/pane/\n * Panes styled by CSS\n * @sample {highstock} highcharts/css/pane/\n * Panes styled by CSS\n * @sample {highmaps} highcharts/css/pane/\n * Panes styled by CSS\n *\n * @type {string}\n * @default highcharts-pane\n * @since 5.0.0\n * @apioption pane.background.className\n */\n /**\n * The shape of the pane background. When `solid`, the background\n * is circular. When `arc`, the background extends only from the min\n * to the max of the value axis.\n *\n * @type {Highcharts.PaneBackgroundShapeValue}\n * @since 2.3.0\n * @product highcharts\n */\n shape: 'circle',\n /**\n * The border radius of the pane background when the shape is `arc`. Can be\n * a number (pixels) or a percentage string.\n *\n * @since 11.4.2\n * @sample highcharts/series-solidgauge/pane-borderradius\n * Circular gauge and pane with equal border radius\n * @product highcharts\n * @type {number|string}\n */\n borderRadius: 0,\n /**\n * The pixel border width of the pane background.\n *\n * @since 2.3.0\n * @product highcharts\n */\n borderWidth: 1,\n /**\n * The pane background border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.3.0\n * @product highcharts\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The background color or gradient for the pane.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default { linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, stops: [[0, #ffffff], [1, #e6e6e6]] }\n * @since 2.3.0\n * @product highcharts\n */\n backgroundColor: {\n /** @ignore-option */\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\n /** @ignore-option */\n stops: [\n [0, \"#ffffff\" /* Palette.backgroundColor */],\n [1, \"#e6e6e6\" /* Palette.neutralColor10 */]\n ]\n },\n /** @ignore-option */\n from: -Number.MAX_VALUE, // Corrected to axis min\n /**\n * The inner radius of the pane background. Can be either numeric\n * (pixels) or a percentage string.\n *\n * @type {number|string}\n * @since 2.3.0\n * @product highcharts\n */\n innerRadius: 0,\n /** @ignore-option */\n to: Number.MAX_VALUE, // Corrected to axis max\n /**\n * The outer radius of the circular pane background. Can be either\n * numeric (pixels) or a percentage string.\n *\n * @type {number|string}\n * @since 2.3.0\n * @product highcharts\n */\n outerRadius: '105%'\n};\n/**\n * The pane serves as a container for axes and backgrounds for circular\n * gauges and polar charts.\n *\n * @type {*|Array<*>}\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @optionparent pane\n */\nconst pane = {\n /**\n * The end angle of the polar X axis or gauge value axis, given in\n * degrees where 0 is north. Defaults to [startAngle](#pane.startAngle)\n * + 360.\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * VU-meter with custom start and end angle\n *\n * @type {number}\n * @since 2.3.0\n * @product highcharts\n * @apioption pane.endAngle\n */\n /**\n * The center of a polar chart or angular gauge, given as an array\n * of [x, y] positions. Positions can be given as integers that\n * transform to pixels, or as percentages of the plot area size.\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * Two gauges with different center\n *\n * @type {Array<string|number>}\n * @default [\"50%\", \"50%\"]\n * @since 2.3.0\n * @product highcharts\n */\n center: ['50%', '50%'],\n /**\n * The size of the pane, either as a number defining pixels, or a\n * percentage defining a percentage of the available plot area (the\n * smallest of the plot height or plot width).\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * Smaller size\n *\n * @type {number|string}\n * @product highcharts\n */\n size: '85%',\n /**\n * The inner size of the pane, either as a number defining pixels, or a\n * percentage defining a percentage of the pane's size.\n *\n * @sample {highcharts} highcharts/series-polar/column-inverted-inner\n * The inner size set to 20%\n *\n * @type {number|string}\n * @product highcharts\n */\n innerSize: '0%',\n /**\n * The start angle of the polar X axis or gauge axis, given in degrees\n * where 0 is north. Defaults to 0.\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * VU-meter with custom start and end angle\n *\n * @since 2.3.0\n * @product highcharts\n */\n startAngle: 0\n};\n/* *\n *\n * Default Export\n *\n * */\nconst PaneDefaults = {\n pane,\n background\n};\n/* harmony default export */ const Pane_PaneDefaults = (PaneDefaults);\n\n;// ./code/es-modules/Extensions/Pane/Pane.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\n\nconst { extend, merge, splat } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n * The Pane object allows options that are common to a set of X and Y axes.\n *\n * In the future, this can be extended to basic Highcharts and Highcharts Stock.\n *\n * @private\n * @class\n * @name Highcharts.Pane\n * @param {Highcharts.PaneOptions} options\n * @param {Highcharts.Chart} chart\n */\nclass Pane {\n /* *\n *\n * Constructor\n *\n * */\n constructor(options, chart) {\n this.coll = 'pane'; // Member of chart.pane\n this.init(options, chart);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the Pane object\n *\n * @private\n * @function Highcharts.Pane#init\n *\n * @param {Highcharts.PaneOptions} options\n *\n * @param {Highcharts.Chart} chart\n */\n init(options, chart) {\n this.chart = chart;\n this.background = [];\n chart.pane.push(this);\n this.setOptions(options);\n }\n /**\n * @private\n * @function Highcharts.Pane#setOptions\n *\n * @param {Highcharts.PaneOptions} options\n */\n setOptions(options) {\n // Set options. Angular charts have a default background (#3318)\n this.options = options = merge(Pane_PaneDefaults.pane, this.chart.angular ? { background: {} } : void 0, options);\n }\n /**\n * Render the pane with its backgrounds.\n *\n * @private\n * @function Highcharts.Pane#render\n */\n render() {\n const options = this.options, renderer = this.chart.renderer;\n if (!this.group) {\n this.group = renderer.g('pane-group')\n .attr({ zIndex: options.zIndex || 0 })\n .add();\n }\n this.updateCenter();\n let backgroundOption = this.options.background;\n // Render the backgrounds\n if (backgroundOption) {\n backgroundOption = splat(backgroundOption);\n const len = Math.max(backgroundOption.length, this.background.length || 0);\n for (let i = 0; i < len; i++) {\n // #6641 - if axis exists, chart is circular and apply\n // background\n if (backgroundOption[i] && this.axis) {\n this.renderBackground(merge(Pane_PaneDefaults.background, backgroundOption[i]), i);\n }\n else if (this.background[i]) {\n this.background[i] = this.background[i].destroy();\n this.background.splice(i, 1);\n }\n }\n }\n }\n /**\n * Render an individual pane background.\n *\n * @private\n * @function Highcharts.Pane#renderBackground\n *\n * @param {Highcharts.PaneBackgroundOptions} backgroundOptions\n * Background options\n *\n * @param {number} i\n * The index of the background in this.backgrounds\n */\n renderBackground(backgroundOptions, i) {\n const attribs = {\n 'class': 'highcharts-pane ' + (backgroundOptions.className || '')\n };\n let method = 'animate';\n if (!this.chart.styledMode) {\n extend(attribs, {\n 'fill': backgroundOptions.backgroundColor,\n 'stroke': backgroundOptions.borderColor,\n 'stroke-width': backgroundOptions.borderWidth\n });\n }\n if (!this.background[i]) {\n this.background[i] = this.chart.renderer\n .path()\n .add(this.group);\n method = 'attr';\n }\n this.background[i][method]({\n 'd': this.axis.getPlotBandPath(backgroundOptions.from, backgroundOptions.to, backgroundOptions)\n }).attr(attribs);\n }\n /**\n * Gets the center for the pane and its axis.\n *\n * @private\n * @function Highcharts.Pane#updateCenter\n * @param {Highcharts.Axis} [axis]\n */\n updateCenter(axis) {\n this.center = (axis ||\n this.axis ||\n {}).center = Series_CenteredUtilities.getCenter.call(this);\n }\n /**\n * Destroy the pane item\n *\n * @ignore\n * @private\n * @function Highcharts.Pane#destroy\n * /\n destroy: function () {\n erase(this.chart.pane, this);\n this.background.forEach(function (background) {\n background.destroy();\n });\n this.background.length = 0;\n this.group = this.group.destroy();\n },\n */\n /**\n * Update the pane item with new options\n *\n * @private\n * @function Highcharts.Pane#update\n * @param {Highcharts.PaneOptions} options\n * New pane options\n * @param {boolean} [redraw]\n */\n update(options, redraw) {\n merge(true, this.options, options);\n this.setOptions(this.options);\n this.render();\n this.chart.axes.forEach(function (axis) {\n if (axis.pane === this) {\n axis.pane = null;\n axis.update({}, redraw);\n }\n }, this);\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nPane.compose = Pane_PaneComposition.compose;\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Pane_Pane = (Pane);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * @typedef {\"arc\"|\"circle\"|\"solid\"} Highcharts.PaneBackgroundShapeValue\n */\n''; // Keeps doclets above in JS file\n\n;// ./code/es-modules/Series/AreaRange/AreaRangePoint.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 { area: { prototype: { pointClass: AreaPoint, pointClass: { prototype: areaProto } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { defined: AreaRangePoint_defined, isNumber: AreaRangePoint_isNumber } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass AreaRangePoint extends AreaPoint {\n /**\n * Range series only. The high or maximum value for each data point.\n * @name Highcharts.Point#high\n * @type {number|undefined}\n */\n /**\n * Range series only. The low or minimum value for each data point.\n * @name Highcharts.Point#low\n * @type {number|undefined}\n */\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n setState() {\n const prevState = this.state, series = this.series, isPolar = series.chart.polar;\n if (!AreaRangePoint_defined(this.plotHigh)) {\n // Boost doesn't calculate plotHigh\n this.plotHigh = series.yAxis.toPixels(this.high, true);\n }\n if (!AreaRangePoint_defined(this.plotLow)) {\n // Boost doesn't calculate plotLow\n this.plotLow = this.plotY = series.yAxis.toPixels(this.low, true);\n }\n series.lowerStateMarkerGraphic = series.stateMarkerGraphic;\n series.stateMarkerGraphic = series.upperStateMarkerGraphic;\n // Change state also for the top marker\n this.graphic = this.graphics && this.graphics[1];\n this.plotY = this.plotHigh;\n if (isPolar && AreaRangePoint_isNumber(this.plotHighX)) {\n this.plotX = this.plotHighX;\n }\n // Top state:\n areaProto.setState.apply(this, arguments);\n this.state = prevState;\n // Now restore defaults\n this.plotY = this.plotLow;\n this.graphic = this.graphics && this.graphics[0];\n if (isPolar && AreaRangePoint_isNumber(this.plotLowX)) {\n this.plotX = this.plotLowX;\n }\n series.upperStateMarkerGraphic = series.stateMarkerGraphic;\n series.stateMarkerGraphic = series.lowerStateMarkerGraphic;\n // Lower marker is stored at stateMarkerGraphic\n // to avoid reference duplication (#7021)\n series.lowerStateMarkerGraphic = void 0;\n const originalSettings = series.modifyMarkerSettings();\n // Bottom state\n areaProto.setState.apply(this, arguments);\n // Restore previous state\n series.restoreMarkerSettings(originalSettings);\n }\n haloPath() {\n const isPolar = this.series.chart.polar;\n let path = [];\n // Bottom halo\n this.plotY = this.plotLow;\n if (isPolar && AreaRangePoint_isNumber(this.plotLowX)) {\n this.plotX = this.plotLowX;\n }\n if (this.isInside) {\n path = areaProto.haloPath.apply(this, arguments);\n }\n // Top halo\n this.plotY = this.plotHigh;\n if (isPolar && AreaRangePoint_isNumber(this.plotHighX)) {\n this.plotX = this.plotHighX;\n }\n if (this.isTopInside) {\n path = path.concat(areaProto.haloPath.apply(this, arguments));\n }\n return path;\n }\n isValid() {\n return AreaRangePoint_isNumber(this.low) && AreaRangePoint_isNumber(this.high);\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const AreaRange_AreaRangePoint = (AreaRangePoint);\n\n;// ./code/es-modules/Series/AreaRange/AreaRangeSeries.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\nconst { noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { area: AreaSeries, area: { prototype: AreaRangeSeries_areaProto }, column: { prototype: columnProto } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { addEvent: AreaRangeSeries_addEvent, defined: AreaRangeSeries_defined, extend: AreaRangeSeries_extend, isArray, isNumber: AreaRangeSeries_isNumber, pick: AreaRangeSeries_pick, merge: AreaRangeSeries_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\n/**\n * The area range series is a carteseian series with higher and lower values for\n * each point along an X axis, where the area between the values is shaded.\n *\n * @sample {highcharts} highcharts/demo/arearange/\n * Area range chart\n * @sample {highstock} stock/demo/arearange/\n * Area range chart\n *\n * @extends plotOptions.area\n * @product highcharts highstock\n * @excluding stack, stacking\n * @requires highcharts-more\n * @optionparent plotOptions.arearange\n *\n * @private\n */\nconst areaRangeSeriesOptions = {\n /**\n * @see [fillColor](#plotOptions.arearange.fillColor)\n * @see [fillOpacity](#plotOptions.arearange.fillOpacity)\n *\n * @apioption plotOptions.arearange.color\n */\n /**\n * @default low\n * @apioption plotOptions.arearange.colorKey\n */\n /**\n * @see [color](#plotOptions.arearange.color)\n * @see [fillOpacity](#plotOptions.arearange.fillOpacity)\n *\n * @apioption plotOptions.arearange.fillColor\n */\n /**\n * @see [color](#plotOptions.arearange.color)\n * @see [fillColor](#plotOptions.arearange.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption plotOptions.arearange.fillOpacity\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @product highcharts\n * @apioption plotOptions.arearange.shadow\n */\n /**\n * Pixel width of the arearange graph line.\n *\n * @since 2.3.0\n *\n * @private\n */\n lineWidth: 1,\n /**\n * @type {number|null}\n */\n threshold: null,\n tooltip: {\n pointFormat: '<span style=\"color:{series.color}\">\\u25CF</span> ' +\n '{series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'\n },\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @since 2.3.0\n *\n * @private\n */\n trackByArea: true,\n /**\n * Extended data labels for range series types. Range series data\n * labels use no `x` and `y` options. Instead, they have `xLow`,\n * `xHigh`, `yLow` and `yHigh` options to allow the higher and lower\n * data label sets individually.\n *\n * @declare Highcharts.SeriesAreaRangeDataLabelsOptionsObject\n * @exclude x, y\n * @since 2.3.0\n * @product highcharts highstock\n *\n * @private\n */\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * X offset of the lower data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n xLow: 0,\n /**\n * X offset of the higher data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n xHigh: 0,\n /**\n * Y offset of the lower data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n yLow: 0,\n /**\n * Y offset of the higher data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n yHigh: 0\n }\n};\n/* *\n *\n * Class\n *\n * */\n/**\n * The AreaRange series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.arearange\n *\n * @augments Highcharts.Series\n */\nclass AreaRangeSeries extends AreaSeries {\n /* *\n *\n * Functions\n *\n * */\n toYData(point) {\n return [point.low, point.high];\n }\n /**\n * Translate a point's plotHigh from the internal angle and radius measures\n * to true plotHigh coordinates. This is an addition of the toXY method\n * found in Polar.js, because it runs too early for arearanges to be\n * considered (#3419).\n * @private\n */\n highToXY(point) {\n // Find the polar plotX and plotY\n const chart = this.chart, xy = this.xAxis.postTranslate(point.rectPlotX || 0, this.yAxis.len - (point.plotHigh || 0));\n point.plotHighX = xy.x - chart.plotLeft;\n point.plotHigh = xy.y - chart.plotTop;\n point.plotLowX = point.plotX;\n }\n /**\n * Extend the line series' getSegmentPath method by applying the segment\n * path to both lower and higher values of the range.\n * @private\n */\n getGraphPath(points) {\n const highPoints = [], highAreaPoints = [], getGraphPath = AreaRangeSeries_areaProto.getGraphPath, options = this.options, polar = this.chart.polar, connectEnds = polar && options.connectEnds !== false, connectNulls = options.connectNulls;\n let i, point, pointShim, step = options.step;\n points = points || this.points;\n // Create the top line and the top part of the area fill. The area fill\n // compensates for null points by drawing down to the lower graph,\n // moving across the null gap and starting again at the lower graph.\n i = points.length;\n while (i--) {\n point = points[i];\n // Support for polar\n const highAreaPoint = polar ? {\n plotX: point.rectPlotX,\n plotY: point.yBottom,\n doCurve: false // #5186, gaps in areasplinerange fill\n } : {\n plotX: point.plotX,\n plotY: point.plotY,\n doCurve: false // #5186, gaps in areasplinerange fill\n };\n if (!point.isNull &&\n !connectEnds &&\n !connectNulls &&\n (!points[i + 1] || points[i + 1].isNull)) {\n highAreaPoints.push(highAreaPoint);\n }\n pointShim = {\n polarPlotY: point.polarPlotY,\n rectPlotX: point.rectPlotX,\n yBottom: point.yBottom,\n // `plotHighX` is for polar charts\n plotX: AreaRangeSeries_pick(point.plotHighX, point.plotX),\n plotY: point.plotHigh,\n isNull: point.isNull\n };\n highAreaPoints.push(pointShim);\n highPoints.push(pointShim);\n if (!point.isNull &&\n !connectEnds &&\n !connectNulls &&\n (!points[i - 1] || points[i - 1].isNull)) {\n highAreaPoints.push(highAreaPoint);\n }\n }\n // Get the paths\n const lowerPath = getGraphPath.call(this, points);\n if (step) {\n if (step === true) {\n step = 'left';\n }\n options.step = {\n left: 'right',\n center: 'center',\n right: 'left'\n }[step]; // Swap for reading in getGraphPath\n }\n const higherPath = getGraphPath.call(this, highPoints);\n const higherAreaPath = getGraphPath.call(this, highAreaPoints);\n options.step = step;\n // Create a line on both top and bottom of the range\n const linePath = [].concat(lowerPath, higherPath);\n // For the area path, we need to change the 'move' statement into\n // 'lineTo'\n if (!this.chart.polar &&\n higherAreaPath[0] &&\n higherAreaPath[0][0] === 'M') {\n // This probably doesn't work for spline\n higherAreaPath[0] = [\n 'L',\n higherAreaPath[0][1],\n higherAreaPath[0][2]\n ];\n }\n this.graphPath = linePath;\n this.areaPath = lowerPath.concat(higherAreaPath);\n // Prepare for sideways animation\n linePath.isArea = true;\n linePath.xMap = lowerPath.xMap;\n this.areaPath.xMap = lowerPath.xMap;\n return linePath;\n }\n /**\n * Extend the basic drawDataLabels method by running it for both lower and\n * higher values.\n * @private\n */\n drawDataLabels() {\n const data = this.points, length = data.length, originalDataLabels = [], dataLabelOptions = this.options.dataLabels, inverted = this.chart.inverted;\n let i, point, up, upperDataLabelOptions, lowerDataLabelOptions;\n if (dataLabelOptions) {\n // Split into upper and lower options. If data labels is an array,\n // the first element is the upper label, the second is the lower.\n //\n // TODO: We want to change this and allow multiple labels for both\n // upper and lower values in the future - introducing some options\n // for which point value to use as Y for the dataLabel, so that this\n // could be handled in Series.drawDataLabels. This would also\n // improve performance since we now have to loop over all the points\n // multiple times to work around the data label logic.\n if (isArray(dataLabelOptions)) {\n upperDataLabelOptions = dataLabelOptions[0] || {\n enabled: false\n };\n lowerDataLabelOptions = dataLabelOptions[1] || {\n enabled: false\n };\n }\n else {\n // Make copies\n upperDataLabelOptions = AreaRangeSeries_extend({}, dataLabelOptions);\n upperDataLabelOptions.x = dataLabelOptions.xHigh;\n upperDataLabelOptions.y = dataLabelOptions.yHigh;\n lowerDataLabelOptions = AreaRangeSeries_extend({}, dataLabelOptions);\n lowerDataLabelOptions.x = dataLabelOptions.xLow;\n lowerDataLabelOptions.y = dataLabelOptions.yLow;\n }\n // Draw upper labels\n if (upperDataLabelOptions.enabled || this.hasDataLabels?.()) {\n // Set preliminary values for plotY and dataLabel\n // and draw the upper labels\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n const { plotHigh = 0, plotLow = 0 } = point;\n up = upperDataLabelOptions.inside ?\n plotHigh < plotLow :\n plotHigh > plotLow;\n point.y = point.high;\n point._plotY = point.plotY;\n point.plotY = plotHigh;\n // Store original data labels and set preliminary label\n // objects to be picked up in the uber method\n originalDataLabels[i] = point.dataLabel;\n point.dataLabel = point.dataLabelUpper;\n // Set the default offset\n point.below = up;\n if (inverted) {\n if (!upperDataLabelOptions.align) {\n upperDataLabelOptions.align = up ?\n 'right' : 'left';\n }\n }\n else {\n if (!upperDataLabelOptions.verticalAlign) {\n upperDataLabelOptions.verticalAlign = up ?\n 'top' :\n 'bottom';\n }\n }\n }\n }\n this.options.dataLabels = upperDataLabelOptions;\n if (AreaRangeSeries_areaProto.drawDataLabels) {\n // #1209:\n AreaRangeSeries_areaProto.drawDataLabels.apply(this, arguments);\n }\n // Reset state after the upper labels were created. Move\n // it to point.dataLabelUpper and reassign the originals.\n // We do this here to support not drawing a lower label.\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n point.dataLabelUpper = point.dataLabel;\n point.dataLabel = originalDataLabels[i];\n delete point.dataLabels;\n point.y = point.low;\n point.plotY = point._plotY;\n }\n }\n }\n // Draw lower labels\n if (lowerDataLabelOptions.enabled || this.hasDataLabels?.()) {\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n const { plotHigh = 0, plotLow = 0 } = point;\n up = lowerDataLabelOptions.inside ?\n plotHigh < plotLow :\n plotHigh > plotLow;\n // Set the default offset\n point.below = !up;\n if (inverted) {\n if (!lowerDataLabelOptions.align) {\n lowerDataLabelOptions.align = up ?\n 'left' : 'right';\n }\n }\n else {\n if (!lowerDataLabelOptions.verticalAlign) {\n lowerDataLabelOptions.verticalAlign = up ?\n 'bottom' :\n 'top';\n }\n }\n }\n }\n this.options.dataLabels = lowerDataLabelOptions;\n if (AreaRangeSeries_areaProto.drawDataLabels) {\n AreaRangeSeries_areaProto.drawDataLabels.apply(this, arguments);\n }\n }\n // Merge upper and lower into point.dataLabels for later destroying\n if (upperDataLabelOptions.enabled) {\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n point.dataLabels = [\n point.dataLabelUpper,\n point.dataLabel\n ].filter(function (label) {\n return !!label;\n });\n }\n }\n }\n // Reset options\n this.options.dataLabels = dataLabelOptions;\n }\n }\n alignDataLabel() {\n columnProto.alignDataLabel.apply(this, arguments);\n }\n modifyMarkerSettings() {\n const series = this, originalMarkerSettings = {\n marker: series.options.marker,\n symbol: series.symbol\n };\n if (series.options.lowMarker) {\n const { options: { marker, lowMarker } } = series;\n series.options.marker = AreaRangeSeries_merge(marker, lowMarker);\n if (lowMarker.symbol) {\n series.symbol = lowMarker.symbol;\n }\n }\n return originalMarkerSettings;\n }\n restoreMarkerSettings(originalSettings) {\n const series = this;\n series.options.marker = originalSettings.marker;\n series.symbol = originalSettings.symbol;\n }\n drawPoints() {\n const series = this, pointLength = series.points.length;\n let i, point;\n const originalSettings = series.modifyMarkerSettings();\n // Draw bottom points\n AreaRangeSeries_areaProto.drawPoints.apply(series, arguments);\n // Restore previous state\n series.restoreMarkerSettings(originalSettings);\n // Prepare drawing top points\n i = 0;\n while (i < pointLength) {\n point = series.points[i];\n /**\n * Array for multiple SVG graphics representing the point in the\n * chart. Only used in cases where the point can not be represented\n * by a single graphic.\n *\n * @see Highcharts.Point#graphic\n *\n * @name Highcharts.Point#graphics\n * @type {Array<Highcharts.SVGElement>|undefined}\n */\n point.graphics = point.graphics || [];\n // Save original props to be overridden by temporary props for top\n // points\n point.origProps = {\n plotY: point.plotY,\n plotX: point.plotX,\n isInside: point.isInside,\n negative: point.negative,\n zone: point.zone,\n y: point.y\n };\n if (point.graphic || point.graphics[0]) {\n point.graphics[0] = point.graphic;\n }\n point.graphic = point.graphics[1];\n point.plotY = point.plotHigh;\n if (AreaRangeSeries_defined(point.plotHighX)) {\n point.plotX = point.plotHighX;\n }\n point.y = AreaRangeSeries_pick(point.high, point.origProps.y); // #15523\n point.negative = point.y < (series.options.threshold || 0);\n if (series.zones.length) {\n point.zone = point.getZone();\n }\n if (!series.chart.polar) {\n point.isInside = point.isTopInside = (typeof point.plotY !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= series.yAxis.len && // #3519\n point.plotX >= 0 &&\n point.plotX <= series.xAxis.len);\n }\n i++;\n }\n // Draw top points\n AreaRangeSeries_areaProto.drawPoints.apply(series, arguments);\n // Reset top points preliminary modifications\n i = 0;\n while (i < pointLength) {\n point = series.points[i];\n point.graphics = point.graphics || [];\n if (point.graphic || point.graphics[1]) {\n point.graphics[1] = point.graphic;\n }\n point.graphic = point.graphics[0];\n if (point.origProps) {\n AreaRangeSeries_extend(point, point.origProps);\n delete point.origProps;\n }\n i++;\n }\n }\n hasMarkerChanged(options, oldOptions) {\n const lowMarker = options.lowMarker, oldMarker = oldOptions.lowMarker || {};\n return (lowMarker && (lowMarker.enabled === false ||\n oldMarker.symbol !== lowMarker.symbol || // #10870, #15946\n oldMarker.height !== lowMarker.height || // #16274\n oldMarker.width !== lowMarker.width // #16274\n )) || super.hasMarkerChanged(options, oldOptions);\n }\n}\n/**\n *\n * Static Properties\n *\n */\nAreaRangeSeries.defaultOptions = AreaRangeSeries_merge(AreaSeries.defaultOptions, areaRangeSeriesOptions);\nAreaRangeSeries_addEvent(AreaRangeSeries, 'afterTranslate', function () {\n // Set plotLow and plotHigh\n // Rules out lollipop, but lollipop should not inherit range series in the\n // first place\n if (this.pointArrayMap.join(',') === 'low,high') {\n this.points.forEach((point) => {\n const high = point.high, plotY = point.plotY;\n if (point.isNull) {\n point.plotY = void 0;\n }\n else {\n point.plotLow = plotY;\n // Calculate plotHigh value based on each yAxis scale (#15752)\n point.plotHigh = AreaRangeSeries_isNumber(high) ? this.yAxis.translate(this.dataModify ?\n this.dataModify.modifyValue(high) : high, false, true, void 0, true) : void 0;\n if (this.dataModify) {\n point.yBottom = point.plotHigh;\n }\n }\n });\n }\n}, { order: 0 });\nAreaRangeSeries_addEvent(AreaRangeSeries, 'afterTranslate', function () {\n this.points.forEach((point) => {\n // Postprocessing after the PolarComposition's afterTranslate\n if (this.chart.polar) {\n this.highToXY(point);\n point.plotLow = point.plotY;\n point.tooltipPos = [\n ((point.plotHighX || 0) + (point.plotLowX || 0)) / 2,\n ((point.plotHigh || 0) + (point.plotLow || 0)) / 2\n ];\n // Put the tooltip in the middle of the range\n }\n else {\n const tooltipPos = point.pos(false, point.plotLow), posHigh = point.pos(false, point.plotHigh);\n if (tooltipPos && posHigh) {\n tooltipPos[0] = (tooltipPos[0] + posHigh[0]) / 2;\n tooltipPos[1] = (tooltipPos[1] + posHigh[1]) / 2;\n }\n point.tooltipPos = tooltipPos;\n }\n });\n}, { order: 3 });\nAreaRangeSeries_extend(AreaRangeSeries.prototype, {\n deferTranslatePolar: true,\n pointArrayMap: ['low', 'high'],\n pointClass: AreaRange_AreaRangePoint,\n pointValKey: 'low',\n setStackedPoints: noop\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('arearange', AreaRangeSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const AreaRange_AreaRangeSeries = (AreaRangeSeries);\n\n;// ./code/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.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\nconst { spline: { prototype: splineProto } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { merge: AreaSplineRangeSeries_merge, extend: AreaSplineRangeSeries_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n * The areasplinerange series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areasplinerange\n *\n * @augments Highcharts.Series\n */\nclass AreaSplineRangeSeries extends AreaRange_AreaRangeSeries {\n}\n/* *\n *\n * Static Properties\n *\n * */\nAreaSplineRangeSeries.defaultOptions = AreaSplineRangeSeries_merge(AreaRange_AreaRangeSeries.defaultOptions);\nAreaSplineRangeSeries_extend(AreaSplineRangeSeries.prototype, {\n getPointSpline: splineProto.getPointSpline\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('areasplinerange', AreaSplineRangeSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const AreaSplineRange_AreaSplineRangeSeries = ((/* unused pure expression or super */ null && (AreaSplineRangeSeries)));\n/* *\n *\n * API Options\n *\n * */\n/**\n * The area spline range is a cartesian series type with higher and\n * lower Y values along an X axis. The area inside the range is colored, and\n * the graph outlining the area is a smoothed spline.\n *\n * @sample {highstock|highstock} stock/demo/areasplinerange/\n * Area spline range\n *\n * @extends plotOptions.arearange\n * @since 2.3.0\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption plotOptions.areasplinerange\n */\n/**\n * @see [fillColor](#plotOptions.areasplinerange.fillColor)\n * @see [fillOpacity](#plotOptions.areasplinerange.fillOpacity)\n *\n * @apioption plotOptions.areasplinerange.color\n */\n/**\n * @see [color](#plotOptions.areasplinerange.color)\n * @see [fillOpacity](#plotOptions.areasplinerange.fillOpacity)\n *\n * @apioption plotOptions.areasplinerange.fillColor\n */\n/**\n * @see [color](#plotOptions.areasplinerange.color)\n * @see [fillColor](#plotOptions.areasplinerange.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areasplinerange.fillOpacity\n */\n/**\n * A `areasplinerange` series. If the [type](#series.areasplinerange.type)\n * option is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.areasplinerange\n * @excluding dataParser, dataURL, stack, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.areasplinerange\n */\n/**\n * @see [fillColor](#series.areasplinerange.fillColor)\n * @see [fillOpacity](#series.areasplinerange.fillOpacity)\n *\n * @apioption series.areasplinerange.color\n */\n/**\n * An array of data points for the series. For the `areasplinerange`\n * series type, points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,low,high`. If the first value is a string, it is applied as the name\n * of the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 0, 5],\n * [1, 9, 1],\n * [2, 5, 2]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areasplinerange.turboThreshold), this option is\n * not available.\n * ```js\n * data: [{\n * x: 1,\n * low: 5,\n * high: 0,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 4,\n * high: 1,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.arearange.data\n * @product highcharts highstock\n * @apioption series.areasplinerange.data\n */\n/**\n * @see [color](#series.areasplinerange.color)\n * @see [fillOpacity](#series.areasplinerange.fillOpacity)\n *\n * @apioption series.areasplinerange.fillColor\n */\n/**\n * @see [color](#series.areasplinerange.color)\n * @see [fillColor](#series.areasplinerange.fillColor)\n *\n * @default 0.75\n * @apioption series.areasplinerange.fillOpacity\n */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.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 * API Options\n *\n * */\n/**\n * A box plot is a convenient way of depicting groups of data through their\n * five-number summaries: the smallest observation (sample minimum), lower\n * quartile (Q1), median (Q2), upper quartile (Q3), and largest observation\n * (sample maximum).\n *\n * @sample highcharts/demo/box-plot/\n * Box plot\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @extends plotOptions.column\n * @excluding borderColor, borderRadius, borderWidth, groupZPadding,\n * states, boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.boxplot\n */\nconst BoxPlotSeriesDefaults = {\n /**\n * @type {number|null}\n */\n threshold: null,\n tooltip: {\n pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> <b>' +\n '{series.name}</b><br/>' +\n 'Maximum: {point.high}<br/>' +\n 'Upper quartile: {point.q3}<br/>' +\n 'Median: {point.median}<br/>' +\n 'Lower quartile: {point.q1}<br/>' +\n 'Minimum: {point.low}<br/>'\n },\n /**\n * The length of the whiskers, the horizontal lines marking low and\n * high values. It can be a numerical pixel value, or a percentage\n * value of the box width. Set `0` to disable whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n *\n * @type {number|string}\n * @since 3.0\n * @product highcharts\n */\n whiskerLength: '50%',\n /**\n * The fill color of the box.\n *\n * In styled mode, the fill color can be set with the\n * `.highcharts-boxplot-box` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @since 3.0\n * @product highcharts\n */\n fillColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the line surrounding the box. If any of\n * [stemWidth](#plotOptions.boxplot.stemWidth),\n * [medianWidth](#plotOptions.boxplot.medianWidth)\n * or [whiskerWidth](#plotOptions.boxplot.whiskerWidth) are `null`,\n * the lineWidth also applies to these lines.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @since 3.0\n * @product highcharts\n */\n lineWidth: 1,\n /**\n * The color of the median line. If `undefined`, the general series\n * color applies.\n *\n * In styled mode, the median stroke width can be set with the\n * `.highcharts-boxplot-median` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.medianColor\n */\n /**\n * The pixel width of the median line. If `null`, the\n * [lineWidth](#plotOptions.boxplot.lineWidth) is used.\n *\n * In styled mode, the median stroke width can be set with the\n * `.highcharts-boxplot-median` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {number|null}\n * @since 3.0\n * @product highcharts\n */\n medianWidth: 2,\n /*\n // States are not working and are removed from docs.\n // Refer to: #2340\n states: {\n hover: {\n brightness: -0.3\n }\n },\n */\n /**\n * The color of the stem, the vertical line extending from the box to\n * the whiskers. If `undefined`, the series color is used.\n *\n * In styled mode, the stem stroke can be set with the\n * `.highcharts-boxplot-stem` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.stemColor\n */\n /**\n * The dash style of the box.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption plotOptions.boxplot.boxDashStyle\n */\n /**\n * The dash style of the median.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption plotOptions.boxplot.medianDashStyle\n */\n /**\n * The dash style of the stem, the vertical line extending from the\n * box to the whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.stemDashStyle\n */\n /**\n * The dash style of the whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption plotOptions.boxplot.whiskerDashStyle\n */\n /**\n * The width of the stem, the vertical line extending from the box to\n * the whiskers. If `undefined`, the width is inherited from the\n * [lineWidth](#plotOptions.boxplot.lineWidth) option.\n *\n * In styled mode, the stem stroke width can be set with the\n * `.highcharts-boxplot-stem` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {number}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.stemWidth\n */\n /**\n * @default high\n * @apioption plotOptions.boxplot.colorKey\n */\n /**\n * The color of the whiskers, the horizontal lines marking low and high\n * values. When `undefined`, the general series color is used.\n *\n * In styled mode, the whisker stroke can be set with the\n * `.highcharts-boxplot-whisker` class .\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.whiskerColor\n */\n /**\n * The line width of the whiskers, the horizontal lines marking low and\n * high values. When `undefined`, the general\n * [lineWidth](#plotOptions.boxplot.lineWidth) applies.\n *\n * In styled mode, the whisker stroke width can be set with the\n * `.highcharts-boxplot-whisker` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @since 3.0\n * @product highcharts\n */\n whiskerWidth: 2\n};\n/**\n * A `boxplot` series. If the [type](#series.boxplot.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.boxplot\n * @excluding dataParser, dataURL, marker, stack, stacking, states,\n * boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.boxplot\n */\n/**\n * An array of data points for the series. For the `boxplot` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 6 or 5 values. In this case, the values correspond\n * to `x,low,q1,median,q3,high`. If the first value is a string, it is\n * applied as the name of the point, and the `x` value is inferred. The `x`\n * value can also be omitted, in which case the inner arrays should be of\n * length 5. Then the `x` value is automatically calculated, either starting\n * at 0 and incremented by 1, or from `pointStart` and `pointInterval` given\n * in the series options.\n * ```js\n * data: [\n * [0, 3, 0, 10, 3, 5],\n * [1, 7, 8, 7, 2, 9],\n * [2, 6, 9, 5, 1, 3]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.boxplot.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * low: 4,\n * q1: 9,\n * median: 9,\n * q3: 1,\n * high: 10,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 5,\n * q1: 7,\n * median: 3,\n * q3: 6,\n * high: 2,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number,number,number,number>|Array<(number|string),number,number,number,number,number>|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts\n * @apioption series.boxplot.data\n */\n/**\n * The `high` value for each data point, signifying the highest value\n * in the sample set. The top whisker is drawn here.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.high\n */\n/**\n * The `low` value for each data point, signifying the lowest value\n * in the sample set. The bottom whisker is drawn here.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.low\n */\n/**\n * The median for each data point. This is drawn as a line through the\n * middle area of the box.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.median\n */\n/**\n * The lower quartile for each data point. This is the bottom of the\n * box.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.q1\n */\n/**\n * The higher quartile for each data point. This is the top of the box.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.q3\n */\n/**\n * The dash style of the box.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.boxDashStyle\n */\n/**\n * The dash style of the median.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.medianDashStyle\n */\n/**\n * The dash style of the stem.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.stemDashStyle\n */\n/**\n * The dash style of the whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.whiskerDashStyle\n */\n''; // Keeps doclets above separate\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const BoxPlot_BoxPlotSeriesDefaults = (BoxPlotSeriesDefaults);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\",\"types\",\"column\"],\"commonjs\":[\"highcharts\",\"Series\",\"types\",\"column\"],\"commonjs2\":[\"highcharts\",\"Series\",\"types\",\"column\"],\"root\":[\"Highcharts\",\"Series\",\"types\",\"column\"]}\nvar highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_ = __webpack_require__(448);\nvar highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default = /*#__PURE__*/__webpack_require__.n(highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_);\n;// ./code/es-modules/Series/BoxPlot/BoxPlotSeries.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\nconst { noop: BoxPlotSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { crisp, extend: BoxPlotSeries_extend, merge: BoxPlotSeries_merge, pick: BoxPlotSeries_pick, relativeLength: BoxPlotSeries_relativeLength } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n * The boxplot series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes#boxplot\n *\n * @augments Highcharts.Series\n */\nclass BoxPlotSeries extends (highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default()) {\n /* *\n *\n * Functions\n *\n * */\n // Get presentational attributes\n pointAttribs() {\n // No attributes should be set on point.graphic which is the group\n return {};\n }\n // Get an SVGPath object for both whiskers\n getWhiskerPair(halfWidth, stemX, upperWhiskerLength, lowerWhiskerLength, point) {\n const strokeWidth = point.whiskers.strokeWidth(), getWhisker = (xLen, yPos) => {\n const halfLen = BoxPlotSeries_relativeLength(xLen, 2 * halfWidth) / 2, crispedYPos = crisp(yPos, strokeWidth);\n return [\n [\n 'M',\n crisp(stemX - halfLen),\n crispedYPos\n ],\n [\n 'L',\n crisp(stemX + halfLen),\n crispedYPos\n ]\n ];\n };\n return [\n ...getWhisker(upperWhiskerLength, point.highPlot),\n ...getWhisker(lowerWhiskerLength, point.lowPlot)\n ];\n }\n // Translate data points from raw values x and y to plotX and plotY\n translate() {\n const series = this, yAxis = series.yAxis, pointArrayMap = series.pointArrayMap;\n super.translate.apply(series);\n // Do the translation on each point dimension\n series.points.forEach(function (point) {\n pointArrayMap.forEach(function (key) {\n if (point[key] !== null) {\n point[key + 'Plot'] = yAxis.translate(point[key], 0, 1, 0, 1);\n }\n });\n point.plotHigh = point.highPlot; // For data label validation\n });\n }\n /**\n * Draw the data points\n * @private\n */\n drawPoints() {\n const series = this, points = series.points, options = series.options, chart = series.chart, renderer = chart.renderer, \n // Error bar inherits this series type but doesn't do quartiles\n doQuartiles = series.doQuartiles !== false, whiskerLength = series.options.whiskerLength;\n let q1Plot, q3Plot, highPlot, lowPlot, medianPlot, medianPath, boxPath, graphic, width, x, right;\n for (const point of points) {\n graphic = point.graphic;\n const verb = graphic ? 'animate' : 'attr', shapeArgs = point.shapeArgs, boxAttr = {}, stemAttr = {}, whiskersAttr = {}, medianAttr = {}, color = point.color || series.color, pointWhiskerLength = (point.options.whiskerLength ||\n whiskerLength);\n if (typeof point.plotY !== 'undefined') {\n // Vector coordinates\n width = shapeArgs.width;\n x = shapeArgs.x;\n right = x + width;\n q1Plot = doQuartiles ? point.q1Plot : point.lowPlot;\n q3Plot = doQuartiles ? point.q3Plot : point.lowPlot;\n highPlot = point.highPlot;\n lowPlot = point.lowPlot;\n if (!graphic) {\n point.graphic = graphic = renderer.g('point')\n .add(series.group);\n point.stem = renderer.path()\n .addClass('highcharts-boxplot-stem')\n .add(graphic);\n if (whiskerLength) {\n point.whiskers = renderer.path()\n .addClass('highcharts-boxplot-whisker')\n .add(graphic);\n }\n if (doQuartiles) {\n point.box = renderer.path(boxPath)\n .addClass('highcharts-boxplot-box')\n .add(graphic);\n }\n point.medianShape = renderer.path(medianPath)\n .addClass('highcharts-boxplot-median')\n .add(graphic);\n }\n if (!chart.styledMode) {\n // Stem attributes\n stemAttr.stroke =\n point.stemColor || options.stemColor || color;\n stemAttr['stroke-width'] = BoxPlotSeries_pick(point.stemWidth, options.stemWidth, options.lineWidth);\n stemAttr.dashstyle = (point.stemDashStyle ||\n options.stemDashStyle ||\n options.dashStyle);\n point.stem.attr(stemAttr);\n // Whiskers attributes\n if (pointWhiskerLength) {\n whiskersAttr.stroke = (point.whiskerColor ||\n options.whiskerColor ||\n color);\n whiskersAttr['stroke-width'] = BoxPlotSeries_pick(point.whiskerWidth, options.whiskerWidth, options.lineWidth);\n whiskersAttr.dashstyle = (point.whiskerDashStyle ||\n options.whiskerDashStyle ||\n options.dashStyle);\n point.whiskers.attr(whiskersAttr);\n }\n if (doQuartiles) {\n boxAttr.fill = (point.fillColor ||\n options.fillColor ||\n color);\n boxAttr.stroke = options.lineColor || color;\n boxAttr['stroke-width'] = options.lineWidth || 0;\n boxAttr.dashstyle = (point.boxDashStyle ||\n options.boxDashStyle ||\n options.dashStyle);\n point.box.attr(boxAttr);\n }\n // Median attributes\n medianAttr.stroke = (point.medianColor ||\n options.medianColor ||\n color);\n medianAttr['stroke-width'] = BoxPlotSeries_pick(point.medianWidth, options.medianWidth, options.lineWidth);\n medianAttr.dashstyle = (point.medianDashStyle ||\n options.medianDashStyle ||\n options.dashStyle);\n point.medianShape.attr(medianAttr);\n }\n let d;\n // The stem\n const stemX = crisp((point.plotX || 0) + (series.pointXOffset || 0) +\n ((series.barW || 0) / 2), point.stem.strokeWidth());\n d = [\n // Stem up\n ['M', stemX, q3Plot],\n ['L', stemX, highPlot],\n // Stem down\n ['M', stemX, q1Plot],\n ['L', stemX, lowPlot]\n ];\n point.stem[verb]({ d });\n // The box\n if (doQuartiles) {\n const boxStrokeWidth = point.box.strokeWidth();\n q1Plot = crisp(q1Plot, boxStrokeWidth);\n q3Plot = crisp(q3Plot, boxStrokeWidth);\n x = crisp(x, boxStrokeWidth);\n right = crisp(right, boxStrokeWidth);\n d = [\n ['M', x, q3Plot],\n ['L', x, q1Plot],\n ['L', right, q1Plot],\n ['L', right, q3Plot],\n ['L', x, q3Plot],\n ['Z']\n ];\n point.box[verb]({ d });\n }\n // The whiskers\n if (pointWhiskerLength) {\n const halfWidth = width / 2, whiskers = this.getWhiskerPair(halfWidth, stemX, (point.upperWhiskerLength ??\n options.upperWhiskerLength ??\n pointWhiskerLength), (point.lowerWhiskerLength ??\n options.lowerWhiskerLength ??\n pointWhiskerLength), point);\n point.whiskers[verb]({ d: whiskers });\n }\n // The median\n medianPlot = crisp(point.medianPlot, point.medianShape.strokeWidth());\n d = [\n ['M', x, medianPlot],\n ['L', right, medianPlot]\n ];\n point.medianShape[verb]({ d });\n }\n }\n }\n // Return a plain array for speedy calculation\n toYData(point) {\n return [point.low, point.q1, point.median, point.q3, point.high];\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nBoxPlotSeries.defaultOptions = BoxPlotSeries_merge((highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default()).defaultOptions, BoxPlot_BoxPlotSeriesDefaults);\nBoxPlotSeries_extend(BoxPlotSeries.prototype, {\n // Array point configs are mapped to this\n pointArrayMap: ['low', 'q1', 'median', 'q3', 'high'],\n // Defines the top of the tracker\n pointValKey: 'high',\n // Disable data labels for box plot\n drawDataLabels: BoxPlotSeries_noop,\n setStackedPoints: BoxPlotSeries_noop // #3890\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('boxplot', BoxPlotSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const BoxPlot_BoxPlotSeries = (BoxPlotSeries);\n\n;// ./code/es-modules/Series/Bubble/BubbleLegendDefaults.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\n *\n * Author: Paweł Potaczek\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Constants\n *\n * */\n/**\n * The bubble legend is an additional element in legend which\n * presents the scale of the bubble series. Individual bubble ranges\n * can be defined by user or calculated from series. In the case of\n * automatically calculated ranges, a 1px margin of error is\n * permitted.\n *\n * @since 7.0.0\n * @product highcharts highstock highmaps\n * @requires highcharts-more\n * @optionparent legend.bubbleLegend\n */\nconst BubbleLegendDefaults = {\n /**\n * The color of the ranges borders, can be also defined for an\n * individual range.\n *\n * @sample highcharts/bubble-legend/similartoseries/\n * Similar look to the bubble series\n * @sample highcharts/bubble-legend/bordercolor/\n * Individual bubble border color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: void 0,\n /**\n * The width of the ranges borders in pixels, can be also\n * defined for an individual range.\n */\n borderWidth: 2,\n /**\n * An additional class name to apply to the bubble legend'\n * circle graphical elements. This option does not replace\n * default class names of the graphical element.\n *\n * @sample {highcharts} highcharts/css/bubble-legend/\n * Styling by CSS\n *\n * @type {string}\n */\n className: void 0,\n /**\n * The main color of the bubble legend. Applies to ranges, if\n * individual color is not defined.\n *\n * @sample highcharts/bubble-legend/similartoseries/\n * Similar look to the bubble series\n * @sample highcharts/bubble-legend/color/\n * Individual bubble color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n color: void 0,\n /**\n * An additional class name to apply to the bubble legend's\n * connector graphical elements. This option does not replace\n * default class names of the graphical element.\n *\n * @sample {highcharts} highcharts/css/bubble-legend/\n * Styling by CSS\n *\n * @type {string}\n */\n connectorClassName: void 0,\n /**\n * The color of the connector, can be also defined\n * for an individual range.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n connectorColor: void 0,\n /**\n * The length of the connectors in pixels. If labels are\n * centered, the distance is reduced to 0.\n *\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Increased connector length\n */\n connectorDistance: 60,\n /**\n * The width of the connectors in pixels.\n *\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Increased connector width\n */\n connectorWidth: 1,\n /**\n * Enable or disable the bubble legend.\n */\n enabled: false,\n /**\n * Options for the bubble legend labels.\n */\n labels: {\n /**\n * An additional class name to apply to the bubble legend\n * label graphical elements. This option does not replace\n * default class names of the graphical element.\n *\n * @sample {highcharts} highcharts/css/bubble-legend/\n * Styling by CSS\n *\n * @type {string}\n */\n className: void 0,\n /**\n * Whether to allow data labels to overlap.\n */\n allowOverlap: false,\n /**\n * A format string for the bubble legend labels. Available\n * variables are the same as for `formatter`.\n *\n * @sample highcharts/bubble-legend/format/\n * Add a unit\n *\n * @type {string}\n */\n format: '',\n /**\n * Available `this` properties are:\n *\n * - `this.value`: The bubble value.\n *\n * - `this.radius`: The radius of the bubble range.\n *\n * - `this.center`: The center y position of the range.\n *\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.BubbleLegendFormatterContextObject>}\n */\n formatter: void 0,\n /**\n * The alignment of the labels compared to the bubble\n * legend. Can be one of `left`, `center` or `right`.\n *\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Labels on left\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'right',\n /**\n * CSS styles for the labels.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @ignore-option */\n fontSize: '0.9em',\n /** @ignore-option */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * The x position offset of the label relative to the\n * connector.\n */\n x: 0,\n /**\n * The y position offset of the label relative to the\n * connector.\n */\n y: 0\n },\n /**\n * Maximum bubble legend range size. If values for ranges are\n * not specified, the `minSize` and the `maxSize` are calculated\n * from bubble series.\n */\n maxSize: 60, // Number\n /**\n * Minimum bubble legend range size. If values for ranges are\n * not specified, the `minSize` and the `maxSize` are calculated\n * from bubble series.\n */\n minSize: 10, // Number\n /**\n * The position of the bubble legend in the legend.\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Bubble legend as last item in legend\n */\n legendIndex: 0, // Number\n /**\n * Options for specific range. One range consists of bubble,\n * label and connector.\n *\n * @sample highcharts/bubble-legend/ranges/\n * Manually defined ranges\n * @sample highcharts/bubble-legend/autoranges/\n * Auto calculated ranges\n *\n * @type {Array<*>}\n */\n ranges: {\n /**\n * Range size value, similar to bubble Z data.\n * @type {number}\n */\n value: void 0,\n /**\n * The color of the border for individual range.\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: void 0,\n /**\n * The color of the bubble for individual range.\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n color: void 0,\n /**\n * The color of the connector for individual range.\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n connectorColor: void 0\n },\n /**\n * Whether the bubble legend range value should be represented\n * by the area or the width of the bubble. The default, area,\n * corresponds best to the human perception of the size of each\n * bubble.\n *\n * @sample highcharts/bubble-legend/ranges/\n * Size by width\n *\n * @type {Highcharts.BubbleSizeByValue}\n */\n sizeBy: 'area',\n /**\n * When this is true, the absolute value of z determines the\n * size of the bubble. This means that with the default\n * zThreshold of 0, a bubble of value -1 will have the same size\n * as a bubble of value 1, while a bubble of value 0 will have a\n * smaller size according to minSize.\n */\n sizeByAbsoluteValue: false,\n /**\n * Define the visual z index of the bubble legend.\n */\n zIndex: 1,\n /**\n * Ranges with lower value than zThreshold are skipped.\n */\n zThreshold: 0\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Bubble_BubbleLegendDefaults = (BubbleLegendDefaults);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Templating\"],\"commonjs\":[\"highcharts\",\"Templating\"],\"commonjs2\":[\"highcharts\",\"Templating\"],\"root\":[\"Highcharts\",\"Templating\"]}\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_ = __webpack_require__(984);\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default = /*#__PURE__*/__webpack_require__.n(highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_);\n;// ./code/es-modules/Series/Bubble/BubbleLegendItem.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\n *\n * Author: Paweł Potaczek\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { parse: color } = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default());\n\n\nconst { noop: BubbleLegendItem_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { arrayMax, arrayMin, isNumber: BubbleLegendItem_isNumber, merge: BubbleLegendItem_merge, pick: BubbleLegendItem_pick, stableSort } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n * BubbleLegend class.\n *\n * @private\n * @class\n * @name Highcharts.BubbleLegend\n * @param {Highcharts.LegendBubbleLegendOptions} options\n * Options of BubbleLegendItem.\n *\n * @param {Highcharts.Legend} legend\n * Legend of item.\n */\nclass BubbleLegendItem {\n /* *\n *\n * Constructor\n *\n * */\n constructor(options, legend) {\n this.setState = BubbleLegendItem_noop;\n this.init(options, legend);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create basic bubbleLegend properties similar to item in legend.\n * @private\n */\n init(options, legend) {\n this.options = options;\n this.visible = true;\n this.chart = legend.chart;\n this.legend = legend;\n }\n /**\n * Depending on the position option, add bubbleLegend to legend items.\n *\n * @private\n *\n * @param {Array<(Highcharts.Point|Highcharts.Series)>} items\n * All legend items\n */\n addToLegend(items) {\n // Insert bubbleLegend into legend items\n items.splice(this.options.legendIndex, 0, this);\n }\n /**\n * Calculate ranges, sizes and call the next steps of bubbleLegend\n * creation.\n *\n * @private\n *\n * @param {Highcharts.Legend} legend\n * Legend instance\n */\n drawLegendSymbol(legend) {\n const itemDistance = BubbleLegendItem_pick(legend.options.itemDistance, 20), legendItem = this.legendItem || {}, options = this.options, ranges = options.ranges, connectorDistance = options.connectorDistance;\n let connectorSpace;\n // Do not create bubbleLegend now if ranges or ranges values are not\n // specified or if are empty array.\n if (!ranges || !ranges.length || !BubbleLegendItem_isNumber(ranges[0].value)) {\n legend.options.bubbleLegend.autoRanges = true;\n return;\n }\n // Sort ranges to right render order\n stableSort(ranges, function (a, b) {\n return b.value - a.value;\n });\n this.ranges = ranges;\n this.setOptions();\n this.render();\n // Get max label size\n const maxLabel = this.getMaxLabelSize(), radius = this.ranges[0].radius, size = radius * 2;\n // Space for connectors and labels.\n connectorSpace =\n connectorDistance - radius + maxLabel.width;\n connectorSpace = connectorSpace > 0 ? connectorSpace : 0;\n this.maxLabel = maxLabel;\n this.movementX = options.labels.align === 'left' ?\n connectorSpace : 0;\n legendItem.labelWidth = size + connectorSpace + itemDistance;\n legendItem.labelHeight = size + maxLabel.height / 2;\n }\n /**\n * Set style options for each bubbleLegend range.\n * @private\n */\n setOptions() {\n const ranges = this.ranges, options = this.options, series = this.chart.series[options.seriesIndex], baseline = this.legend.baseline, bubbleAttribs = {\n zIndex: options.zIndex,\n 'stroke-width': options.borderWidth\n }, connectorAttribs = {\n zIndex: options.zIndex,\n 'stroke-width': options.connectorWidth\n }, labelAttribs = {\n align: (this.legend.options.rtl ||\n options.labels.align === 'left') ? 'right' : 'left',\n zIndex: options.zIndex\n }, fillOpacity = series.options.marker.fillOpacity, styledMode = this.chart.styledMode;\n // Allow to parts of styles be used individually for range\n ranges.forEach(function (range, i) {\n if (!styledMode) {\n bubbleAttribs.stroke = BubbleLegendItem_pick(range.borderColor, options.borderColor, series.color);\n bubbleAttribs.fill = BubbleLegendItem_pick(range.color, options.color, fillOpacity !== 1 ?\n color(series.color).setOpacity(fillOpacity)\n .get('rgba') :\n series.color);\n connectorAttribs.stroke = BubbleLegendItem_pick(range.connectorColor, options.connectorColor, series.color);\n }\n // Set options needed for rendering each range\n ranges[i].radius = this.getRangeRadius(range.value);\n ranges[i] = BubbleLegendItem_merge(ranges[i], {\n center: (ranges[0].radius - ranges[i].radius +\n baseline)\n });\n if (!styledMode) {\n BubbleLegendItem_merge(true, ranges[i], {\n bubbleAttribs: BubbleLegendItem_merge(bubbleAttribs),\n connectorAttribs: BubbleLegendItem_merge(connectorAttribs),\n labelAttribs: labelAttribs\n });\n }\n }, this);\n }\n /**\n * Calculate radius for each bubble range,\n * used code from BubbleSeries.js 'getRadius' method.\n *\n * @private\n *\n * @param {number} value\n * Range value\n *\n * @return {number|null}\n * Radius for one range\n */\n getRangeRadius(value) {\n const options = this.options, seriesIndex = this.options.seriesIndex, bubbleSeries = this.chart.series[seriesIndex], zMax = options.ranges[0].value, zMin = options.ranges[options.ranges.length - 1].value, minSize = options.minSize, maxSize = options.maxSize;\n return bubbleSeries.getRadius.call(this, zMin, zMax, minSize, maxSize, value);\n }\n /**\n * Render the legendItem group.\n * @private\n */\n render() {\n const legendItem = this.legendItem || {}, renderer = this.chart.renderer, zThreshold = this.options.zThreshold;\n if (!this.symbols) {\n this.symbols = {\n connectors: [],\n bubbleItems: [],\n labels: []\n };\n }\n // Nesting SVG groups to enable handleOverflow\n legendItem.symbol = renderer.g('bubble-legend');\n legendItem.label = renderer.g('bubble-legend-item')\n .css(this.legend.itemStyle || {});\n // To enable default 'hideOverlappingLabels' method\n legendItem.symbol.translateX = 0;\n legendItem.symbol.translateY = 0;\n // To use handleOverflow method\n legendItem.symbol.add(legendItem.label);\n legendItem.label.add(legendItem.group);\n for (const range of this.ranges) {\n if (range.value >= zThreshold) {\n this.renderRange(range);\n }\n }\n this.hideOverlappingLabels();\n }\n /**\n * Render one range, consisting of bubble symbol, connector and label.\n *\n * @private\n *\n * @param {Highcharts.LegendBubbleLegendRangesOptions} range\n * Range options\n */\n renderRange(range) {\n const mainRange = this.ranges[0], legend = this.legend, options = this.options, labelsOptions = options.labels, chart = this.chart, bubbleSeries = chart.series[options.seriesIndex], renderer = chart.renderer, symbols = this.symbols, labels = symbols.labels, elementCenter = range.center, absoluteRadius = Math.abs(range.radius), connectorDistance = options.connectorDistance || 0, labelsAlign = labelsOptions.align, rtl = legend.options.rtl, borderWidth = options.borderWidth, connectorWidth = options.connectorWidth, posX = mainRange.radius || 0, posY = elementCenter - absoluteRadius -\n borderWidth / 2 + connectorWidth / 2, crispMovement = (posY % 1 ? 1 : 0.5) -\n (connectorWidth % 2 ? 0 : 0.5), styledMode = renderer.styledMode;\n let connectorLength = rtl || labelsAlign === 'left' ?\n -connectorDistance : connectorDistance;\n // Set options for centered labels\n if (labelsAlign === 'center') {\n connectorLength = 0; // Do not use connector\n options.connectorDistance = 0;\n range.labelAttribs.align = 'center';\n }\n // Render bubble symbol\n symbols.bubbleItems.push(renderer\n .circle(posX, elementCenter + crispMovement, absoluteRadius)\n .attr(styledMode ? {} : range.bubbleAttribs)\n .addClass((styledMode ?\n 'highcharts-color-' +\n bubbleSeries.colorIndex + ' ' :\n '') +\n 'highcharts-bubble-legend-symbol ' +\n (options.className || '')).add(this.legendItem.symbol));\n // Render connector\n symbols.connectors.push(renderer\n .path(renderer.crispLine([\n ['M', posX, posY],\n ['L', posX + connectorLength, posY]\n ], options.connectorWidth))\n .attr((styledMode ? {} : range.connectorAttribs))\n .addClass((styledMode ?\n 'highcharts-color-' +\n this.options.seriesIndex + ' ' : '') +\n 'highcharts-bubble-legend-connectors ' +\n (options.connectorClassName || '')).add(this.legendItem.symbol));\n // Render label\n const label = renderer\n .text(this.formatLabel(range))\n .attr((styledMode ? {} : range.labelAttribs))\n .css(styledMode ? {} : labelsOptions.style)\n .addClass('highcharts-bubble-legend-labels ' +\n (options.labels.className || '')).add(this.legendItem.symbol);\n // Now that the label is added we can read the bounding box and\n // vertically align\n const position = {\n x: posX + connectorLength + options.labels.x,\n y: posY + options.labels.y + label.getBBox().height * 0.4\n };\n label.attr(position);\n labels.push(label);\n // To enable default 'hideOverlappingLabels' method\n label.placed = true;\n label.alignAttr = position;\n }\n /**\n * Get the label which takes up the most space.\n * @private\n */\n getMaxLabelSize() {\n const labels = this.symbols.labels;\n let maxLabel, labelSize;\n labels.forEach(function (label) {\n labelSize = label.getBBox(true);\n if (maxLabel) {\n maxLabel = labelSize.width > maxLabel.width ?\n labelSize : maxLabel;\n }\n else {\n maxLabel = labelSize;\n }\n });\n return maxLabel || {};\n }\n /**\n * Get formatted label for range.\n *\n * @private\n *\n * @param {Highcharts.LegendBubbleLegendRangesOptions} range\n * Range options\n *\n * @return {string}\n * Range label text\n */\n formatLabel(range) {\n const options = this.options, formatter = options.labels.formatter, format = options.labels.format;\n const { numberFormatter } = this.chart;\n return format ? highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default().format(format, range, this.chart) :\n formatter ? formatter.call(range) :\n numberFormatter(range.value, 1);\n }\n /**\n * By using default chart 'hideOverlappingLabels' method, hide or show\n * labels and connectors.\n * @private\n */\n hideOverlappingLabels() {\n const chart = this.chart, allowOverlap = this.options.labels.allowOverlap, symbols = this.symbols;\n if (!allowOverlap && symbols) {\n chart.hideOverlappingLabels(symbols.labels);\n // Hide or show connectors\n symbols.labels.forEach(function (label, index) {\n if (!label.newOpacity) {\n symbols.connectors[index].hide();\n }\n else if (label.newOpacity !== label.oldOpacity) {\n symbols.connectors[index].show();\n }\n });\n }\n }\n /**\n * Calculate ranges from created series.\n *\n * @private\n *\n * @return {Array<Highcharts.LegendBubbleLegendRangesOptions>}\n * Array of range objects\n */\n getRanges() {\n const bubbleLegend = this.legend.bubbleLegend, series = bubbleLegend.chart.series, rangesOptions = bubbleLegend.options.ranges;\n let ranges, zData, minZ = Number.MAX_VALUE, maxZ = -Number.MAX_VALUE;\n series.forEach(function (s) {\n // Find the min and max Z, like in bubble series\n if (s.isBubble && !s.ignoreSeries) {\n zData = s.getColumn('z').filter(BubbleLegendItem_isNumber);\n if (zData.length) {\n minZ = BubbleLegendItem_pick(s.options.zMin, Math.min(minZ, Math.max(arrayMin(zData), s.options.displayNegative === false ?\n s.options.zThreshold :\n -Number.MAX_VALUE)));\n maxZ = BubbleLegendItem_pick(s.options.zMax, Math.max(maxZ, arrayMax(zData)));\n }\n }\n });\n // Set values for ranges\n if (minZ === maxZ) {\n // Only one range if min and max values are the same.\n ranges = [{ value: maxZ }];\n }\n else {\n ranges = [\n { value: minZ },\n { value: (minZ + maxZ) / 2 },\n { value: maxZ, autoRanges: true }\n ];\n }\n // Prevent reverse order of ranges after redraw\n if (rangesOptions.length && rangesOptions[0].radius) {\n ranges.reverse();\n }\n // Merge ranges values with user options\n ranges.forEach(function (range, i) {\n if (rangesOptions && rangesOptions[i]) {\n ranges[i] = BubbleLegendItem_merge(rangesOptions[i], range);\n }\n });\n return ranges;\n }\n /**\n * Calculate bubble legend sizes from rendered series.\n *\n * @private\n *\n * @return {Array<number,number>}\n * Calculated min and max bubble sizes\n */\n predictBubbleSizes() {\n const chart = this.chart, legendOptions = chart.legend.options, floating = legendOptions.floating, horizontal = legendOptions.layout === 'horizontal', lastLineHeight = horizontal ? chart.legend.lastLineHeight : 0, plotSizeX = chart.plotSizeX, plotSizeY = chart.plotSizeY, bubbleSeries = chart.series[this.options.seriesIndex], pxSizes = bubbleSeries.getPxExtremes(), minSize = Math.ceil(pxSizes.minPxSize), maxPxSize = Math.ceil(pxSizes.maxPxSize), plotSize = Math.min(plotSizeY, plotSizeX);\n let calculatedSize, maxSize = bubbleSeries.options.maxSize;\n // Calculate predicted max size of bubble\n if (floating || !(/%$/.test(maxSize))) {\n calculatedSize = maxPxSize;\n }\n else {\n maxSize = parseFloat(maxSize);\n calculatedSize = ((plotSize + lastLineHeight) * maxSize / 100) /\n (maxSize / 100 + 1);\n // Get maxPxSize from bubble series if calculated bubble legend\n // size will not affect to bubbles series.\n if ((horizontal && plotSizeY - calculatedSize >=\n plotSizeX) || (!horizontal && plotSizeX -\n calculatedSize >= plotSizeY)) {\n calculatedSize = maxPxSize;\n }\n }\n return [minSize, Math.ceil(calculatedSize)];\n }\n /**\n * Correct ranges with calculated sizes.\n * @private\n */\n updateRanges(min, max) {\n const bubbleLegendOptions = this.legend.options.bubbleLegend;\n bubbleLegendOptions.minSize = min;\n bubbleLegendOptions.maxSize = max;\n bubbleLegendOptions.ranges = this.getRanges();\n }\n /**\n * Because of the possibility of creating another legend line, predicted\n * bubble legend sizes may differ by a few pixels, so it is necessary to\n * correct them.\n * @private\n */\n correctSizes() {\n const legend = this.legend, chart = this.chart, bubbleSeries = chart.series[this.options.seriesIndex], pxSizes = bubbleSeries.getPxExtremes(), bubbleSeriesSize = pxSizes.maxPxSize, bubbleLegendSize = this.options.maxSize;\n if (Math.abs(Math.ceil(bubbleSeriesSize) - bubbleLegendSize) >\n 1) {\n this.updateRanges(this.options.minSize, pxSizes.maxPxSize);\n legend.render();\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Bubble_BubbleLegendItem = (BubbleLegendItem);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * @interface Highcharts.BubbleLegendFormatterContextObject\n */ /**\n* The center y position of the range.\n* @name Highcharts.BubbleLegendFormatterContextObject#center\n* @type {number}\n*/ /**\n* The radius of the bubble range.\n* @name Highcharts.BubbleLegendFormatterContextObject#radius\n* @type {number}\n*/ /**\n* The bubble value.\n* @name Highcharts.BubbleLegendFormatterContextObject#value\n* @type {number}\n*/\n''; // Detach doclets above\n\n;// ./code/es-modules/Series/Bubble/BubbleLegendComposition.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\n *\n * Author: Paweł Potaczek\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 { setOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: BubbleLegendComposition_addEvent, objectEach, pushUnique, wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * If ranges are not specified, determine ranges from rendered bubble series\n * and render legend again.\n */\nfunction chartDrawChartBox(proceed, options, callback) {\n const chart = this, legend = chart.legend, bubbleSeries = getVisibleBubbleSeriesIndex(chart) >= 0;\n let bubbleLegendOptions, bubbleSizes, legendItem;\n if (legend && legend.options.enabled && legend.bubbleLegend &&\n legend.options.bubbleLegend.autoRanges && bubbleSeries) {\n bubbleLegendOptions = legend.bubbleLegend.options;\n bubbleSizes = legend.bubbleLegend.predictBubbleSizes();\n legend.bubbleLegend.updateRanges(bubbleSizes[0], bubbleSizes[1]);\n // Disable animation on init\n if (!bubbleLegendOptions.placed) {\n legend.group.placed = false;\n legend.allItems.forEach((item) => {\n legendItem = item.legendItem || {};\n if (legendItem.group) {\n legendItem.group.translateY = void 0;\n }\n });\n }\n // Create legend with bubbleLegend\n legend.render();\n // Calculate margins after first rendering the bubble legend\n if (!bubbleLegendOptions.placed) {\n chart.getMargins();\n chart.axes.forEach((axis) => {\n axis.setScale();\n axis.updateNames();\n // Disable axis animation on init\n objectEach(axis.ticks, function (tick) {\n tick.isNew = true;\n tick.isNewLabel = true;\n });\n });\n chart.getMargins();\n }\n bubbleLegendOptions.placed = true;\n // Call default 'drawChartBox' method.\n proceed.call(chart, options, callback);\n // Check bubble legend sizes and correct them if necessary.\n legend.bubbleLegend.correctSizes();\n // Correct items positions with different dimensions in legend.\n retranslateItems(legend, getLinesHeights(legend));\n }\n else {\n proceed.call(chart, options, callback);\n // Allow color change on static bubble legend after click on legend\n if (legend && legend.options.enabled && legend.bubbleLegend) {\n legend.render();\n retranslateItems(legend, getLinesHeights(legend));\n }\n }\n}\n/**\n * Compose classes for use with Bubble series.\n * @private\n *\n * @param {Highcharts.Chart} ChartClass\n * Core chart class to use with Bubble series.\n *\n * @param {Highcharts.Legend} LegendClass\n * Core legend class to use with Bubble series.\n */\nfunction BubbleLegendComposition_compose(ChartClass, LegendClass) {\n if (pushUnique(composed, 'Series.BubbleLegend')) {\n setOptions({\n // Set default bubble legend options\n legend: {\n bubbleLegend: Bubble_BubbleLegendDefaults\n }\n });\n wrap(ChartClass.prototype, 'drawChartBox', chartDrawChartBox);\n BubbleLegendComposition_addEvent(LegendClass, 'afterGetAllItems', onLegendAfterGetAllItems);\n BubbleLegendComposition_addEvent(LegendClass, 'itemClick', onLegendItemClick);\n }\n}\n/**\n * Check if there is at least one visible bubble series.\n *\n * @private\n * @function getVisibleBubbleSeriesIndex\n * @param {Highcharts.Chart} chart\n * Chart to check.\n * @return {number}\n * First visible bubble series index\n */\nfunction getVisibleBubbleSeriesIndex(chart) {\n const series = chart.series;\n let i = 0;\n while (i < series.length) {\n if (series[i] &&\n series[i].isBubble &&\n series[i].visible &&\n series[i].dataTable.rowCount) {\n return i;\n }\n i++;\n }\n return -1;\n}\n/**\n * Calculate height for each row in legend.\n *\n * @private\n * @function getLinesHeights\n *\n * @param {Highcharts.Legend} legend\n * Legend to calculate from.\n *\n * @return {Array<Highcharts.Dictionary<number>>}\n * Informations about line height and items amount\n */\nfunction getLinesHeights(legend) {\n const items = legend.allItems, lines = [], length = items.length;\n let lastLine, legendItem, legendItem2, i = 0, j = 0;\n for (i = 0; i < length; i++) {\n legendItem = items[i].legendItem || {};\n legendItem2 = (items[i + 1] || {}).legendItem || {};\n if (legendItem.labelHeight) {\n // For bubbleLegend\n items[i].itemHeight = legendItem.labelHeight;\n }\n if ( // Line break\n items[i] === items[length - 1] ||\n legendItem.y !== legendItem2.y) {\n lines.push({ height: 0 });\n lastLine = lines[lines.length - 1];\n // Find the highest item in line\n for (j; j <= i; j++) {\n if (items[j].itemHeight > lastLine.height) {\n lastLine.height = items[j].itemHeight;\n }\n }\n lastLine.step = i;\n }\n }\n return lines;\n}\n/**\n * Start the bubble legend creation process.\n */\nfunction onLegendAfterGetAllItems(e) {\n const legend = this, bubbleLegend = legend.bubbleLegend, legendOptions = legend.options, options = legendOptions.bubbleLegend, bubbleSeriesIndex = getVisibleBubbleSeriesIndex(legend.chart);\n // Remove unnecessary element\n if (bubbleLegend && bubbleLegend.ranges && bubbleLegend.ranges.length) {\n // Allow change the way of calculating ranges in update\n if (options.ranges.length) {\n options.autoRanges =\n !!options.ranges[0].autoRanges;\n }\n // Update bubbleLegend dimensions in each redraw\n legend.destroyItem(bubbleLegend);\n }\n // Create bubble legend\n if (bubbleSeriesIndex >= 0 &&\n legendOptions.enabled &&\n options.enabled) {\n options.seriesIndex = bubbleSeriesIndex;\n legend.bubbleLegend = new Bubble_BubbleLegendItem(options, legend);\n legend.bubbleLegend.addToLegend(e.allItems);\n }\n}\n/**\n * Toggle bubble legend depending on the visible status of bubble series.\n */\nfunction onLegendItemClick(e) {\n // #14080 don't fire this code if click function is prevented\n if (e.defaultPrevented) {\n return false;\n }\n const legend = this, series = e.legendItem, chart = legend.chart, visible = series.visible;\n let status;\n if (legend && legend.bubbleLegend) {\n // Temporary correct 'visible' property\n series.visible = !visible;\n // Save future status for getRanges method\n series.ignoreSeries = visible;\n // Check if at lest one bubble series is visible\n status = getVisibleBubbleSeriesIndex(chart) >= 0;\n // Hide bubble legend if all bubble series are disabled\n if (legend.bubbleLegend.visible !== status) {\n // Show or hide bubble legend\n legend.update({\n bubbleLegend: { enabled: status }\n });\n legend.bubbleLegend.visible = status; // Restore default status\n }\n series.visible = visible;\n }\n}\n/**\n * Correct legend items translation in case of different elements heights.\n *\n * @private\n * @function Highcharts.Legend#retranslateItems\n *\n * @param {Highcharts.Legend} legend\n * Legend to translate in.\n *\n * @param {Array<Highcharts.Dictionary<number>>} lines\n * Informations about line height and items amount\n */\nfunction retranslateItems(legend, lines) {\n const items = legend.allItems, rtl = legend.options.rtl;\n let orgTranslateX, orgTranslateY, movementX, legendItem, actualLine = 0;\n items.forEach((item, index) => {\n legendItem = item.legendItem || {};\n if (!legendItem.group) {\n return;\n }\n orgTranslateX = legendItem.group.translateX || 0;\n orgTranslateY = legendItem.y || 0;\n movementX = item.movementX;\n if (movementX || (rtl && item.ranges)) {\n movementX = rtl ?\n orgTranslateX - item.options.maxSize / 2 :\n orgTranslateX + movementX;\n legendItem.group.attr({ translateX: movementX });\n }\n if (index > lines[actualLine].step) {\n actualLine++;\n }\n legendItem.group.attr({\n translateY: Math.round(orgTranslateY + lines[actualLine].height / 2)\n });\n legendItem.y = orgTranslateY + lines[actualLine].height / 2;\n });\n}\n/* *\n *\n * Default Export\n *\n * */\nconst BubbleLegendComposition = {\n compose: BubbleLegendComposition_compose\n};\n/* harmony default export */ const Bubble_BubbleLegendComposition = (BubbleLegendComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Point\"],\"commonjs\":[\"highcharts\",\"Point\"],\"commonjs2\":[\"highcharts\",\"Point\"],\"root\":[\"Highcharts\",\"Point\"]}\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_ = __webpack_require__(260);\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default = /*#__PURE__*/__webpack_require__.n(highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_);\n;// ./code/es-modules/Series/Bubble/BubblePoint.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\nconst { seriesTypes: { scatter: { prototype: { pointClass: ScatterPoint } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { extend: BubblePoint_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass BubblePoint extends ScatterPoint {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n haloPath(size) {\n const computedSize = (size && this.marker ?\n this.marker.radius ||\n 0 :\n 0) + size;\n if (this.series.chart.inverted) {\n const pos = this.pos() || [0, 0], { xAxis, yAxis, chart } = this.series;\n return chart.renderer.symbols.circle(xAxis.len - pos[1] - computedSize, yAxis.len - pos[0] - computedSize, computedSize * 2, computedSize * 2);\n }\n return highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.haloPath.call(this, \n // #6067\n computedSize);\n }\n}\n/* *\n *\n * Class Prototype\n *\n * */\nBubblePoint_extend(BubblePoint.prototype, {\n ttBelow: false\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Bubble_BubblePoint = (BubblePoint);\n\n;// ./code/es-modules/Series/Bubble/BubbleSeries.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\nconst { parse: BubbleSeries_color } = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default());\n\nconst { composed: BubbleSeries_composed, noop: BubbleSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { series: Series, seriesTypes: { column: { prototype: BubbleSeries_columnProto }, scatter: ScatterSeries } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { addEvent: BubbleSeries_addEvent, arrayMax: BubbleSeries_arrayMax, arrayMin: BubbleSeries_arrayMin, clamp, extend: BubbleSeries_extend, isNumber: BubbleSeries_isNumber, merge: BubbleSeries_merge, pick: BubbleSeries_pick, pushUnique: BubbleSeries_pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * Add logic to pad each axis with the amount of pixels necessary to avoid the\n * bubbles to overflow.\n */\nfunction onAxisFoundExtremes() {\n const axisLength = this.len, { coll, isXAxis, min } = this, range = (this.max || 0) - (min || 0);\n let pxMin = 0, pxMax = axisLength, transA = axisLength / range, hasActiveSeries;\n if (coll !== 'xAxis' && coll !== 'yAxis') {\n return;\n }\n // Handle padding on the second pass, or on redraw\n this.series.forEach((series) => {\n if (series.bubblePadding && series.reserveSpace()) {\n // Correction for #1673\n this.allowZoomOutside = true;\n hasActiveSeries = true;\n const data = series.getColumn(isXAxis ? 'x' : 'y');\n if (isXAxis) {\n (series.onPoint || series).getRadii(0, 0, series);\n if (series.onPoint) {\n series.radii = series.onPoint.radii;\n }\n }\n if (range > 0) {\n let i = data.length;\n while (i--) {\n if (BubbleSeries_isNumber(data[i]) &&\n this.dataMin <= data[i] &&\n data[i] <= this.max) {\n const radius = series.radii && series.radii[i] || 0;\n pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);\n pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);\n }\n }\n }\n }\n });\n // Apply the padding to the min and max properties\n if (hasActiveSeries && range > 0 && !this.logarithmic) {\n pxMax -= axisLength;\n transA *= (axisLength +\n Math.max(0, pxMin) - // #8901\n Math.min(pxMax, axisLength)) / axisLength;\n [\n ['min', 'userMin', pxMin],\n ['max', 'userMax', pxMax]\n ].forEach((keys) => {\n if (typeof BubbleSeries_pick(this.options[keys[0]], this[keys[1]]) === 'undefined') {\n this[keys[0]] += keys[2] / transA;\n }\n });\n }\n}\n/**\n * If a user has defined categories, it is necessary to retroactively hide any\n * ticks added by the 'onAxisFoundExtremes' function above (#21672).\n *\n * Otherwise they can show up on the axis, alongside user-defined categories.\n */\nfunction onAxisAfterRender() {\n const { ticks, tickPositions, dataMin = 0, dataMax = 0, categories } = this, type = this.options.type;\n if ((categories?.length || type === 'category') &&\n this.series.find((s) => s.bubblePadding)) {\n let tickCount = tickPositions.length;\n while (tickCount--) {\n const tick = ticks[tickPositions[tickCount]], pos = tick.pos || 0;\n if (pos > dataMax || pos < dataMin) {\n tick.label?.hide();\n }\n }\n }\n}\n/* *\n *\n * Class\n *\n * */\nclass BubbleSeries extends ScatterSeries {\n /* *\n *\n * Static Functions\n *\n * */\n static compose(AxisClass, ChartClass, LegendClass) {\n Bubble_BubbleLegendComposition.compose(ChartClass, LegendClass);\n if (BubbleSeries_pushUnique(BubbleSeries_composed, 'Series.Bubble')) {\n BubbleSeries_addEvent(AxisClass, 'foundExtremes', onAxisFoundExtremes);\n BubbleSeries_addEvent(AxisClass, 'afterRender', onAxisAfterRender);\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Perform animation on the bubbles\n * @private\n */\n animate(init) {\n if (!init &&\n this.points.length < this.options.animationLimit // #8099\n ) {\n this.points.forEach(function (point) {\n const { graphic, plotX = 0, plotY = 0 } = point;\n if (graphic && graphic.width) { // URL symbols don't have width\n // Start values\n if (!this.hasRendered) {\n graphic.attr({\n x: plotX,\n y: plotY,\n width: 1,\n height: 1\n });\n }\n graphic.animate(this.markerAttribs(point), this.options.animation);\n }\n }, this);\n }\n }\n /**\n * Get the radius for each point based on the minSize, maxSize and each\n * point's Z value. This must be done prior to Series.translate because\n * the axis needs to add padding in accordance with the point sizes.\n * @private\n */\n getRadii() {\n const zData = this.getColumn('z'), yData = this.getColumn('y'), radii = [];\n let len, i, value, zExtremes = this.chart.bubbleZExtremes;\n const { minPxSize, maxPxSize } = this.getPxExtremes();\n // Get the collective Z extremes of all bubblish series. The chart-level\n // `bubbleZExtremes` are only computed once, and reset on `updatedData`\n // in any member series.\n if (!zExtremes) {\n let zMin = Number.MAX_VALUE;\n let zMax = -Number.MAX_VALUE;\n let valid;\n this.chart.series.forEach((otherSeries) => {\n if (otherSeries.bubblePadding && otherSeries.reserveSpace()) {\n const zExtremes = (otherSeries.onPoint || otherSeries).getZExtremes();\n if (zExtremes) {\n // Changed '||' to 'pick' because min or max can be 0.\n // #17280\n zMin = Math.min(BubbleSeries_pick(zMin, zExtremes.zMin), zExtremes.zMin);\n zMax = Math.max(BubbleSeries_pick(zMax, zExtremes.zMax), zExtremes.zMax);\n valid = true;\n }\n }\n });\n if (valid) {\n zExtremes = { zMin, zMax };\n this.chart.bubbleZExtremes = zExtremes;\n }\n else {\n zExtremes = { zMin: 0, zMax: 0 };\n }\n }\n // Set the shape type and arguments to be picked up in drawPoints\n for (i = 0, len = zData.length; i < len; i++) {\n value = zData[i];\n // Separate method to get individual radius for bubbleLegend\n radii.push(this.getRadius(zExtremes.zMin, zExtremes.zMax, minPxSize, maxPxSize, value, yData && yData[i]));\n }\n this.radii = radii;\n }\n /**\n * Get the individual radius for one point.\n * @private\n */\n getRadius(zMin, zMax, minSize, maxSize, value, yValue) {\n const options = this.options, sizeByArea = options.sizeBy !== 'width', zThreshold = options.zThreshold;\n let zRange = zMax - zMin, pos = 0.5;\n // #8608 - bubble should be visible when z is undefined\n if (yValue === null || value === null) {\n return null;\n }\n if (BubbleSeries_isNumber(value)) {\n // When sizing by threshold, the absolute value of z determines\n // the size of the bubble.\n if (options.sizeByAbsoluteValue) {\n value = Math.abs(value - zThreshold);\n zMax = zRange = Math.max(zMax - zThreshold, Math.abs(zMin - zThreshold));\n zMin = 0;\n }\n // Issue #4419 - if value is less than zMin, push a radius that's\n // always smaller than the minimum size\n if (value < zMin) {\n return minSize / 2 - 1;\n }\n // Relative size, a number between 0 and 1\n if (zRange > 0) {\n pos = (value - zMin) / zRange;\n }\n }\n if (sizeByArea && pos >= 0) {\n pos = Math.sqrt(pos);\n }\n return Math.ceil(minSize + pos * (maxSize - minSize)) / 2;\n }\n /**\n * Define hasData function for non-cartesian series.\n * Returns true if the series has points at all.\n * @private\n */\n hasData() {\n return !!this.dataTable.rowCount;\n }\n /**\n * @private\n */\n markerAttribs(point, state) {\n const attr = super.markerAttribs(point, state), { height = 0, width = 0 } = attr;\n // Bubble needs a specific `markerAttribs` override because the markers\n // are rendered into the potentially inverted `series.group`. Unlike\n // regular markers, which are rendered into the `markerGroup` (#21125).\n return this.chart.inverted ? BubbleSeries_extend(attr, {\n x: (point.plotX || 0) - width / 2,\n y: (point.plotY || 0) - height / 2\n }) : attr;\n }\n /**\n * @private\n */\n pointAttribs(point, state) {\n const markerOptions = this.options.marker, fillOpacity = markerOptions.fillOpacity, attr = Series.prototype.pointAttribs.call(this, point, state);\n if (fillOpacity !== 1) {\n attr.fill = BubbleSeries_color(attr.fill)\n .setOpacity(fillOpacity)\n .get('rgba');\n }\n return attr;\n }\n /**\n * Extend the base translate method to handle bubble size\n * @private\n */\n translate() {\n // Run the parent method\n super.translate.call(this);\n this.getRadii();\n this.translateBubble();\n }\n translateBubble() {\n const { data, options, radii } = this, { minPxSize } = this.getPxExtremes();\n // Set the shape type and arguments to be picked up in drawPoints\n let i = data.length;\n while (i--) {\n const point = data[i], radius = radii ? radii[i] : 0; // #1737\n // Negative points means negative z values (#9728)\n if (this.zoneAxis === 'z') {\n point.negative = (point.z || 0) < (options.zThreshold || 0);\n }\n if (BubbleSeries_isNumber(radius) && radius >= minPxSize / 2) {\n // Shape arguments\n point.marker = BubbleSeries_extend(point.marker, {\n radius,\n width: 2 * radius,\n height: 2 * radius\n });\n // Alignment box for the data label\n point.dlBox = {\n x: point.plotX - radius,\n y: point.plotY - radius,\n width: 2 * radius,\n height: 2 * radius\n };\n }\n else { // Below zThreshold\n // #1691\n point.shapeArgs = point.plotY = point.dlBox = void 0;\n point.isInside = false; // #17281\n }\n }\n }\n getPxExtremes() {\n const smallestSize = Math.min(this.chart.plotWidth, this.chart.plotHeight);\n const getPxSize = (length) => {\n let isPercent;\n if (typeof length === 'string') {\n isPercent = /%$/.test(length);\n length = parseInt(length, 10);\n }\n return isPercent ? smallestSize * length / 100 : length;\n };\n const minPxSize = getPxSize(BubbleSeries_pick(this.options.minSize, 8));\n // Prioritize min size if conflict to make sure bubbles are\n // always visible. #5873\n const maxPxSize = Math.max(getPxSize(BubbleSeries_pick(this.options.maxSize, '20%')), minPxSize);\n return { minPxSize, maxPxSize };\n }\n getZExtremes() {\n const options = this.options, zData = this.getColumn('z').filter(BubbleSeries_isNumber);\n if (zData.length) {\n const zMin = BubbleSeries_pick(options.zMin, clamp(BubbleSeries_arrayMin(zData), options.displayNegative === false ?\n (options.zThreshold || 0) :\n -Number.MAX_VALUE, Number.MAX_VALUE));\n const zMax = BubbleSeries_pick(options.zMax, BubbleSeries_arrayMax(zData));\n if (BubbleSeries_isNumber(zMin) && BubbleSeries_isNumber(zMax)) {\n return { zMin, zMax };\n }\n }\n }\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n searchKDTree(point, compareX, e, suppliedPointEvaluator = BubbleSeries_noop, suppliedBSideCheckEvaluator = BubbleSeries_noop) {\n suppliedPointEvaluator = (p1, p2, comparisonProp) => {\n const p1Dist = p1[comparisonProp] || 0;\n const p2Dist = p2[comparisonProp] || 0;\n let ret, flip = false;\n if (p1Dist < 0 && p2Dist < 0) {\n ret = (p1Dist - (p1.marker?.radius || 0) >=\n p2Dist - (p2.marker?.radius || 0)) ?\n p1 :\n p2;\n flip = true;\n }\n else {\n ret = p1Dist < p2Dist ? p1 : p2;\n }\n return [ret, flip];\n };\n suppliedBSideCheckEvaluator = (a, b, flip) => !flip && (a > b) || (a < b);\n return super.searchKDTree(point, compareX, e, suppliedPointEvaluator, suppliedBSideCheckEvaluator);\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\n/**\n * A bubble series is a three dimensional series type where each point\n * renders an X, Y and Z value. Each points is drawn as a bubble where the\n * position along the X and Y axes mark the X and Y values, and the size of\n * the bubble relates to the Z value.\n *\n * @sample {highcharts} highcharts/demo/bubble/\n * Bubble chart\n *\n * @extends plotOptions.scatter\n * @excluding cluster\n * @product highcharts highstock\n * @requires highcharts-more\n * @optionparent plotOptions.bubble\n */\nBubbleSeries.defaultOptions = BubbleSeries_merge(ScatterSeries.defaultOptions, {\n dataLabels: {\n formatter: function () {\n const { numberFormatter } = this.series.chart;\n const { z } = this.point;\n return BubbleSeries_isNumber(z) ? numberFormatter(z, -1) : '';\n },\n inside: true,\n verticalAlign: 'middle'\n },\n /**\n * If there are more points in the series than the `animationLimit`, the\n * animation won't run. Animation affects overall performance and\n * doesn't work well with heavy data series.\n *\n * @since 6.1.0\n */\n animationLimit: 250,\n /**\n * Whether to display negative sized bubbles. The threshold is given\n * by the [zThreshold](#plotOptions.bubble.zThreshold) option, and negative\n * bubbles can be visualized by setting\n * [negativeColor](#plotOptions.bubble.negativeColor).\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-negative/\n * Negative bubbles\n *\n * @type {boolean}\n * @default true\n * @since 3.0\n * @apioption plotOptions.bubble.displayNegative\n */\n /**\n * @extends plotOptions.series.marker\n * @excluding enabled, enabledThreshold, height, radius, width\n */\n marker: {\n lineColor: null, // Inherit from series.color\n lineWidth: 1,\n /**\n * The fill opacity of the bubble markers.\n */\n fillOpacity: 0.5,\n /**\n * In bubble charts, the radius is overridden and determined based\n * on the point's data value.\n *\n * @ignore-option\n */\n radius: null,\n states: {\n hover: {\n radiusPlus: 0\n }\n },\n /**\n * A predefined shape or symbol for the marker. Possible values are\n * \"circle\", \"square\", \"diamond\", \"triangle\" and \"triangle-down\".\n *\n * Additionally, the URL to a graphic can be given on the form\n * `url(graphic.png)`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-symbol/\n * Bubble chart with various symbols\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * General chart with predefined, graphic and custom markers\n *\n * @type {Highcharts.SymbolKeyValue|string}\n * @since 5.0.11\n */\n symbol: 'circle'\n },\n /**\n * Minimum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the `z` value of each bubble.\n * Can be either pixels (when no unit is given), or a percentage of\n * the smallest one of the plot width and height.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n * @since 3.0\n * @product highcharts highstock\n */\n minSize: 8,\n /**\n * Maximum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the `z` value of each bubble.\n * Can be either pixels (when no unit is given), or a percentage of\n * the smallest one of the plot width and height.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n * @since 3.0\n * @product highcharts highstock\n */\n maxSize: '20%',\n /**\n * When a point's Z value is below the\n * [zThreshold](#plotOptions.bubble.zThreshold)\n * setting, this color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-negative/\n * Negative bubbles\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.bubble.negativeColor\n */\n /**\n * Whether the bubble's value should be represented by the area or the\n * width of the bubble. The default, `area`, corresponds best to the\n * human perception of the size of each bubble.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-sizeby/\n * Comparison of area and size\n *\n * @type {Highcharts.BubbleSizeByValue}\n * @default area\n * @since 3.0.7\n * @apioption plotOptions.bubble.sizeBy\n */\n /**\n * When this is true, the absolute value of z determines the size of\n * the bubble. This means that with the default `zThreshold` of 0, a\n * bubble of value -1 will have the same size as a bubble of value 1,\n * while a bubble of value 0 will have a smaller size according to\n * `minSize`.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-sizebyabsolutevalue/\n * Size by absolute value, various thresholds\n *\n * @type {boolean}\n * @default false\n * @since 4.1.9\n * @product highcharts\n * @apioption plotOptions.bubble.sizeByAbsoluteValue\n */\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts\n */\n softThreshold: false,\n states: {\n hover: {\n halo: {\n size: 5\n }\n }\n },\n tooltip: {\n pointFormat: '({point.x}, {point.y}), Size: {point.z}'\n },\n turboThreshold: 0,\n /**\n * The minimum for the Z value range. Defaults to the highest Z value\n * in the data.\n *\n * @see [zMin](#plotOptions.bubble.zMin)\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-zmin-zmax/\n * Z has a possible range of 0-100\n *\n * @type {number}\n * @since 4.0.3\n * @product highcharts\n * @apioption plotOptions.bubble.zMax\n */\n /**\n * @default z\n * @apioption plotOptions.bubble.colorKey\n */\n /**\n * The minimum for the Z value range. Defaults to the lowest Z value\n * in the data.\n *\n * @see [zMax](#plotOptions.bubble.zMax)\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-zmin-zmax/\n * Z has a possible range of 0-100\n *\n * @type {number}\n * @since 4.0.3\n * @product highcharts\n * @apioption plotOptions.bubble.zMin\n */\n /**\n * When [displayNegative](#plotOptions.bubble.displayNegative) is `false`,\n * bubbles with lower Z values are skipped. When `displayNegative`\n * is `true` and a [negativeColor](#plotOptions.bubble.negativeColor)\n * is given, points with lower Z is colored.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-negative/\n * Negative bubbles\n *\n * @since 3.0\n * @product highcharts\n */\n zThreshold: 0,\n zoneAxis: 'z'\n});\nBubbleSeries_extend(BubbleSeries.prototype, {\n alignDataLabel: BubbleSeries_columnProto.alignDataLabel,\n applyZones: BubbleSeries_noop,\n bubblePadding: true,\n isBubble: true,\n keysAffectYAxis: ['y'],\n pointArrayMap: ['y', 'z'],\n pointClass: Bubble_BubblePoint,\n parallelArrays: ['x', 'y', 'z'],\n trackerGroups: ['group', 'dataLabelsGroup'],\n specialGroup: 'group', // To allow clipping (#6296)\n zoneAxis: 'z'\n});\n// On updated data in any series, delete the chart-level Z extremes cache\nBubbleSeries_addEvent(BubbleSeries, 'updatedData', (e) => {\n delete e.target.chart.bubbleZExtremes;\n});\n// After removing series, delete the chart-level Z extremes cache, #17502.\nBubbleSeries_addEvent(BubbleSeries, 'remove', (e) => {\n delete e.target.chart.bubbleZExtremes;\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('bubble', BubbleSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Bubble_BubbleSeries = (BubbleSeries);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * @typedef {\"area\"|\"width\"} Highcharts.BubbleSizeByValue\n */\n''; // Detach doclets above\n/* *\n *\n * API Options\n *\n * */\n/**\n * A `bubble` series. If the [type](#series.bubble.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bubble\n * @excluding dataParser, dataURL, legendSymbolColor, stack\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.bubble\n */\n/**\n * An array of data points for the series. For the `bubble` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,y,z`. If the first value is a string, it is applied as the name of\n * the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 1, 2],\n * [1, 5, 5],\n * [2, 0, 2]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bubble.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * z: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 5,\n * z: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.line.data\n * @product highcharts\n * @apioption series.bubble.data\n */\n/**\n * @extends series.line.data.marker\n * @excluding enabledThreshold, height, radius, width\n * @product highcharts\n * @apioption series.bubble.data.marker\n */\n/**\n * The size value for each bubble. The bubbles' diameters are computed\n * based on the `z`, and controlled by series options like `minSize`,\n * `maxSize`, `sizeBy`, `zMin` and `zMax`.\n *\n * @type {number|null}\n * @product highcharts\n * @apioption series.bubble.data.z\n */\n/**\n * @excluding enabled, enabledThreshold, height, radius, width\n * @apioption series.bubble.marker\n */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es-modules/Series/ColumnRange/ColumnRangePoint.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 { seriesTypes: { column: { prototype: { pointClass: { prototype: ColumnRangePoint_columnProto } } }, arearange: { prototype: { pointClass: ColumnRangePoint_AreaRangePoint } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { extend: ColumnRangePoint_extend, isNumber: ColumnRangePoint_isNumber } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass ColumnRangePoint extends ColumnRangePoint_AreaRangePoint {\n /* *\n *\n * Functions\n *\n * */\n isValid() {\n return ColumnRangePoint_isNumber(this.low);\n }\n}\nColumnRangePoint_extend(ColumnRangePoint.prototype, {\n setState: ColumnRangePoint_columnProto.setState\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const ColumnRange_ColumnRangePoint = (ColumnRangePoint);\n\n;// ./code/es-modules/Series/ColumnRange/ColumnRangeSeries.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\nconst { noop: ColumnRangeSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { seriesTypes: { arearange: ColumnRangeSeries_AreaRangeSeries, column: ColumnSeries, column: { prototype: ColumnRangeSeries_columnProto } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { addEvent: ColumnRangeSeries_addEvent, clamp: ColumnRangeSeries_clamp, extend: ColumnRangeSeries_extend, isNumber: ColumnRangeSeries_isNumber, merge: ColumnRangeSeries_merge, pick: ColumnRangeSeries_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\n/**\n * The column range is a cartesian series type with higher and lower\n * Y values along an X axis. To display horizontal bars, set\n * [chart.inverted](#chart.inverted) to `true`.\n *\n * @sample {highcharts|highstock} highcharts/demo/columnrange/\n * Inverted column range\n *\n * @extends plotOptions.column\n * @since 2.3.0\n * @excluding negativeColor, stacking, softThreshold, threshold\n * @product highcharts highstock\n * @requires highcharts-more\n * @optionparent plotOptions.columnrange\n */\nconst columnRangeOptions = {\n borderRadius: {\n where: 'all'\n },\n /**\n * Extended data labels for range series types. Range series data labels\n * have no `x` and `y` options. Instead, they have `xLow`, `xHigh`,\n * `yLow` and `yHigh` options to allow the higher and lower data label\n * sets individually.\n *\n * @declare Highcharts.SeriesAreaRangeDataLabelsOptionsObject\n * @extends plotOptions.arearange.dataLabels\n * @since 2.3.0\n * @product highcharts highstock\n * @apioption plotOptions.columnrange.dataLabels\n */\n pointRange: null,\n legendSymbol: 'rectangle',\n /** @ignore-option */\n marker: null,\n states: {\n hover: {\n /** @ignore-option */\n halo: false\n }\n }\n};\n/* *\n *\n * Class\n *\n * */\n/**\n * The ColumnRangeSeries class\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.columnrange\n *\n * @augments Highcharts.Series\n */\nclass ColumnRangeSeries extends ColumnRangeSeries_AreaRangeSeries {\n /* *\n *\n * Functions\n *\n * */\n setOptions() {\n // #14359 Prevent side-effect from stacking.\n ColumnRangeSeries_merge(true, arguments[0], { stacking: void 0 });\n return ColumnRangeSeries_AreaRangeSeries.prototype.setOptions.apply(this, arguments);\n }\n // Overrides from modules that may be loaded after this module\n // @todo move to compositions\n translate() {\n return ColumnRangeSeries_columnProto.translate.apply(this);\n }\n // Public crispCol(): BBoxObject {\n // return columnProto.crispCol.apply(this, arguments as any);\n // }\n // public drawPoints(): void {\n // return columnProto.drawPoints.apply(this, arguments as any);\n // }\n // public drawTracker(): void {\n // return columnProto.drawTracker.apply(this, arguments as any);\n // }\n // public getColumnMetrics(): ColumnMetricsObject {\n // return columnProto.getColumnMetrics.apply(this, arguments as any);\n // }\n pointAttribs() {\n return ColumnRangeSeries_columnProto.pointAttribs.apply(this, arguments);\n }\n // Public adjustForMissingColumns(): number {\n // return columnProto.adjustForMissingColumns.apply(this, arguments);\n // }\n // public animate(): void {\n // return columnProto.animate.apply(this, arguments as any);\n // }\n translate3dPoints() {\n return ColumnRangeSeries_columnProto.translate3dPoints.apply(this, arguments);\n }\n translate3dShapes() {\n return ColumnRangeSeries_columnProto.translate3dShapes.apply(this, arguments);\n }\n afterColumnTranslate() {\n /**\n * Translate data points from raw values x and y to plotX and plotY\n * @private\n */\n const yAxis = this.yAxis, xAxis = this.xAxis, startAngleRad = xAxis.startAngleRad, chart = this.chart, isRadial = this.xAxis.isRadial, safeDistance = Math.max(chart.chartWidth, chart.chartHeight) + 999;\n let height, heightDifference, start, y;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Don't draw too far outside plot area (#6835)\n * @private\n */\n function safeBounds(pixelPos) {\n return ColumnRangeSeries_clamp(pixelPos, -safeDistance, safeDistance);\n }\n // Set plotLow and plotHigh\n this.points.forEach((point) => {\n const shapeArgs = point.shapeArgs || {}, minPointLength = this.options.minPointLength, plotY = point.plotY, plotHigh = yAxis.translate(point.high, 0, 1, 0, 1);\n if (ColumnRangeSeries_isNumber(plotHigh) && ColumnRangeSeries_isNumber(plotY)) {\n point.plotHigh = safeBounds(plotHigh);\n point.plotLow = safeBounds(plotY);\n // Adjust shape\n y = point.plotHigh;\n height = ColumnRangeSeries_pick(point.rectPlotY, point.plotY) - point.plotHigh;\n // Adjust for minPointLength\n if (Math.abs(height) < minPointLength) {\n heightDifference = (minPointLength - height);\n height += heightDifference;\n y -= heightDifference / 2;\n // Adjust for negative ranges or reversed Y axis (#1457)\n }\n else if (height < 0) {\n height *= -1;\n y -= height;\n }\n if (isRadial && this.polar) {\n start = point.barX + startAngleRad;\n point.shapeType = 'arc';\n point.shapeArgs = this.polar.arc(y + height, y, start, start + point.pointWidth);\n }\n else {\n shapeArgs.height = height;\n shapeArgs.y = y;\n const { x = 0, width = 0 } = shapeArgs;\n // #17912, aligning column range points\n // merge if shapeArgs contains more properties e.g. for 3d\n point.shapeArgs = ColumnRangeSeries_merge(point.shapeArgs, this.crispCol(x, y, width, height));\n point.tooltipPos = chart.inverted ?\n [\n yAxis.len + yAxis.pos - chart.plotLeft - y -\n height / 2,\n xAxis.len + xAxis.pos - chart.plotTop - x -\n width / 2,\n height\n ] : [\n xAxis.left - chart.plotLeft + x + width / 2,\n yAxis.pos - chart.plotTop + y + height / 2,\n height\n ]; // Don't inherit from column tooltip position - #3372\n }\n }\n });\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nColumnRangeSeries.defaultOptions = ColumnRangeSeries_merge(ColumnSeries.defaultOptions, ColumnRangeSeries_AreaRangeSeries.defaultOptions, columnRangeOptions);\nColumnRangeSeries_addEvent(ColumnRangeSeries, 'afterColumnTranslate', function () {\n ColumnRangeSeries.prototype.afterColumnTranslate.apply(this);\n}, { order: 5 });\nColumnRangeSeries_extend(ColumnRangeSeries.prototype, {\n directTouch: true,\n pointClass: ColumnRange_ColumnRangePoint,\n trackerGroups: ['group', 'dataLabelsGroup'],\n adjustForMissingColumns: ColumnRangeSeries_columnProto.adjustForMissingColumns,\n animate: ColumnRangeSeries_columnProto.animate,\n crispCol: ColumnRangeSeries_columnProto.crispCol,\n drawGraph: ColumnRangeSeries_noop,\n drawPoints: ColumnRangeSeries_columnProto.drawPoints,\n getSymbol: ColumnRangeSeries_noop,\n drawTracker: ColumnRangeSeries_columnProto.drawTracker,\n getColumnMetrics: ColumnRangeSeries_columnProto.getColumnMetrics\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('columnrange', ColumnRangeSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const ColumnRange_ColumnRangeSeries = ((/* unused pure expression or super */ null && (ColumnRangeSeries)));\n/* *\n *\n * API Options\n *\n * */\n/**\n * A `columnrange` series. If the [type](#series.columnrange.type)\n * option is not specified, it is inherited from\n * [chart.type](#chart.type).\n *\n * @extends series,plotOptions.columnrange\n * @excluding dataParser, dataURL, stack, stacking\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.columnrange\n */\n/**\n * An array of data points for the series. For the `columnrange` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,low,high`. If the first value is a string, it is applied as the name\n * of the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 4, 2],\n * [1, 2, 1],\n * [2, 9, 10]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.columnrange.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * low: 0,\n * high: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 5,\n * high: 3,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.arearange.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.columnrange.data\n */\n/**\n * @extends series.columnrange.dataLabels\n * @product highcharts highstock\n * @apioption series.columnrange.data.dataLabels\n */\n/**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnrange.states.hover\n */\n/**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnrange.states.select\n */\n''; // Adds doclets above into transpiled\n\n;// ./code/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesDefaults.js\n/* *\n *\n * (c) 2010-2024 Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * API Options\n *\n * */\n/**\n * Column pyramid series display one pyramid per value along an X axis.\n * To display horizontal pyramids, set [chart.inverted](#chart.inverted) to\n * `true`.\n *\n * @sample {highcharts|highstock} highcharts/demo/column-pyramid/\n * Column pyramid\n * @sample {highcharts|highstock} highcharts/plotoptions/columnpyramid-stacked/\n * Column pyramid stacked\n * @sample {highcharts|highstock} highcharts/plotoptions/columnpyramid-inverted/\n * Column pyramid inverted\n *\n * @extends plotOptions.column\n * @since 7.0.0\n * @product highcharts highstock\n * @excluding boostThreshold, borderRadius, crisp, depth, edgeColor,\n * edgeWidth, groupZPadding, negativeColor, softThreshold,\n * threshold, zoneAxis, zones, boostBlending\n * @requires highcharts-more\n * @optionparent plotOptions.columnpyramid\n */\nconst ColumnPyramidSeriesDefaults = {};\n/**\n * A `columnpyramid` series. If the [type](#series.columnpyramid.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.columnpyramid\n * @excluding connectEnds, connectNulls, dashStyle, dataParser, dataURL,\n * gapSize, gapUnit, linecap, lineWidth, marker, step,\n * boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.columnpyramid\n */\n/**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnpyramid.states.hover\n */\n/**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnpyramid.states.select\n */\n/**\n * An array of data points for the series. For the `columnpyramid` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The objects are point configuration\n * objects as seen below. If the total number of data points exceeds the\n * series' [turboThreshold](#series.columnpyramid.turboThreshold), this\n * option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.columnpyramid.data\n */\n''; // Keeps doclets above separate\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const ColumnPyramid_ColumnPyramidSeriesDefaults = (ColumnPyramidSeriesDefaults);\n\n;// ./code/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js\n/* *\n *\n * (c) 2010-2024 Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { column: ColumnPyramidSeries_ColumnSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { clamp: ColumnPyramidSeries_clamp, merge: ColumnPyramidSeries_merge, pick: ColumnPyramidSeries_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n * The ColumnPyramidSeries class\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.columnpyramid\n *\n * @augments Highcharts.Series\n */\nclass ColumnPyramidSeries extends ColumnPyramidSeries_ColumnSeries {\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrides the column translate method\n * @private\n */\n translate() {\n const series = this, chart = series.chart, options = series.options, dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2, borderWidth = series.borderWidth = ColumnPyramidSeries_pick(options.borderWidth, dense ? 0 : 1 // #3635\n ), yAxis = series.yAxis, threshold = options.threshold, minPointLength = ColumnPyramidSeries_pick(options.minPointLength, 5), metrics = series.getColumnMetrics(), pointWidth = metrics.width, pointXOffset = series.pointXOffset = metrics.offset;\n let translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold), \n // Postprocessed for border width\n seriesBarW = series.barW =\n Math.max(pointWidth, 1 + 2 * borderWidth);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0,\n // we want the pyramids to be packed tightly,\n // so we allow individual pyramids to have individual sizes.\n // When pointPadding is greater,\n // we strive for equal-width columns (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n super.translate();\n // Record the new values\n for (const point of series.points) {\n const yBottom = ColumnPyramidSeries_pick(point.yBottom, translatedThreshold), safeDistance = 999 + Math.abs(yBottom), plotY = ColumnPyramidSeries_clamp(point.plotY, -safeDistance, yAxis.len + safeDistance), \n // Don't draw too far outside plot area\n // (#1303, #2241, #4264)\n barW = seriesBarW / 2, barY = Math.min(plotY, yBottom), barH = Math.max(plotY, yBottom) - barY;\n let barX = point.plotX + pointXOffset, stackTotal, stackHeight, topXwidth, bottomXwidth, invBarPos, x1, x2, x3, x4, y1, y2;\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped pyramids\n // (#1216, #424, #3648)\n point.tooltipPos = chart.inverted ?\n [\n yAxis.len + yAxis.pos - chart.plotLeft - plotY,\n series.xAxis.len - barX - barW,\n barH\n ] :\n [\n barX + barW,\n plotY + yAxis.pos - chart.plotTop,\n barH\n ];\n stackTotal =\n threshold + (point.total || point.y);\n // Overwrite stacktotal (always 100 / -100)\n if (options.stacking === 'percent') {\n stackTotal =\n threshold + (point.y < 0) ?\n -100 :\n 100;\n }\n // Get the highest point (if stack, extract from total)\n const topPointY = yAxis.toPixels((stackTotal), true);\n // Calculate height of stack (in pixels)\n stackHeight =\n chart.plotHeight - topPointY -\n (chart.plotHeight - translatedThreshold);\n // `topXwidth` and `bottomXwidth` = width of lines from the center\n // calculated from tanges proportion. Cannot be a NaN #12514.\n topXwidth = stackHeight ?\n (barW * (barY - topPointY)) / stackHeight : 0;\n // Like topXwidth, but with height of point\n bottomXwidth = stackHeight ?\n (barW * (barY + barH - topPointY)) / stackHeight :\n 0;\n /*\n /\\\n / \\\n x1,y1,------ x2,y1\n / \\\n -----------\n x4,y2 x3,y2\n */\n x1 = barX - topXwidth + barW;\n x2 = barX + topXwidth + barW;\n x3 = barX + bottomXwidth + barW;\n x4 = barX - bottomXwidth + barW;\n y1 = barY - minPointLength;\n y2 = barY + barH;\n if (point.y < 0) {\n y1 = barY;\n y2 = barY + barH + minPointLength;\n }\n // Inverted chart\n if (chart.inverted) {\n invBarPos = yAxis.width - barY;\n stackHeight =\n topPointY - (yAxis.width - translatedThreshold);\n // Proportion tanges\n topXwidth = (barW *\n (topPointY - invBarPos)) / stackHeight;\n bottomXwidth = (barW *\n (topPointY - (invBarPos - barH))) / stackHeight;\n x1 = barX + barW + topXwidth; // Top bottom\n x2 = x1 - 2 * topXwidth; // Top top\n x3 = barX - bottomXwidth + barW; // Bottom top\n x4 = barX + bottomXwidth + barW; // Bottom bottom\n y1 = barY;\n y2 = barY + barH - minPointLength;\n if (point.y < 0) {\n y2 = barY + barH + minPointLength;\n }\n }\n // Register shape type and arguments to be used in drawPoints\n point.shapeType = 'path';\n point.shapeArgs = {\n x: x1,\n y: y1,\n width: x2 - x1,\n height: barH,\n // Path of pyramid\n d: [\n ['M', x1, y1],\n ['L', x2, y1],\n ['L', x3, y2],\n ['L', x4, y2],\n ['Z']\n ]\n };\n }\n }\n}\n/* *\n *\n * Static properties\n *\n * */\nColumnPyramidSeries.defaultOptions = ColumnPyramidSeries_merge(ColumnPyramidSeries_ColumnSeries.defaultOptions, ColumnPyramid_ColumnPyramidSeriesDefaults);\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('columnpyramid', ColumnPyramidSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const ColumnPyramid_ColumnPyramidSeries = ((/* unused pure expression or super */ null && (ColumnPyramidSeries)));\n\n;// ./code/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.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 * API Options\n *\n * */\n/**\n * Error bars are a graphical representation of the variability of data and\n * are used on graphs to indicate the error, or uncertainty in a reported\n * measurement.\n *\n * @sample highcharts/demo/error-bar/\n * Error bars on a column series\n * @sample highcharts/series-errorbar/on-scatter/\n * Error bars on a scatter series\n * @sample highcharts/series-errorbar/datalabels/\n * Error bars with data labels\n *\n * @extends plotOptions.boxplot\n * @excluding boostBlending, boostThreshold\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.errorbar\n */\nconst ErrorBarSeriesDefaults = {\n /**\n * The main color of the bars. This can be overridden by\n * [stemColor](#plotOptions.errorbar.stemColor) and\n * [whiskerColor](#plotOptions.errorbar.whiskerColor) individually.\n *\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @since 3.0\n * @product highcharts\n */\n color: \"#000000\" /* Palette.neutralColor100 */,\n grouping: false,\n /**\n * The parent series of the error bar. The default value links it to\n * the previous series. Otherwise, use the id of the parent series.\n *\n * @since 3.0\n * @product highcharts\n */\n linkedTo: ':previous',\n tooltip: {\n pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'\n },\n /**\n * The line width of the whiskers, the horizontal lines marking\n * low and high values. When `null`, the general\n * [lineWidth](#plotOptions.errorbar.lineWidth) applies.\n *\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {number}\n * @since 3.0\n * @product highcharts\n */\n whiskerWidth: null\n};\n/**\n * A `errorbar` series. If the [type](#series.errorbar.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.errorbar\n * @excluding dataParser, dataURL, stack, stacking, boostThreshold,\n * boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.errorbar\n */\n/**\n * An array of data points for the series. For the `errorbar` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,low,high`. If the first value is a string, it is applied as the name\n * of the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 10, 2],\n * [1, 1, 8],\n * [2, 4, 5]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.errorbar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * low: 0,\n * high: 0,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 5,\n * high: 5,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.arearange.data\n * @excluding dataLabels, drilldown, marker, states\n * @product highcharts\n * @apioption series.errorbar.data\n */\n''; // Adds doclets above to transpiled file\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const ErrorBar_ErrorBarSeriesDefaults = (ErrorBarSeriesDefaults);\n\n;// ./code/es-modules/Series/ErrorBar/ErrorBarSeries.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\n\nconst { arearange: ErrorBarSeries_AreaRangeSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { addEvent: ErrorBarSeries_addEvent, merge: ErrorBarSeries_merge, extend: ErrorBarSeries_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n * Errorbar series type\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.errorbar\n *\n * @augments Highcharts.Series\n */\nclass ErrorBarSeries extends BoxPlot_BoxPlotSeries {\n /* *\n *\n * Functions\n *\n * */\n getColumnMetrics() {\n const series = this;\n // Get the width and X offset, either on top of the linked series\n // column or standalone\n return ((series.linkedParent && series.linkedParent.columnMetrics) ||\n highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default().prototype.getColumnMetrics.call(series));\n }\n drawDataLabels() {\n const series = this, valKey = series.pointValKey;\n if (ErrorBarSeries_AreaRangeSeries) {\n ErrorBarSeries_AreaRangeSeries.prototype.drawDataLabels.call(series);\n // Arearange drawDataLabels does not reset point.y to high,\n // but to low after drawing (#4133)\n for (const point of series.points) {\n point.y = point[valKey];\n }\n }\n }\n toYData(point) {\n // Return a plain array for speedy calculation\n return [point.low, point.high];\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nErrorBarSeries.defaultOptions = ErrorBarSeries_merge(BoxPlot_BoxPlotSeries.defaultOptions, ErrorBar_ErrorBarSeriesDefaults);\nErrorBarSeries_addEvent(ErrorBarSeries, 'afterTranslate', function () {\n for (const point of this.points) {\n point.plotLow = point.plotY;\n }\n}, { order: 0 });\nErrorBarSeries_extend(ErrorBarSeries.prototype, {\n pointArrayMap: ['low', 'high'], // Array point configs are mapped to this\n pointValKey: 'high', // Defines the top of the tracker\n doQuartiles: false\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('errorbar', ErrorBarSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const ErrorBar_ErrorBarSeries = ((/* unused pure expression or super */ null && (ErrorBarSeries)));\n\n;// ./code/es-modules/Series/Gauge/GaugePoint.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 { series: { prototype: { pointClass: Point } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n/* *\n *\n * Class\n *\n * */\nclass GaugePoint extends Point {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Don't do any hover colors or anything\n * @private\n */\n setState(state) {\n this.state = state;\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Gauge_GaugePoint = (GaugePoint);\n\n;// ./code/es-modules/Series/Gauge/GaugeSeries.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\nconst { noop: GaugeSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { series: GaugeSeries_Series, seriesTypes: { column: GaugeSeries_ColumnSeries } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { clamp: GaugeSeries_clamp, isNumber: GaugeSeries_isNumber, extend: GaugeSeries_extend, merge: GaugeSeries_merge, pick: GaugeSeries_pick, pInt, defined: GaugeSeries_defined } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\n/**\n *\n * The `gauge` series type\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.map\n *\n * @augments Highcharts.Series\n */\nclass GaugeSeries extends GaugeSeries_Series {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Calculate paths etc\n * @private\n */\n translate() {\n const series = this, yAxis = series.yAxis, options = series.options, center = yAxis.center;\n series.generatePoints();\n series.points.forEach((point) => {\n const dialOptions = GaugeSeries_merge(options.dial, point.dial), radius = (pInt(dialOptions.radius) * center[2]) / 200, baseLength = (pInt(dialOptions.baseLength) * radius) / 100, rearLength = (pInt(dialOptions.rearLength) * radius) / 100, baseWidth = dialOptions.baseWidth, topWidth = dialOptions.topWidth;\n let overshoot = options.overshoot, rotation = yAxis.startAngleRad + yAxis.translate(point.y, void 0, void 0, void 0, true);\n // Handle the wrap and overshoot options\n if (GaugeSeries_isNumber(overshoot) || options.wrap === false) {\n overshoot = GaugeSeries_isNumber(overshoot) ?\n (overshoot / 180 * Math.PI) : 0;\n rotation = GaugeSeries_clamp(rotation, yAxis.startAngleRad - overshoot, yAxis.endAngleRad + overshoot);\n }\n rotation = rotation * 180 / Math.PI;\n point.shapeType = 'path';\n const d = dialOptions.path || [\n ['M', -rearLength, -baseWidth / 2],\n ['L', baseLength, -baseWidth / 2],\n ['L', radius, -topWidth / 2],\n ['L', radius, topWidth / 2],\n ['L', baseLength, baseWidth / 2],\n ['L', -rearLength, baseWidth / 2],\n ['Z']\n ];\n point.shapeArgs = {\n d,\n translateX: center[0],\n translateY: center[1],\n rotation: rotation\n };\n // Positions for data label\n point.plotX = center[0];\n point.plotY = center[1];\n if (GaugeSeries_defined(point.y) && yAxis.max - yAxis.min) {\n point.percentage =\n (point.y - yAxis.min) / (yAxis.max - yAxis.min) * 100;\n }\n });\n }\n /**\n * Draw the points where each point is one needle\n * @private\n */\n drawPoints() {\n const series = this, chart = series.chart, center = series.yAxis.center, pivot = series.pivot, options = series.options, pivotOptions = options.pivot, renderer = chart.renderer;\n series.points.forEach((point) => {\n const graphic = point.graphic, shapeArgs = point.shapeArgs, d = shapeArgs.d, dialOptions = GaugeSeries_merge(options.dial, point.dial); // #1233\n if (graphic) {\n graphic.animate(shapeArgs);\n shapeArgs.d = d; // Animate alters it\n }\n else {\n point.graphic =\n renderer[point.shapeType](shapeArgs)\n .addClass('highcharts-dial')\n .add(series.group);\n }\n // Presentational attributes\n if (!chart.styledMode) {\n point.graphic[graphic ? 'animate' : 'attr']({\n stroke: dialOptions.borderColor,\n 'stroke-width': dialOptions.borderWidth,\n fill: dialOptions.backgroundColor\n });\n }\n });\n // Add or move the pivot\n if (pivot) {\n pivot.animate({\n translateX: center[0],\n translateY: center[1]\n });\n }\n else if (pivotOptions) {\n series.pivot =\n renderer.circle(0, 0, pivotOptions.radius)\n .attr({\n zIndex: 2\n })\n .addClass('highcharts-pivot')\n .translate(center[0], center[1])\n .add(series.group);\n // Presentational attributes\n if (!chart.styledMode) {\n series.pivot.attr({\n fill: pivotOptions.backgroundColor,\n stroke: pivotOptions.borderColor,\n 'stroke-width': pivotOptions.borderWidth\n });\n }\n }\n }\n /**\n * Animate the arrow up from startAngle\n * @private\n */\n animate(init) {\n const series = this;\n if (!init) {\n series.points.forEach((point) => {\n const graphic = point.graphic;\n if (graphic) {\n // Start value\n graphic.attr({\n rotation: series.yAxis.startAngleRad * 180 / Math.PI\n });\n // Animate\n graphic.animate({\n rotation: point.shapeArgs.rotation\n }, series.options.animation);\n }\n });\n }\n }\n /**\n * @private\n */\n render() {\n this.group = this.plotGroup('group', 'series', this.visible ? 'inherit' : 'hidden', this.options.zIndex, this.chart.seriesGroup);\n GaugeSeries_Series.prototype.render.call(this);\n this.group.clip(this.chart.clipRect);\n }\n /**\n * Extend the basic setData method by running processData and generatePoints\n * immediately, in order to access the points from the legend.\n * @private\n */\n setData(data, redraw) {\n GaugeSeries_Series.prototype.setData.call(this, data, false);\n this.processData();\n this.generatePoints();\n if (GaugeSeries_pick(redraw, true)) {\n this.chart.redraw();\n }\n }\n /**\n * Define hasData function for non-cartesian series.\n * Returns true if the series has points at all.\n * @private\n */\n hasData() {\n return !!this.points.length; // != 0\n }\n}\n/* *\n *\n * Static properties\n *\n * */\n/**\n * Gauges are circular plots displaying one or more values with a dial\n * pointing to values along the perimeter.\n *\n * @sample highcharts/demo/gauge-speedometer/\n * Gauge chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, colorAxis, colorKey,\n * connectEnds, connectNulls, cropThreshold, dashStyle,\n * dragDrop, findNearestPointBy, getExtremesFromAll, marker,\n * negativeColor, pointPlacement, shadow, softThreshold,\n * stacking, states, step, threshold, turboThreshold, xAxis,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.gauge\n */\nGaugeSeries.defaultOptions = GaugeSeries_merge(GaugeSeries_Series.defaultOptions, {\n /**\n * When this option is `true`, the dial will wrap around the axes.\n * For instance, in a full-range gauge going from 0 to 360, a value\n * of 400 will point to 40\\. When `wrap` is `false`, the dial stops\n * at 360.\n *\n * @see [overshoot](#plotOptions.gauge.overshoot)\n *\n * @type {boolean}\n * @default true\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.gauge.wrap\n */\n /**\n * Data labels for the gauge. For gauges, the data labels are\n * enabled by default and shown in a bordered box below the point.\n *\n * @since 2.3.0\n * @product highcharts\n */\n dataLabels: {\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n borderRadius: 3,\n borderWidth: 1,\n crop: false,\n defer: false,\n enabled: true,\n verticalAlign: 'top',\n y: 15,\n zIndex: 2\n },\n /**\n * Options for the dial or arrow pointer of the gauge.\n *\n * In styled mode, the dial is styled with the\n * `.highcharts-gauge-series .highcharts-dial` rule.\n *\n * @sample {highcharts} highcharts/css/gauge/\n * Styled mode\n *\n * @type {*}\n * @since 2.3.0\n * @product highcharts\n */\n dial: {\n /**\n * The background or fill color of the gauge's dial.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.backgroundColor\n */\n backgroundColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The length of the dial's base part, relative to the total\n * radius or length of the dial.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {string}\n * @default 70%\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.baseLength\n */\n baseLength: '70%',\n /**\n * The pixel width of the base of the gauge dial. The base is\n * the part closest to the pivot, defined by baseLength.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {number}\n * @default 3\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.baseWidth\n */\n baseWidth: 3,\n /**\n * The border color or stroke of the gauge's dial. By default,\n * the borderWidth is 0, so this must be set in addition to a\n * custom border color.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.borderColor\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the gauge dial border in pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.borderWidth\n */\n borderWidth: 0,\n /**\n * An array with an SVG path for the custom dial.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-path/\n * Dial options demonstrated\n *\n * @type {Highcharts.SVGPathArray}\n * @since 10.2.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.path\n */\n /**\n * The radius or length of the dial, in percentages relative to\n * the radius of the gauge itself.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {string}\n * @default 80%\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.radius\n */\n radius: '80%',\n /**\n * The length of the dial's rear end, the part that extends out\n * on the other side of the pivot. Relative to the dial's\n * length.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {string}\n * @default 10%\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.rearLength\n */\n rearLength: '10%',\n /**\n * The width of the top of the dial, closest to the perimeter.\n * The pivot narrows in from the base to the top.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {number}\n * @default 1\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.topWidth\n */\n topWidth: 1\n },\n /**\n * Allow the dial to overshoot the end of the perimeter axis by\n * this many degrees. Say if the gauge axis goes from 0 to 60, a\n * value of 100, or 1000, will show 5 degrees beyond the end of the\n * axis when this option is set to 5.\n *\n * @see [wrap](#plotOptions.gauge.wrap)\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-overshoot/\n * Allow 5 degrees overshoot\n *\n * @type {number}\n * @since 3.0.10\n * @product highcharts\n * @apioption plotOptions.gauge.overshoot\n */\n /**\n * Options for the pivot or the center point of the gauge.\n *\n * In styled mode, the pivot is styled with the\n * `.highcharts-gauge-series .highcharts-pivot` rule.\n *\n * @sample {highcharts} highcharts/css/gauge/\n * Styled mode\n *\n * @type {*}\n * @since 2.3.0\n * @product highcharts\n */\n pivot: {\n /**\n * The pixel radius of the pivot.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {number}\n * @default 5\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.radius\n */\n radius: 5,\n /**\n * The border or stroke width of the pivot.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.borderWidth\n */\n borderWidth: 0,\n /**\n * The border or stroke color of the pivot. In able to change\n * this, the borderWidth must also be set to something other\n * than the default 0.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.borderColor\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The background color or fill of the pivot.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.backgroundColor\n */\n backgroundColor: \"#000000\" /* Palette.neutralColor100 */\n },\n tooltip: {\n headerFormat: ''\n },\n /**\n * Whether to display this particular series or series type in the\n * legend. Defaults to false for gauge series.\n *\n * @since 2.3.0\n * @product highcharts\n */\n showInLegend: false\n // Prototype members\n});\nGaugeSeries_extend(GaugeSeries.prototype, {\n // `chart.angular` will be set to true when a gauge series is present, and\n // this will be used on the axes\n angular: true,\n directTouch: true, // #5063\n drawGraph: GaugeSeries_noop,\n drawTracker: GaugeSeries_ColumnSeries.prototype.drawTracker,\n fixedBox: true,\n forceDL: true,\n noSharedTooltip: true,\n pointClass: Gauge_GaugePoint,\n trackerGroups: ['group', 'dataLabelsGroup']\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('gauge', GaugeSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Gauge_GaugeSeries = ((/* unused pure expression or super */ null && (GaugeSeries)));\n/* *\n *\n * API options\n *\n * */\n/**\n * A `gauge` series. If the [type](#series.gauge.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.gauge\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataParser, dataURL, findNearestPointBy,\n * getExtremesFromAll, marker, negativeColor, pointPlacement, shadow,\n * softThreshold, stack, stacking, states, step, threshold,\n * turboThreshold, zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.gauge\n */\n/**\n * An array of data points for the series. For the `gauge` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.gauge.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * y: 6,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 8,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * The typical gauge only contains a single data value.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|null|*>}\n * @extends series.line.data\n * @excluding drilldown, marker, x\n * @product highcharts\n * @apioption series.gauge.data\n */\n''; // Adds the doclets above in the transpiled file\n\n;// ./code/es-modules/Series/DragNodesComposition.js\n/* *\n *\n * Networkgraph series\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\nconst { composed: DragNodesComposition_composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: DragNodesComposition_addEvent, pushUnique: DragNodesComposition_pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction DragNodesComposition_compose(ChartClass) {\n if (DragNodesComposition_pushUnique(DragNodesComposition_composed, 'DragNodes')) {\n DragNodesComposition_addEvent(ChartClass, 'load', onChartLoad);\n }\n}\n/**\n * Draggable mode:\n * @private\n */\nfunction onChartLoad() {\n const chart = this;\n let mousedownUnbinder, mousemoveUnbinder, mouseupUnbinder;\n if (chart.container) {\n mousedownUnbinder = DragNodesComposition_addEvent(chart.container, 'mousedown', (event) => {\n const point = chart.hoverPoint;\n if (point &&\n point.series &&\n point.series.hasDraggableNodes &&\n point.series.options.draggable) {\n point.series.onMouseDown(point, event);\n mousemoveUnbinder = DragNodesComposition_addEvent(chart.container, 'mousemove', (e) => (point &&\n point.series &&\n point.series.onMouseMove(point, e)));\n mouseupUnbinder = DragNodesComposition_addEvent(chart.container.ownerDocument, 'mouseup', (e) => {\n mousemoveUnbinder();\n mouseupUnbinder();\n return point &&\n point.series &&\n point.series.onMouseUp(point, e);\n });\n }\n });\n }\n DragNodesComposition_addEvent(chart, 'destroy', function () {\n mousedownUnbinder();\n });\n}\n/**\n * Mouse down action, initializing drag&drop mode.\n *\n * @private\n * @param {Highcharts.Point} point\n * The point that event occurred.\n * @param {Highcharts.PointerEventObject} event\n * Browser event, before normalization.\n */\nfunction onMouseDown(point, event) {\n const normalizedEvent = this.chart.pointer?.normalize(event) || event;\n point.fixedPosition = {\n chartX: normalizedEvent.chartX,\n chartY: normalizedEvent.chartY,\n plotX: point.plotX,\n plotY: point.plotY\n };\n point.inDragMode = true;\n}\n/**\n * Mouse move action during drag&drop.\n *\n * @private\n *\n * @param {Highcharts.Point} point\n * The point that event occurred.\n * @param {global.Event} event\n * Browser event, before normalization.\n */\nfunction onMouseMove(point, event) {\n if (point.fixedPosition && point.inDragMode) {\n const series = this, chart = series.chart, normalizedEvent = chart.pointer?.normalize(event) || event, diffX = point.fixedPosition.chartX - normalizedEvent.chartX, diffY = point.fixedPosition.chartY - normalizedEvent.chartY, graphLayoutsLookup = chart.graphLayoutsLookup;\n let newPlotX, newPlotY;\n // At least 5px to apply change (avoids simple click):\n if (Math.abs(diffX) > 5 || Math.abs(diffY) > 5) {\n newPlotX = point.fixedPosition.plotX - diffX;\n newPlotY = point.fixedPosition.plotY - diffY;\n if (chart.isInsidePlot(newPlotX, newPlotY)) {\n point.plotX = newPlotX;\n point.plotY = newPlotY;\n point.hasDragged = true;\n this.redrawHalo(point);\n graphLayoutsLookup.forEach((layout) => {\n layout.restartSimulation();\n });\n }\n }\n }\n}\n/**\n * Mouse up action, finalizing drag&drop.\n *\n * @private\n * @param {Highcharts.Point} point\n * The point that event occurred.\n */\nfunction onMouseUp(point) {\n if (point.fixedPosition) {\n if (point.hasDragged) {\n if (this.layout.enableSimulation) {\n this.layout.start();\n }\n else {\n this.chart.redraw();\n }\n }\n point.inDragMode = point.hasDragged = false;\n if (!this.options.fixedDraggable) {\n delete point.fixedPosition;\n }\n }\n}\n/**\n * Redraw halo on mousemove during the drag&drop action.\n *\n * @private\n * @param {Highcharts.Point} point\n * The point that should show halo.\n */\nfunction redrawHalo(point) {\n if (point && this.halo) {\n this.halo.attr({\n d: point.haloPath(this.options.states.hover.halo.size)\n });\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nconst DragNodesComposition = {\n compose: DragNodesComposition_compose,\n onMouseDown,\n onMouseMove,\n onMouseUp,\n redrawHalo\n};\n/* harmony default export */ const Series_DragNodesComposition = (DragNodesComposition);\n\n;// ./code/es-modules/Series/GraphLayoutComposition.js\n/* *\n *\n * Networkgraph series\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\nconst { setAnimation } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { composed: GraphLayoutComposition_composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: GraphLayoutComposition_addEvent, pushUnique: GraphLayoutComposition_pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\nconst integrations = {};\nconst layouts = {};\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction GraphLayoutComposition_compose(ChartClass) {\n if (GraphLayoutComposition_pushUnique(GraphLayoutComposition_composed, 'GraphLayout')) {\n GraphLayoutComposition_addEvent(ChartClass, 'afterPrint', onChartAfterPrint);\n GraphLayoutComposition_addEvent(ChartClass, 'beforePrint', onChartBeforePrint);\n GraphLayoutComposition_addEvent(ChartClass, 'predraw', onChartPredraw);\n GraphLayoutComposition_addEvent(ChartClass, 'render', onChartRender);\n }\n}\n/**\n * Re-enable simulation after print.\n * @private\n */\nfunction onChartAfterPrint() {\n if (this.graphLayoutsLookup) {\n this.graphLayoutsLookup.forEach((layout) => {\n // Return to default simulation\n layout.updateSimulation();\n });\n this.redraw();\n }\n}\n/**\n * Disable simulation before print if enabled.\n * @private\n */\nfunction onChartBeforePrint() {\n if (this.graphLayoutsLookup) {\n this.graphLayoutsLookup.forEach((layout) => {\n layout.updateSimulation(false);\n });\n this.redraw();\n }\n}\n/**\n * Clear previous layouts.\n * @private\n */\nfunction onChartPredraw() {\n if (this.graphLayoutsLookup) {\n this.graphLayoutsLookup.forEach((layout) => {\n layout.stop();\n });\n }\n}\n/**\n * @private\n */\nfunction onChartRender() {\n let systemsStable, afterRender = false;\n const layoutStep = (layout) => {\n if (layout.maxIterations-- &&\n isFinite(layout.temperature) &&\n !layout.isStable() &&\n !layout.enableSimulation) {\n // Hook similar to build-in addEvent, but instead of\n // creating whole events logic, use just a function.\n // It's faster which is important for rAF code.\n // Used e.g. in packed-bubble series for bubble radius\n // calculations\n if (layout.beforeStep) {\n layout.beforeStep();\n }\n layout.step();\n systemsStable = false;\n afterRender = true;\n }\n };\n if (this.graphLayoutsLookup) {\n setAnimation(false, this);\n // Start simulation\n this.graphLayoutsLookup.forEach((layout) => layout.start());\n // Just one sync step, to run different layouts similar to\n // async mode.\n while (!systemsStable) {\n systemsStable = true;\n this.graphLayoutsLookup.forEach(layoutStep);\n }\n if (afterRender) {\n this.series.forEach((series) => {\n if (series && series.layout) {\n series.render();\n }\n });\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nconst GraphLayoutComposition = {\n compose: GraphLayoutComposition_compose,\n integrations,\n layouts\n};\n/* harmony default export */ const Series_GraphLayoutComposition = (GraphLayoutComposition);\n\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);\nvar highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default = /*#__PURE__*/__webpack_require__.n(highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_);\n;// ./code/es-modules/Series/PackedBubble/PackedBubblePoint.js\n/* *\n *\n * (c) 2010-2024 Grzegorz Blachlinski, Sebastian Bochan\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 { seriesTypes: { bubble: { prototype: { pointClass: PackedBubblePoint_BubblePoint } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n/* *\n *\n * Class\n *\n * */\nclass PackedBubblePoint extends PackedBubblePoint_BubblePoint {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Destroy point.\n * Then remove point from the layout.\n * @private\n */\n destroy() {\n if (this.series?.layout) {\n this.series.layout.removeElementFromCollection(this, this.series.layout.nodes);\n }\n return highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.destroy.apply(this, arguments);\n }\n firePointEvent() {\n const series = this.series, seriesOptions = series.options;\n if (this.isParentNode && seriesOptions.parentNode) {\n const temp = seriesOptions.allowPointSelect;\n seriesOptions.allowPointSelect = (seriesOptions.parentNode.allowPointSelect);\n highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.firePointEvent.apply(this, arguments);\n seriesOptions.allowPointSelect = temp;\n }\n else {\n highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.firePointEvent.apply(this, arguments);\n }\n }\n select() {\n const point = this, series = this.series, chart = series.chart;\n if (point.isParentNode) {\n chart.getSelectedPoints = chart.getSelectedParentNodes;\n highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.select.apply(this, arguments);\n chart.getSelectedPoints = (highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default()).prototype.getSelectedPoints;\n }\n else {\n highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.select.apply(this, arguments);\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const PackedBubble_PackedBubblePoint = (PackedBubblePoint);\n\n;// ./code/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js\n/* *\n *\n * Imports\n *\n * */\n\nconst { isNumber: PackedBubbleSeriesDefaults_isNumber } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Constants\n *\n * */\n/**\n * A packed bubble series is a two dimensional series type, where each point\n * renders a value in X, Y position. Each point is drawn as a bubble\n * where the bubbles don't overlap with each other and the radius\n * of the bubble relates to the value.\n *\n * @sample highcharts/demo/packed-bubble/\n * Packed bubble chart\n * @sample highcharts/demo/packed-bubble-split/\n * Split packed bubble chart\n *\n * @extends plotOptions.bubble\n * @excluding boostThreshold, boostBlending,connectEnds, connectNulls,\n * cropThreshold, dataSorting, dragDrop, jitter,\n * legendSymbolColor, keys, pointPlacement, sizeByAbsoluteValue,\n * step, xAxis, yAxis, zMax, zMin\n * @product highcharts\n * @since 7.0.0\n * @requires highcharts-more\n * @optionparent plotOptions.packedbubble\n *\n * @private\n */\nconst PackedBubbleSeriesDefaults = {\n /**\n * Minimum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the value of each bubble.\n * Can be either pixels (when no unit is given), or a percentage of\n * the smallest one of the plot width and height, divided by the square\n * root of total number of points.\n *\n * @sample highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n *\n * @private\n */\n minSize: '10%',\n /**\n * Maximum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the value of each bubble.\n * Can be either pixels (when no unit is given), or a percentage of\n * the smallest one of the plot width and height, divided by the square\n * root of total number of points.\n *\n * @sample highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n *\n * @private\n */\n maxSize: '50%',\n sizeBy: 'area',\n zoneAxis: 'y',\n crisp: false,\n tooltip: {\n pointFormat: 'Value: {point.value}'\n },\n /**\n * Flag to determine if nodes are draggable or not. Available for\n * graph with useSimulation set to true only.\n *\n * @since 7.1.0\n *\n * @private\n */\n draggable: true,\n /**\n * An option is giving a possibility to choose between using simulation\n * for calculating bubble positions. These reflects in both animation\n * and final position of bubbles. Simulation is also adding options to\n * the series graph based on used layout. In case of big data sets, with\n * any performance issues, it is possible to disable animation and pack\n * bubble in a simple circular way.\n *\n * @sample highcharts/series-packedbubble/spiral/\n * useSimulation set to false\n *\n * @since 7.1.0\n *\n * @private\n */\n useSimulation: true,\n /**\n * Series options for parent nodes.\n *\n * @since 8.1.1\n *\n * @private\n */\n parentNode: {\n /**\n * Allow this series' parent nodes to be selected\n * by clicking on the graph.\n *\n * @since 8.1.1\n */\n allowPointSelect: false\n },\n /**\n *\n * @declare Highcharts.SeriesPackedBubbleDataLabelsOptionsObject\n *\n * @private\n */\n dataLabels: {\n /**\n * The\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * specifying what to show for _node_ in the networkgraph. In v7.0\n * defaults to `{key}`, since v7.1 defaults to `undefined` and\n * `formatter` is used instead.\n *\n * @type {string}\n * @since 7.0.0\n * @apioption plotOptions.packedbubble.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label for a node.\n * Note that if a `format` is defined, the format takes precedence\n * and the formatter is ignored.\n *\n * @since 7.0.0\n */\n formatter: function () {\n const { numberFormatter } = this.series.chart;\n const { value } = this.point;\n return PackedBubbleSeriesDefaults_isNumber(value) ? numberFormatter(value, -1) : '';\n },\n /**\n * @type {string}\n * @since 7.1.0\n * @apioption plotOptions.packedbubble.dataLabels.parentNodeFormat\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * @since 7.1.0\n */\n parentNodeFormatter: function () {\n return this.name || '';\n },\n /**\n * @sample {highcharts} highcharts/series-packedbubble/packed-dashboard\n * Dashboard with dataLabels on parentNodes\n *\n * @declare Highcharts.SeriesPackedBubbleDataLabelsTextPathOptionsObject\n * @since 7.1.0\n */\n parentNodeTextPath: {\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.packedbubble.dataLabels.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's\n * data labels.\n *\n * @since 7.1.0\n */\n enabled: true\n },\n /**\n * Options for a _node_ label text which should follow marker's\n * shape.\n *\n * **Note:** Only SVG-based renderer supports this option.\n *\n * @extends plotOptions.series.dataLabels.textPath\n * @apioption plotOptions.packedbubble.dataLabels.textPath\n */\n padding: 0,\n style: {\n transition: 'opacity 2000ms'\n }\n },\n /**\n * Options for layout algorithm when simulation is enabled. Inside there\n * are options to change the speed, padding, initial bubbles positions\n * and more.\n *\n * @extends plotOptions.networkgraph.layoutAlgorithm\n * @excluding approximation, attractiveForce, repulsiveForce, theta\n * @since 7.1.0\n *\n * @private\n */\n layoutAlgorithm: {\n /**\n * Initial layout algorithm for positioning nodes. Can be one of\n * the built-in options (\"circle\", \"random\") or a function where\n * positions should be set on each node (`this.nodes`) as\n * `node.plotX` and `node.plotY`.\n *\n * @sample highcharts/series-networkgraph/initial-positions/\n * Initial positions with callback\n *\n * @type {\"circle\"|\"random\"|Function}\n */\n initialPositions: 'circle',\n /**\n * @sample highcharts/series-packedbubble/initial-radius/\n * Initial radius set to 200\n *\n * @extends plotOptions.networkgraph.layoutAlgorithm.initialPositionRadius\n * @excluding states\n */\n initialPositionRadius: 20,\n /**\n * The distance between two bubbles, when the algorithm starts to\n * treat two bubbles as overlapping. The `bubblePadding` is also the\n * expected distance between all the bubbles on simulation end.\n */\n bubblePadding: 5,\n /**\n * Whether bubbles should interact with their parentNode to keep\n * them inside.\n */\n parentNodeLimit: false,\n /**\n * Whether series should interact with each other or not. When\n * `parentNodeLimit` is set to true, thi option should be set to\n * false to avoid sticking points in wrong series parentNode.\n */\n seriesInteraction: true,\n /**\n * In case of split series, this option allows user to drag and\n * drop points between series, for changing point related series.\n *\n * @sample highcharts/series-packedbubble/packed-dashboard/\n * Example of drag'n drop bubbles for bubble kanban\n */\n dragBetweenSeries: false,\n /**\n * Layout algorithm options for parent nodes.\n *\n * @extends plotOptions.networkgraph.layoutAlgorithm\n * @excluding approximation, attractiveForce, enableSimulation,\n * repulsiveForce, theta\n */\n parentNodeOptions: {\n maxIterations: 400,\n gravitationalConstant: 0.03,\n maxSpeed: 50,\n initialPositionRadius: 100,\n seriesInteraction: true,\n /**\n * Styling options for parentNodes markers. Similar to\n * line.marker options.\n *\n * @sample highcharts/series-packedbubble/parentnode-style/\n * Bubble size\n *\n * @extends plotOptions.series.marker\n * @excluding states\n */\n marker: {\n fillColor: null,\n fillOpacity: 1,\n lineWidth: null,\n lineColor: null,\n symbol: 'circle'\n }\n },\n enableSimulation: true,\n /**\n * Type of the algorithm used when positioning bubbles.\n * @ignore-option\n */\n type: 'packedbubble',\n /**\n * Integration type. Integration determines how forces are applied\n * on particles. The `packedbubble` integration is based on\n * the networkgraph `verlet` integration, where the new position\n * is based on a previous position without velocity:\n * `newPosition += previousPosition - newPosition`.\n *\n * @sample highcharts/series-networkgraph/forces/\n *\n * @ignore-option\n */\n integration: 'packedbubble',\n maxIterations: 1000,\n /**\n * Whether to split series into individual groups or to mix all\n * series together.\n *\n * @since 7.1.0\n * @default false\n */\n splitSeries: false,\n /**\n * Max speed that node can get in one iteration. In terms of\n * simulation, it's a maximum translation (in pixels) that a node\n * can move (in both, x and y, dimensions). While `friction` is\n * applied on all nodes, max speed is applied only for nodes that\n * move very fast, for example small or disconnected ones.\n *\n * @see [layoutAlgorithm.integration](#series.networkgraph.layoutAlgorithm.integration)\n *\n * @see [layoutAlgorithm.friction](#series.networkgraph.layoutAlgorithm.friction)\n */\n maxSpeed: 5,\n gravitationalConstant: 0.01,\n friction: -0.981\n }\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const PackedBubble_PackedBubbleSeriesDefaults = (PackedBubbleSeriesDefaults);\n/* *\n *\n * API Options\n *\n * */\n/**\n * A `packedbubble` series. If the [type](#series.packedbubble.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @type {Object}\n * @extends series,plotOptions.packedbubble\n * @excluding cropThreshold, dataParser, dataSorting, dataURL, dragDrop, stack,\n * boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.packedbubble\n */\n/**\n * An array of data points for the series. For the `packedbubble` series type,\n * points can be given in the following ways:\n *\n * 1. An array of `values`.\n *\n * ```js\n * data: [5, 1, 20]\n * ```\n *\n * 2. An array of objects with named values. The objects are point\n * configuration objects as seen below. If the total number of data points\n * exceeds the series' [turboThreshold](#series.packedbubble.turboThreshold),\n * this option is not available.\n *\n * ```js\n * data: [{\n * value: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * value: 5,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array<Object|Array>}\n * @extends series.line.data\n * @excluding marker, x, y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n * @product highcharts\n * @apioption series.packedbubble.data\n */\n/**\n * @type {Highcharts.SeriesPackedBubbleDataLabelsOptionsObject|Array<Highcharts.SeriesPackedBubbleDataLabelsOptionsObject>}\n * @product highcharts\n * @apioption series.packedbubble.data.dataLabels\n */\n/**\n * @excluding enabled,enabledThreshold,height,radius,width\n * @product highcharts\n * @apioption series.packedbubble.marker\n */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es-modules/Series/Networkgraph/VerletIntegration.js\n/* *\n *\n * Networkgraph series\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 * Functions\n *\n * */\n/**\n * Attractive force.\n *\n * In Verlet integration, force is applied on a node immediately to it's\n * `plotX` and `plotY` position.\n *\n * @private\n * @param {Highcharts.Point} link\n * Link that connects two nodes\n * @param {number} force\n * Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n * Distance between two nodes e.g. `{x, y}`\n */\nfunction attractive(link, force, distanceXY) {\n const massFactor = link.getMass(), translatedX = -distanceXY.x * force * this.diffTemperature, translatedY = -distanceXY.y * force * this.diffTemperature;\n if (!link.fromNode.fixedPosition) {\n link.fromNode.plotX -=\n translatedX * massFactor.fromNode / link.fromNode.degree;\n link.fromNode.plotY -=\n translatedY * massFactor.fromNode / link.fromNode.degree;\n }\n if (!link.toNode.fixedPosition) {\n link.toNode.plotX +=\n translatedX * massFactor.toNode / link.toNode.degree;\n link.toNode.plotY +=\n translatedY * massFactor.toNode / link.toNode.degree;\n }\n}\n/**\n * Attractive force function. Can be replaced by API's\n * `layoutAlgorithm.attractiveForce`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction attractiveForceFunction(d, k) {\n // Used in API:\n return (k - d) / d;\n}\n/**\n * Barycenter force. Calculate and applys barycenter forces on the\n * nodes. Making them closer to the center of their barycenter point.\n *\n * In Verlet integration, force is applied on a node immediately to it's\n * `plotX` and `plotY` position.\n *\n * @private\n */\nfunction barycenter() {\n const gravitationalConstant = this.options.gravitationalConstant || 0, xFactor = (this.barycenter.xFactor -\n (this.box.left + this.box.width) / 2) * gravitationalConstant, yFactor = (this.barycenter.yFactor -\n (this.box.top + this.box.height) / 2) * gravitationalConstant;\n this.nodes.forEach(function (node) {\n if (!node.fixedPosition) {\n node.plotX -=\n xFactor / node.mass / node.degree;\n node.plotY -=\n yFactor / node.mass / node.degree;\n }\n });\n}\n/**\n * Estiamte the best possible distance between two nodes, making graph\n * readable.\n * @private\n */\nfunction getK(layout) {\n return Math.pow(layout.box.width * layout.box.height / layout.nodes.length, 0.5);\n}\n/**\n * Integration method.\n *\n * In Verlet integration, forces are applied on node immediately to it's\n * `plotX` and `plotY` position.\n *\n * Verlet without velocity:\n *\n * x(n+1) = 2 * x(n) - x(n-1) + A(T) * deltaT ^ 2\n *\n * where:\n * - x(n+1) - new position\n * - x(n) - current position\n * - x(n-1) - previous position\n *\n * Assuming A(t) = 0 (no acceleration) and (deltaT = 1) we get:\n *\n * x(n+1) = x(n) + (x(n) - x(n-1))\n *\n * where:\n * - (x(n) - x(n-1)) - position change\n *\n * TO DO:\n * Consider Verlet with velocity to support additional\n * forces. Or even Time-Corrected Verlet by Jonathan\n * \"lonesock\" Dummer\n *\n * @private\n * @param {Highcharts.NetworkgraphLayout} layout layout object\n * @param {Highcharts.Point} node node that should be translated\n */\nfunction integrate(layout, node) {\n const friction = -layout.options.friction, maxSpeed = layout.options.maxSpeed, prevX = node.prevX, prevY = node.prevY, \n // Apply friction:\n frictionX = ((node.plotX + node.dispX -\n prevX) * friction), frictionY = ((node.plotY + node.dispY -\n prevY) * friction), abs = Math.abs, signX = abs(frictionX) / (frictionX || 1), // Need to deal with 0\n signY = abs(frictionY) / (frictionY || 1), \n // Apply max speed:\n diffX = signX * Math.min(maxSpeed, Math.abs(frictionX)), diffY = signY * Math.min(maxSpeed, Math.abs(frictionY));\n // Store for the next iteration:\n node.prevX = node.plotX + node.dispX;\n node.prevY = node.plotY + node.dispY;\n // Update positions:\n node.plotX += diffX;\n node.plotY += diffY;\n node.temperature = layout.vectorLength({\n x: diffX,\n y: diffY\n });\n}\n/**\n * Repulsive force.\n *\n * In Verlet integration, force is applied on a node immediately to it's\n * `plotX` and `plotY` position.\n *\n * @private\n * @param {Highcharts.Point} node\n * Node that should be translated by force.\n * @param {number} force\n * Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n * Distance between two nodes e.g. `{x, y}`\n */\nfunction repulsive(node, force, distanceXY) {\n const factor = force * this.diffTemperature / node.mass / node.degree;\n if (!node.fixedPosition) {\n node.plotX += distanceXY.x * factor;\n node.plotY += distanceXY.y * factor;\n }\n}\n/**\n * Repulsive force function. Can be replaced by API's\n * `layoutAlgorithm.repulsiveForce`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction repulsiveForceFunction(d, k) {\n // Used in API:\n return (k - d) / d * (k > d ? 1 : 0); // Force only for close nodes\n}\n/* *\n *\n * Default Export\n *\n * */\nconst VerletIntegration = {\n attractive,\n attractiveForceFunction,\n barycenter,\n getK,\n integrate,\n repulsive,\n repulsiveForceFunction\n};\n/* harmony default export */ const Networkgraph_VerletIntegration = (VerletIntegration);\n\n;// ./code/es-modules/Series/PackedBubble/PackedBubbleIntegration.js\n/* *\n *\n * (c) 2010-2024 Grzegorz Blachlinski, Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { noop: PackedBubbleIntegration_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction PackedBubbleIntegration_barycenter() {\n const layout = this, gravitationalConstant = layout.options.gravitationalConstant, box = layout.box, nodes = layout.nodes;\n let centerX, centerY;\n for (const node of nodes) {\n if (layout.options.splitSeries && !node.isParentNode) {\n centerX = node.series.parentNode.plotX;\n centerY = node.series.parentNode.plotY;\n }\n else {\n centerX = box.width / 2;\n centerY = box.height / 2;\n }\n if (!node.fixedPosition) {\n node.plotX -=\n (node.plotX - centerX) *\n gravitationalConstant /\n (node.mass * Math.sqrt(nodes.length));\n node.plotY -=\n (node.plotY - centerY) *\n gravitationalConstant /\n (node.mass * Math.sqrt(nodes.length));\n }\n }\n}\n/**\n * @private\n */\nfunction PackedBubbleIntegration_repulsive(node, force, distanceXY, repNode) {\n const factor = (force * this.diffTemperature / node.mass /\n node.degree), x = distanceXY.x * factor, y = distanceXY.y * factor;\n if (!node.fixedPosition) {\n node.plotX += x;\n node.plotY += y;\n }\n if (!repNode.fixedPosition) {\n repNode.plotX -= x;\n repNode.plotY -= y;\n }\n}\n/**\n * @private\n */\nfunction PackedBubbleIntegration_repulsiveForceFunction(d, k, node, repNode) {\n return Math.min(d, (node.marker.radius +\n repNode.marker.radius) / 2);\n}\n/* *\n *\n * Default Export\n *\n * */\nconst PackedBubbleIntegration = {\n barycenter: PackedBubbleIntegration_barycenter,\n getK: PackedBubbleIntegration_noop,\n integrate: Networkgraph_VerletIntegration.integrate,\n repulsive: PackedBubbleIntegration_repulsive,\n repulsiveForceFunction: PackedBubbleIntegration_repulsiveForceFunction\n};\n/* harmony default export */ const PackedBubble_PackedBubbleIntegration = (PackedBubbleIntegration);\n\n;// ./code/es-modules/Series/Networkgraph/EulerIntegration.js\n/* *\n *\n * Networkgraph series\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 * Functions\n *\n * */\n/**\n * Attractive force.\n *\n * In Euler integration, force is stored in a node, not changing it's\n * position. Later, in `integrate()` forces are applied on nodes.\n *\n * @private\n * @param {Highcharts.Point} link\n * Link that connects two nodes\n * @param {number} force\n * Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n * Distance between two nodes e.g. `{x, y}`\n * @param {number} distanceR\n */\nfunction EulerIntegration_attractive(link, force, distanceXY, distanceR) {\n const massFactor = link.getMass(), translatedX = (distanceXY.x / distanceR) * force, translatedY = (distanceXY.y / distanceR) * force;\n if (!link.fromNode.fixedPosition) {\n link.fromNode.dispX -=\n translatedX * massFactor.fromNode / link.fromNode.degree;\n link.fromNode.dispY -=\n translatedY * massFactor.fromNode / link.fromNode.degree;\n }\n if (!link.toNode.fixedPosition) {\n link.toNode.dispX +=\n translatedX * massFactor.toNode / link.toNode.degree;\n link.toNode.dispY +=\n translatedY * massFactor.toNode / link.toNode.degree;\n }\n}\n/**\n * Attractive force function. Can be replaced by API's\n * `layoutAlgorithm.attractiveForce`\n *\n * Other forces that can be used:\n *\n * basic, not recommended:\n * `function (d, k) { return d / k }`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction EulerIntegration_attractiveForceFunction(d, k) {\n return d * d / k;\n}\n/**\n * Barycenter force. Calculate and applys barycenter forces on the\n * nodes. Making them closer to the center of their barycenter point.\n *\n * In Euler integration, force is stored in a node, not changing it's\n * position. Later, in `integrate()` forces are applied on nodes.\n *\n * @private\n */\nfunction EulerIntegration_barycenter() {\n const gravitationalConstant = this.options.gravitationalConstant, xFactor = this.barycenter.xFactor, yFactor = this.barycenter.yFactor;\n this.nodes.forEach(function (node) {\n if (!node.fixedPosition) {\n const degree = node.getDegree(), phi = degree * (1 + degree / 2);\n node.dispX += ((xFactor - node.plotX) *\n gravitationalConstant *\n phi / node.degree);\n node.dispY += ((yFactor - node.plotY) *\n gravitationalConstant *\n phi / node.degree);\n }\n });\n}\n/**\n * Estimate the best possible distance between two nodes, making graph\n * readable.\n * @private\n */\nfunction EulerIntegration_getK(layout) {\n return Math.pow(layout.box.width * layout.box.height / layout.nodes.length, 0.3);\n}\n/**\n * Integration method.\n *\n * In Euler integration, force were stored in a node, not changing it's\n * position. Now, in the integrator method, we apply changes.\n *\n * Euler:\n *\n * Basic form: `x(n+1) = x(n) + v(n)`\n *\n * With Rengoild-Fruchterman we get:\n * `x(n+1) = x(n) + v(n) / length(v(n)) * min(v(n), temperature(n))`\n * where:\n * - `x(n+1)`: next position\n * - `x(n)`: current position\n * - `v(n)`: velocity (comes from net force)\n * - `temperature(n)`: current temperature\n *\n * Known issues:\n * Oscillations when force vector has the same magnitude but opposite\n * direction in the next step. Potentially solved by decreasing force by\n * `v * (1 / node.degree)`\n *\n * Note:\n * Actually `min(v(n), temperature(n))` replaces simulated annealing.\n *\n * @private\n * @param {Highcharts.NetworkgraphLayout} layout\n * Layout object\n * @param {Highcharts.Point} node\n * Node that should be translated\n */\nfunction EulerIntegration_integrate(layout, node) {\n node.dispX +=\n node.dispX * layout.options.friction;\n node.dispY +=\n node.dispY * layout.options.friction;\n const distanceR = node.temperature = layout.vectorLength({\n x: node.dispX,\n y: node.dispY\n });\n if (distanceR !== 0) {\n node.plotX += (node.dispX / distanceR *\n Math.min(Math.abs(node.dispX), layout.temperature));\n node.plotY += (node.dispY / distanceR *\n Math.min(Math.abs(node.dispY), layout.temperature));\n }\n}\n/**\n * Repulsive force.\n *\n * @private\n * @param {Highcharts.Point} node\n * Node that should be translated by force.\n * @param {number} force\n * Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n * Distance between two nodes e.g. `{x, y}`\n */\nfunction EulerIntegration_repulsive(node, force, distanceXY, distanceR) {\n node.dispX +=\n (distanceXY.x / distanceR) * force / node.degree;\n node.dispY +=\n (distanceXY.y / distanceR) * force / node.degree;\n}\n/**\n * Repulsive force function. Can be replaced by API's\n * `layoutAlgorithm.repulsiveForce`.\n *\n * Other forces that can be used:\n *\n * basic, not recommended:\n * `function (d, k) { return k / d }`\n *\n * standard:\n * `function (d, k) { return k * k / d }`\n *\n * grid-variant:\n * `function (d, k) { return k * k / d * (2 * k - d > 0 ? 1 : 0) }`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction EulerIntegration_repulsiveForceFunction(d, k) {\n return k * k / d;\n}\n/* *\n *\n * Default Export\n *\n * */\nconst EulerIntegration = {\n attractive: EulerIntegration_attractive,\n attractiveForceFunction: EulerIntegration_attractiveForceFunction,\n barycenter: EulerIntegration_barycenter,\n getK: EulerIntegration_getK,\n integrate: EulerIntegration_integrate,\n repulsive: EulerIntegration_repulsive,\n repulsiveForceFunction: EulerIntegration_repulsiveForceFunction\n};\n/* harmony default export */ const Networkgraph_EulerIntegration = (EulerIntegration);\n\n;// ./code/es-modules/Series/Networkgraph/QuadTreeNode.js\n/* *\n *\n * Networkgraph series\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 * Class\n *\n * */\n/**\n * The QuadTree node class. Used in Networkgraph chart as a base for Barnes-Hut\n * approximation.\n *\n * @private\n * @class\n * @name Highcharts.QuadTreeNode\n *\n * @param {Highcharts.Dictionary<number>} box\n * Available space for the node\n */\nclass QuadTreeNode {\n /* *\n *\n * Constructor\n *\n * */\n constructor(box) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * Read only. If QuadTreeNode is an external node, Point is stored in\n * `this.body`.\n *\n * @name Highcharts.QuadTreeNode#body\n * @type {boolean|Highcharts.Point}\n */\n this.body = false;\n /**\n * Read only. Internal nodes when created are empty to reserve the\n * space. If Point is added to this QuadTreeNode, QuadTreeNode is no\n * longer empty.\n *\n * @name Highcharts.QuadTreeNode#isEmpty\n * @type {boolean}\n */\n this.isEmpty = false;\n /**\n * Read only. Flag to determine if QuadTreeNode is internal (and has\n * subnodes with mass and central position) or external (bound to\n * Point).\n *\n * @name Highcharts.QuadTreeNode#isInternal\n * @type {boolean}\n */\n this.isInternal = false;\n /**\n * Read only. Array of subnodes. Empty if QuadTreeNode has just one\n * Point. When added another Point to this QuadTreeNode, array is\n * filled with four subnodes.\n *\n * @name Highcharts.QuadTreeNode#nodes\n * @type {Array<Highcharts.QuadTreeNode>}\n */\n this.nodes = [];\n /**\n * Read only. The available space for node.\n *\n * @name Highcharts.QuadTreeNode#box\n * @type {Highcharts.Dictionary<number>}\n */\n this.box = box;\n /**\n * Read only. The minium of width and height values.\n *\n * @name Highcharts.QuadTreeNode#boxSize\n * @type {number}\n */\n this.boxSize = Math.min(box.width, box.height);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * When inserting another node into the box, that already hove one node,\n * divide the available space into another four quadrants.\n *\n * Indexes of quadrants are:\n * ```\n * ------------- -------------\n * | | | | |\n * | | | 0 | 1 |\n * | | divide() | | |\n * | 1 | -----------> -------------\n * | | | | |\n * | | | 3 | 2 |\n * | | | | |\n * ------------- -------------\n * ```\n */\n divideBox() {\n const halfWidth = this.box.width / 2, halfHeight = this.box.height / 2;\n // Top left\n this.nodes[0] = new QuadTreeNode({\n left: this.box.left,\n top: this.box.top,\n width: halfWidth,\n height: halfHeight\n });\n // Top right\n this.nodes[1] = new QuadTreeNode({\n left: this.box.left + halfWidth,\n top: this.box.top,\n width: halfWidth,\n height: halfHeight\n });\n // Bottom right\n this.nodes[2] = new QuadTreeNode({\n left: this.box.left + halfWidth,\n top: this.box.top + halfHeight,\n width: halfWidth,\n height: halfHeight\n });\n // Bottom left\n this.nodes[3] = new QuadTreeNode({\n left: this.box.left,\n top: this.box.top + halfHeight,\n width: halfWidth,\n height: halfHeight\n });\n }\n /**\n * Determine which of the quadrants should be used when placing node in\n * the QuadTree. Returned index is always in range `< 0 , 3 >`.\n * @private\n */\n getBoxPosition(point) {\n const left = point.plotX < this.box.left + this.box.width / 2, top = point.plotY < this.box.top + this.box.height / 2;\n let index;\n if (left) {\n if (top) {\n // Top left\n index = 0;\n }\n else {\n // Bottom left\n index = 3;\n }\n }\n else {\n if (top) {\n // Top right\n index = 1;\n }\n else {\n // Bottom right\n index = 2;\n }\n }\n return index;\n }\n /**\n * Insert recursively point(node) into the QuadTree. If the given\n * quadrant is already occupied, divide it into smaller quadrants.\n *\n * @param {Highcharts.Point} point\n * Point/node to be inserted\n * @param {number} depth\n * Max depth of the QuadTree\n */\n insert(point, depth) {\n let newQuadTreeNode;\n if (this.isInternal) {\n // Internal node:\n this.nodes[this.getBoxPosition(point)].insert(point, depth - 1);\n }\n else {\n this.isEmpty = false;\n if (!this.body) {\n // First body in a quadrant:\n this.isInternal = false;\n this.body = point;\n }\n else {\n if (depth) {\n // Every other body in a quadrant:\n this.isInternal = true;\n this.divideBox();\n // Reinsert main body only once:\n if (this.body !== true) {\n this.nodes[this.getBoxPosition(this.body)]\n .insert(this.body, depth - 1);\n this.body = true;\n }\n // Add second body:\n this.nodes[this.getBoxPosition(point)]\n .insert(point, depth - 1);\n }\n else {\n // We are below max allowed depth. That means either:\n // - really huge number of points\n // - falling two points into exactly the same position\n // In this case, create another node in the QuadTree.\n //\n // Alternatively we could add some noise to the\n // position, but that could result in different\n // rendered chart in exporting.\n newQuadTreeNode = new QuadTreeNode({\n top: point.plotX || NaN,\n left: point.plotY || NaN,\n // Width/height below 1px\n width: 0.1,\n height: 0.1\n });\n newQuadTreeNode.body = point;\n newQuadTreeNode.isInternal = false;\n this.nodes.push(newQuadTreeNode);\n }\n }\n }\n }\n /**\n * Each quad node requires it's mass and center position. That mass and\n * position is used to imitate real node in the layout by approximation.\n */\n updateMassAndCenter() {\n let mass = 0, plotX = 0, plotY = 0;\n if (this.isInternal) {\n // Calculate weightened mass of the quad node:\n for (const pointMass of this.nodes) {\n if (!pointMass.isEmpty) {\n mass += pointMass.mass;\n plotX += pointMass.plotX * pointMass.mass;\n plotY += pointMass.plotY * pointMass.mass;\n }\n }\n plotX /= mass;\n plotY /= mass;\n }\n else if (this.body) {\n // Just one node, use coordinates directly:\n mass = this.body.mass;\n plotX = this.body.plotX;\n plotY = this.body.plotY;\n }\n // Store details:\n this.mass = mass;\n this.plotX = plotX;\n this.plotY = plotY;\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Networkgraph_QuadTreeNode = (QuadTreeNode);\n\n;// ./code/es-modules/Series/Networkgraph/QuadTree.js\n/* *\n *\n * Networkgraph series\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 *\n * Class\n *\n * */\n/**\n * The QuadTree class. Used in Networkgraph chart as a base for Barnes-Hut\n * approximation.\n *\n * @private\n * @class\n * @name Highcharts.QuadTree\n *\n * @param {number} x\n * Left position of the plotting area\n * @param {number} y\n * Top position of the plotting area\n * @param {number} width\n * Width of the plotting area\n * @param {number} height\n * Height of the plotting area\n */\nclass QuadTree {\n /* *\n *\n * Constructor\n *\n * */\n constructor(x, y, width, height) {\n // Boundary rectangle:\n this.box = {\n left: x,\n top: y,\n width: width,\n height: height\n };\n this.maxDepth = 25;\n this.root = new Networkgraph_QuadTreeNode(this.box);\n this.root.isInternal = true;\n this.root.isRoot = true;\n this.root.divideBox();\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculate mass of the each QuadNode in the tree.\n */\n calculateMassAndCenter() {\n this.visitNodeRecursive(null, null, function (node) {\n node.updateMassAndCenter();\n });\n }\n /**\n * Insert nodes into the QuadTree\n *\n * @param {Array<Highcharts.Point>} points\n * Points as nodes\n */\n insertNodes(points) {\n for (const point of points) {\n this.root.insert(point, this.maxDepth);\n }\n }\n /**\n * Depth first treversal (DFS). Using `before` and `after` callbacks,\n * we can get two results: preorder and postorder traversals, reminder:\n *\n * ```\n * (a)\n * / \\\n * (b) (c)\n * / \\\n * (d) (e)\n * ```\n *\n * DFS (preorder): `a -> b -> d -> e -> c`\n *\n * DFS (postorder): `d -> e -> b -> c -> a`\n *\n * @param {Highcharts.QuadTreeNode|null} node\n * QuadTree node\n * @param {Function} [beforeCallback]\n * Function to be called before visiting children nodes.\n * @param {Function} [afterCallback]\n * Function to be called after visiting children nodes.\n */\n visitNodeRecursive(node, beforeCallback, afterCallback) {\n let goFurther;\n if (!node) {\n node = this.root;\n }\n if (node === this.root && beforeCallback) {\n goFurther = beforeCallback(node);\n }\n if (goFurther === false) {\n return;\n }\n for (const qtNode of node.nodes) {\n if (qtNode.isInternal) {\n if (beforeCallback) {\n goFurther = beforeCallback(qtNode);\n }\n if (goFurther === false) {\n continue;\n }\n this.visitNodeRecursive(qtNode, beforeCallback, afterCallback);\n }\n else if (qtNode.body) {\n if (beforeCallback) {\n beforeCallback(qtNode.body);\n }\n }\n if (afterCallback) {\n afterCallback(qtNode);\n }\n }\n if (node === this.root && afterCallback) {\n afterCallback(node);\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Networkgraph_QuadTree = (QuadTree);\n\n;// ./code/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js\n/* *\n *\n * Networkgraph series\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\nconst { win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\nconst { clamp: ReingoldFruchtermanLayout_clamp, defined: ReingoldFruchtermanLayout_defined, isFunction, fireEvent: ReingoldFruchtermanLayout_fireEvent, pick: ReingoldFruchtermanLayout_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n/* *\n *\n * Class\n *\n * */\n/**\n * Reingold-Fruchterman algorithm from\n * \"Graph Drawing by Force-directed Placement\" paper.\n * @private\n */\nclass ReingoldFruchtermanLayout {\n constructor() {\n /* *\n *\n * Static Functions\n *\n * */\n this.box = {};\n this.currentStep = 0;\n this.initialRendering = true;\n this.links = [];\n this.nodes = [];\n this.series = [];\n this.simulation = false;\n }\n static compose(ChartClass) {\n Series_GraphLayoutComposition.compose(ChartClass);\n Series_GraphLayoutComposition.integrations.euler = Networkgraph_EulerIntegration;\n Series_GraphLayoutComposition.integrations.verlet = Networkgraph_VerletIntegration;\n Series_GraphLayoutComposition.layouts['reingold-fruchterman'] =\n ReingoldFruchtermanLayout;\n }\n init(options) {\n this.options = options;\n this.nodes = [];\n this.links = [];\n this.series = [];\n this.box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.setInitialRendering(true);\n this.integration =\n Series_GraphLayoutComposition.integrations[options.integration];\n this.enableSimulation = options.enableSimulation;\n this.attractiveForce = ReingoldFruchtermanLayout_pick(options.attractiveForce, this.integration.attractiveForceFunction);\n this.repulsiveForce = ReingoldFruchtermanLayout_pick(options.repulsiveForce, this.integration.repulsiveForceFunction);\n this.approximation = options.approximation;\n }\n updateSimulation(enable) {\n this.enableSimulation = ReingoldFruchtermanLayout_pick(enable, this.options.enableSimulation);\n }\n start() {\n const layout = this, series = this.series, options = this.options;\n layout.currentStep = 0;\n layout.forces = series[0] && series[0].forces || [];\n layout.chart = series[0] && series[0].chart;\n if (layout.initialRendering) {\n layout.initPositions();\n // Render elements in initial positions:\n series.forEach(function (s) {\n s.finishedAnimating = true; // #13169\n s.render();\n });\n }\n layout.setK();\n layout.resetSimulation(options);\n if (layout.enableSimulation) {\n layout.step();\n }\n }\n step() {\n const anyLayout = this, allSeries = this.series;\n // Algorithm:\n this.currentStep++;\n if (this.approximation === 'barnes-hut') {\n this.createQuadTree();\n this.quadTree.calculateMassAndCenter();\n }\n for (const forceName of this.forces || []) {\n anyLayout[forceName + 'Forces'](this.temperature);\n }\n // Limit to the plotting area and cool down:\n this.applyLimits();\n // Cool down the system:\n this.temperature = this.coolDown(this.startTemperature, this.diffTemperature, this.currentStep);\n this.prevSystemTemperature = this.systemTemperature;\n this.systemTemperature = this.getSystemTemperature();\n if (this.enableSimulation) {\n for (const series of allSeries) {\n // Chart could be destroyed during the simulation\n if (series.chart) {\n series.render();\n }\n }\n if (this.maxIterations-- &&\n isFinite(this.temperature) &&\n !this.isStable()) {\n if (this.simulation) {\n win.cancelAnimationFrame(this.simulation);\n }\n this.simulation = win.requestAnimationFrame(() => this.step());\n }\n else {\n this.simulation = false;\n this.series.forEach((s) => {\n ReingoldFruchtermanLayout_fireEvent(s, 'afterSimulation');\n });\n }\n }\n }\n stop() {\n if (this.simulation) {\n win.cancelAnimationFrame(this.simulation);\n }\n }\n setArea(x, y, w, h) {\n this.box = {\n left: x,\n top: y,\n width: w,\n height: h\n };\n }\n setK() {\n // Optimal distance between nodes,\n // available space around the node:\n this.k = this.options.linkLength || this.integration.getK(this);\n }\n addElementsToCollection(elements, collection) {\n for (const element of elements) {\n if (collection.indexOf(element) === -1) {\n collection.push(element);\n }\n }\n }\n removeElementFromCollection(element, collection) {\n const index = collection.indexOf(element);\n if (index !== -1) {\n collection.splice(index, 1);\n }\n }\n clear() {\n this.nodes.length = 0;\n this.links.length = 0;\n this.series.length = 0;\n this.resetSimulation();\n }\n resetSimulation() {\n this.forcedStop = false;\n this.systemTemperature = 0;\n this.setMaxIterations();\n this.setTemperature();\n this.setDiffTemperature();\n }\n restartSimulation() {\n if (!this.simulation) {\n // When dragging nodes, we don't need to calculate\n // initial positions and rendering nodes:\n this.setInitialRendering(false);\n // Start new simulation:\n if (!this.enableSimulation) {\n // Run only one iteration to speed things up:\n this.setMaxIterations(1);\n }\n else {\n this.start();\n }\n if (this.chart) {\n this.chart.redraw();\n }\n // Restore defaults:\n this.setInitialRendering(true);\n }\n else {\n // Extend current simulation:\n this.resetSimulation();\n }\n }\n setMaxIterations(maxIterations) {\n this.maxIterations = ReingoldFruchtermanLayout_pick(maxIterations, this.options.maxIterations);\n }\n setTemperature() {\n this.temperature = this.startTemperature =\n Math.sqrt(this.nodes.length);\n }\n setDiffTemperature() {\n this.diffTemperature = this.startTemperature /\n (this.options.maxIterations + 1);\n }\n setInitialRendering(enable) {\n this.initialRendering = enable;\n }\n createQuadTree() {\n this.quadTree = new Networkgraph_QuadTree(this.box.left, this.box.top, this.box.width, this.box.height);\n this.quadTree.insertNodes(this.nodes);\n }\n initPositions() {\n const initialPositions = this.options.initialPositions;\n if (isFunction(initialPositions)) {\n initialPositions.call(this);\n for (const node of this.nodes) {\n if (!ReingoldFruchtermanLayout_defined(node.prevX)) {\n node.prevX = node.plotX;\n }\n if (!ReingoldFruchtermanLayout_defined(node.prevY)) {\n node.prevY = node.plotY;\n }\n node.dispX = 0;\n node.dispY = 0;\n }\n }\n else if (initialPositions === 'circle') {\n this.setCircularPositions();\n }\n else {\n this.setRandomPositions();\n }\n }\n setCircularPositions() {\n const box = this.box, nodes = this.nodes, nodesLength = nodes.length + 1, angle = 2 * Math.PI / nodesLength, rootNodes = nodes.filter(function (node) {\n return node.linksTo.length === 0;\n }), visitedNodes = {}, radius = this.options.initialPositionRadius, addToNodes = (node) => {\n for (const link of node.linksFrom || []) {\n if (!visitedNodes[link.toNode.id]) {\n visitedNodes[link.toNode.id] = true;\n sortedNodes.push(link.toNode);\n addToNodes(link.toNode);\n }\n }\n };\n let sortedNodes = [];\n // Start with identified root nodes an sort the nodes by their\n // hierarchy. In trees, this ensures that branches don't cross\n // eachother.\n for (const rootNode of rootNodes) {\n sortedNodes.push(rootNode);\n addToNodes(rootNode);\n }\n // Cyclic tree, no root node found\n if (!sortedNodes.length) {\n sortedNodes = nodes;\n // Dangling, cyclic trees\n }\n else {\n for (const node of nodes) {\n if (sortedNodes.indexOf(node) === -1) {\n sortedNodes.push(node);\n }\n }\n }\n let node;\n // Initial positions are laid out along a small circle, appearing\n // as a cluster in the middle\n for (let i = 0, iEnd = sortedNodes.length; i < iEnd; ++i) {\n node = sortedNodes[i];\n node.plotX = node.prevX = ReingoldFruchtermanLayout_pick(node.plotX, box.width / 2 + radius * Math.cos(i * angle));\n node.plotY = node.prevY = ReingoldFruchtermanLayout_pick(node.plotY, box.height / 2 + radius * Math.sin(i * angle));\n node.dispX = 0;\n node.dispY = 0;\n }\n }\n setRandomPositions() {\n const box = this.box, nodes = this.nodes, nodesLength = nodes.length + 1, \n /**\n * Return a repeatable, quasi-random number based on an integer\n * input. For the initial positions\n * @private\n */\n unrandom = (n) => {\n let rand = n * n / Math.PI;\n rand = rand - Math.floor(rand);\n return rand;\n };\n let node;\n // Initial positions:\n for (let i = 0, iEnd = nodes.length; i < iEnd; ++i) {\n node = nodes[i];\n node.plotX = node.prevX = ReingoldFruchtermanLayout_pick(node.plotX, box.width * unrandom(i));\n node.plotY = node.prevY = ReingoldFruchtermanLayout_pick(node.plotY, box.height * unrandom(nodesLength + i));\n node.dispX = 0;\n node.dispY = 0;\n }\n }\n force(name, ...args) {\n this.integration[name].apply(this, args);\n }\n barycenterForces() {\n this.getBarycenter();\n this.force('barycenter');\n }\n getBarycenter() {\n let systemMass = 0, cx = 0, cy = 0;\n for (const node of this.nodes) {\n cx += node.plotX * node.mass;\n cy += node.plotY * node.mass;\n systemMass += node.mass;\n }\n this.barycenter = {\n x: cx,\n y: cy,\n xFactor: cx / systemMass,\n yFactor: cy / systemMass\n };\n return this.barycenter;\n }\n barnesHutApproximation(node, quadNode) {\n const distanceXY = this.getDistXY(node, quadNode), distanceR = this.vectorLength(distanceXY);\n let goDeeper, force;\n if (node !== quadNode && distanceR !== 0) {\n if (quadNode.isInternal) {\n // Internal node:\n if (quadNode.boxSize / distanceR <\n this.options.theta &&\n distanceR !== 0) {\n // Treat as an external node:\n force = this.repulsiveForce(distanceR, this.k);\n this.force('repulsive', node, force * quadNode.mass, distanceXY, distanceR);\n goDeeper = false;\n }\n else {\n // Go deeper:\n goDeeper = true;\n }\n }\n else {\n // External node, direct force:\n force = this.repulsiveForce(distanceR, this.k);\n this.force('repulsive', node, force * quadNode.mass, distanceXY, distanceR);\n }\n }\n return goDeeper;\n }\n repulsiveForces() {\n if (this.approximation === 'barnes-hut') {\n for (const node of this.nodes) {\n this.quadTree.visitNodeRecursive(null, (quadNode) => (this.barnesHutApproximation(node, quadNode)));\n }\n }\n else {\n let force, distanceR, distanceXY;\n for (const node of this.nodes) {\n for (const repNode of this.nodes) {\n if (\n // Node cannot repulse itself:\n node !== repNode &&\n // Only close nodes affect each other:\n // layout.getDistR(node, repNode) < 2 * k &&\n // Not dragged:\n !node.fixedPosition) {\n distanceXY = this.getDistXY(node, repNode);\n distanceR = this.vectorLength(distanceXY);\n if (distanceR !== 0) {\n force = this.repulsiveForce(distanceR, this.k);\n this.force('repulsive', node, force * repNode.mass, distanceXY, distanceR);\n }\n }\n }\n }\n }\n }\n attractiveForces() {\n let distanceXY, distanceR, force;\n for (const link of this.links) {\n if (link.fromNode && link.toNode) {\n distanceXY = this.getDistXY(link.fromNode, link.toNode);\n distanceR = this.vectorLength(distanceXY);\n if (distanceR !== 0) {\n force = this.attractiveForce(distanceR, this.k);\n this.force('attractive', link, force, distanceXY, distanceR);\n }\n }\n }\n }\n applyLimits() {\n const nodes = this.nodes;\n for (const node of nodes) {\n if (node.fixedPosition) {\n continue;\n }\n this.integration.integrate(this, node);\n this.applyLimitBox(node, this.box);\n // Reset displacement:\n node.dispX = 0;\n node.dispY = 0;\n }\n }\n /**\n * External box that nodes should fall. When hitting an edge, node\n * should stop or bounce.\n * @private\n */\n applyLimitBox(node, box) {\n const radius = node.radius;\n /*\n TO DO: Consider elastic collision instead of stopping.\n o' means end position when hitting plotting area edge:\n\n - \"inelastic\":\n o\n \\\n ______\n | o'\n | \\\n | \\\n\n - \"elastic\"/\"bounced\":\n o\n \\\n ______\n | ^\n | / \\\n |o' \\\n\n Euler sample:\n if (plotX < 0) {\n plotX = 0;\n dispX *= -1;\n }\n\n if (plotX > box.width) {\n plotX = box.width;\n dispX *= -1;\n }\n\n */\n // Limit X-coordinates:\n node.plotX = ReingoldFruchtermanLayout_clamp(node.plotX, box.left + radius, box.width - radius);\n // Limit Y-coordinates:\n node.plotY = ReingoldFruchtermanLayout_clamp(node.plotY, box.top + radius, box.height - radius);\n }\n /**\n * From \"A comparison of simulated annealing cooling strategies\" by\n * Nourani and Andresen work.\n * @private\n */\n coolDown(temperature, temperatureStep, currentStep) {\n // Logarithmic:\n /*\n return Math.sqrt(this.nodes.length) -\n Math.log(\n currentStep * layout.diffTemperature\n );\n */\n // Exponential:\n /*\n let alpha = 0.1;\n layout.temperature = Math.sqrt(layout.nodes.length) *\n Math.pow(alpha, layout.diffTemperature);\n */\n // Linear:\n return temperature - temperatureStep * currentStep;\n }\n isStable() {\n return Math.abs(this.systemTemperature -\n this.prevSystemTemperature) < 0.00001 || this.temperature <= 0;\n }\n getSystemTemperature() {\n let value = 0;\n for (const node of this.nodes) {\n value += node.temperature;\n }\n return value;\n }\n vectorLength(vector) {\n return Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n }\n getDistR(nodeA, nodeB) {\n const distance = this.getDistXY(nodeA, nodeB);\n return this.vectorLength(distance);\n }\n getDistXY(nodeA, nodeB) {\n const xDist = nodeA.plotX - nodeB.plotX, yDist = nodeA.plotY - nodeB.plotY;\n return {\n x: xDist,\n y: yDist,\n absX: Math.abs(xDist),\n absY: Math.abs(yDist)\n };\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Networkgraph_ReingoldFruchtermanLayout = (ReingoldFruchtermanLayout);\n\n;// ./code/es-modules/Series/PackedBubble/PackedBubbleLayout.js\n/* *\n *\n * (c) 2010-2024 Grzegorz Blachlinski, Sebastian Bochan\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 { addEvent: PackedBubbleLayout_addEvent, pick: PackedBubbleLayout_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction chartGetSelectedParentNodes() {\n const allSeries = this.series, selectedParentsNodes = [];\n allSeries.forEach((series) => {\n if (series.parentNode && series.parentNode.selected) {\n selectedParentsNodes.push(series.parentNode);\n }\n });\n return selectedParentsNodes;\n}\n/**\n * Remove accumulated data points to redistribute all of them again\n * (i.e after hiding series by legend)\n * @private\n */\nfunction onChartBeforeRedraw() {\n if (this.allDataPoints) {\n delete this.allDataPoints;\n }\n}\n/* *\n *\n * Class\n *\n * */\nclass PackedBubbleLayout extends Networkgraph_ReingoldFruchtermanLayout {\n constructor() {\n /* *\n *\n * Static Functions\n *\n * */\n super(...arguments);\n this.index = NaN;\n this.nodes = [];\n this.series = [];\n }\n static compose(ChartClass) {\n Networkgraph_ReingoldFruchtermanLayout.compose(ChartClass);\n Series_GraphLayoutComposition.integrations.packedbubble = PackedBubble_PackedBubbleIntegration;\n Series_GraphLayoutComposition.layouts.packedbubble = PackedBubbleLayout;\n const chartProto = ChartClass.prototype;\n if (!chartProto.getSelectedParentNodes) {\n PackedBubbleLayout_addEvent(ChartClass, 'beforeRedraw', onChartBeforeRedraw);\n chartProto.getSelectedParentNodes = chartGetSelectedParentNodes;\n }\n }\n /* *\n *\n * Functions\n *\n * */\n beforeStep() {\n if (this.options.marker) {\n this.series.forEach((series) => {\n if (series) {\n series.calculateParentRadius();\n }\n });\n }\n }\n // #14439, new stable check.\n isStable() {\n const tempDiff = Math.abs(this.prevSystemTemperature -\n this.systemTemperature);\n const upScaledTemperature = 10 * this.systemTemperature /\n Math.sqrt(this.nodes.length);\n return Math.abs(upScaledTemperature) < 1 &&\n tempDiff < 0.00001 ||\n this.temperature <= 0;\n }\n setCircularPositions() {\n const layout = this, box = layout.box, nodes = layout.nodes, nodesLength = nodes.length + 1, angle = 2 * Math.PI / nodesLength, radius = layout.options.initialPositionRadius;\n let centerX, centerY, index = 0;\n for (const node of nodes) {\n if (layout.options.splitSeries &&\n !node.isParentNode) {\n centerX = node.series.parentNode.plotX;\n centerY = node.series.parentNode.plotY;\n }\n else {\n centerX = box.width / 2;\n centerY = box.height / 2;\n }\n node.plotX = node.prevX = PackedBubbleLayout_pick(node.plotX, centerX +\n radius * Math.cos(node.index || index * angle));\n node.plotY = node.prevY = PackedBubbleLayout_pick(node.plotY, centerY +\n radius * Math.sin(node.index || index * angle));\n node.dispX = 0;\n node.dispY = 0;\n index++;\n }\n }\n repulsiveForces() {\n const layout = this, bubblePadding = layout.options.bubblePadding, nodes = layout.nodes;\n let force, distanceR, distanceXY;\n nodes.forEach((node) => {\n node.degree = node.mass;\n node.neighbours = 0;\n nodes.forEach((repNode) => {\n force = 0;\n if (\n // Node cannot repulse itself:\n node !== repNode &&\n // Only close nodes affect each other:\n // Not dragged:\n !node.fixedPosition &&\n (layout.options.seriesInteraction ||\n node.series === repNode.series)) {\n distanceXY = layout.getDistXY(node, repNode);\n distanceR = (layout.vectorLength(distanceXY) -\n (node.marker.radius +\n repNode.marker.radius +\n bubblePadding));\n // TODO padding configurable\n if (distanceR < 0) {\n node.degree += 0.01;\n node.neighbours++;\n force = layout.repulsiveForce(-distanceR / Math.sqrt(node.neighbours), layout.k, node, repNode);\n }\n layout.force('repulsive', node, force * repNode.mass, distanceXY, repNode, distanceR);\n }\n });\n });\n }\n applyLimitBox(node, box) {\n const layout = this, factor = 0.01;\n let distanceXY, distanceR;\n // `parentNodeLimit` should be used together with seriesInteraction:\n // false\n if (layout.options.splitSeries &&\n !node.isParentNode &&\n layout.options.parentNodeLimit) {\n distanceXY = layout.getDistXY(node, node.series.parentNode);\n distanceR = (node.series.parentNodeRadius -\n node.marker.radius -\n layout.vectorLength(distanceXY));\n if (distanceR < 0 &&\n distanceR > -2 * node.marker.radius) {\n node.plotX -= distanceXY.x * factor;\n node.plotY -= distanceXY.y * factor;\n }\n }\n super.applyLimitBox(node, box);\n }\n}\n/* *\n *\n * Registry\n *\n * */\nSeries_GraphLayoutComposition.layouts.packedbubble = PackedBubbleLayout;\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const PackedBubble_PackedBubbleLayout = (PackedBubbleLayout);\n\n;// ./code/es-modules/Series/SimulationSeriesUtilities.js\n/* *\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { merge: SimulationSeriesUtilities_merge, syncTimeout } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { animObject } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/**\n * Create a setTimeout for the first drawDataLabels()\n * based on the dataLabels.animation.defer value\n * for series which have enabled simulation.\n * @private\n */\nfunction initDataLabelsDefer() {\n const dlOptions = this.options.dataLabels;\n // Method drawDataLabels() fires for the first time after\n // dataLabels.animation.defer time unless\n // the dataLabels.animation = false or dataLabels.defer = false\n // or if the simulation is disabled\n if (!dlOptions?.defer ||\n !this.options.layoutAlgorithm?.enableSimulation) {\n this.deferDataLabels = false;\n }\n else {\n syncTimeout(() => {\n this.deferDataLabels = false;\n }, dlOptions ? animObject(dlOptions.animation).defer : 0);\n }\n}\n/**\n * Initialize the SVG group for the DataLabels with correct opacities\n * and correct styles so that the animation for the series that have\n * simulation enabled works fine.\n * @private\n */\nfunction initDataLabels() {\n const series = this, dlOptions = series.options.dataLabels;\n if (!series.dataLabelsGroup) {\n const dataLabelsGroup = this.initDataLabelsGroup();\n // Apply the dataLabels.style not only to the\n // individual dataLabels but also to the entire group\n if (!series.chart.styledMode && dlOptions?.style) {\n dataLabelsGroup.css(dlOptions.style);\n }\n // Initialize the opacity of the group to 0 (start of animation)\n dataLabelsGroup.attr({ opacity: 0 });\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show();\n }\n return dataLabelsGroup;\n }\n // Place it on first and subsequent (redraw) calls\n series.dataLabelsGroup.attr(SimulationSeriesUtilities_merge({ opacity: 1 }, this.getPlotBox('data-labels')));\n return series.dataLabelsGroup;\n}\nconst DataLabelsDeferUtils = {\n initDataLabels,\n initDataLabelsDefer\n};\n/* harmony default export */ const SimulationSeriesUtilities = (DataLabelsDeferUtils);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es-modules/Extensions/TextPath.js\n/* *\n *\n * Highcharts module with textPath functionality.\n *\n * (c) 2009-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\nconst { deg2rad: TextPath_deg2rad } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nconst { addEvent: TextPath_addEvent, merge: TextPath_merge, uniqueKey, defined: TextPath_defined, extend: TextPath_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * Text path support is not bundled into `highcharts.js`, and requires the\n * `modules/textpath.js` file. However, it is included in the script files of\n * those series types that use it by default\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\nfunction setTextPath(path, textPathOptions) {\n // Defaults\n textPathOptions = TextPath_merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n const url = this.renderer.url, textWrapper = this.text || this, textPath = textWrapper.textPath, { attributes, enabled } = textPathOptions;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n const undo = TextPath_addEvent(textWrapper, 'afterModifyTree', (e) => {\n if (path && enabled) {\n // Set ID for the path\n let textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the <text>\n const textAttribs = {\n // `dx`/`dy` options must by set on <text> (parent), the\n // rest should be set on <textPath>\n x: 0,\n y: 0\n };\n if (TextPath_defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (TextPath_defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n this.attr({ transform: '' });\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Wrap the nodes in a textPath\n const children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: TextPath_extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: `${url}#${textPathId}`\n }),\n children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path, undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n}\n/**\n * Attach a polygon to a bounding box if the element contains a textPath.\n *\n * @function Highcharts.SVGElement#setPolygon\n *\n * @param {any} event\n * An event containing a bounding box object\n *\n * @return {Highcharts.BBoxObject} Returns the bounding box object.\n */\nfunction setPolygon(event) {\n const bBox = event.bBox, tp = this.element?.querySelector('textPath');\n if (tp) {\n const polygon = [], { b, h } = this.renderer.fontMetrics(this.element), descender = h - b, lineCleanerRegex = new RegExp('(<tspan>|' +\n '<tspan(?!\\\\sclass=\"highcharts-br\")[^>]*>|' +\n '<\\\\/tspan>)', 'g'), lines = tp\n .innerHTML\n .replace(lineCleanerRegex, '')\n .split(/<tspan class=\"highcharts-br\"[^>]*>/), numOfLines = lines.length;\n // Calculate top and bottom coordinates for\n // either the start or the end of a single\n // character, and append it to the polygon.\n const appendTopAndBottom = (charIndex, positionOfChar) => {\n const { x, y } = positionOfChar, rotation = (tp.getRotationOfChar(charIndex) - 90) * TextPath_deg2rad, cosRot = Math.cos(rotation), sinRot = Math.sin(rotation);\n return [\n [\n x - descender * cosRot,\n y - descender * sinRot\n ],\n [\n x + b * cosRot,\n y + b * sinRot\n ]\n ];\n };\n for (let i = 0, lineIndex = 0; lineIndex < numOfLines; lineIndex++) {\n const line = lines[lineIndex], lineLen = line.length;\n for (let lineCharIndex = 0; lineCharIndex < lineLen; lineCharIndex += 5) {\n try {\n const srcCharIndex = (i +\n lineCharIndex +\n lineIndex), [lower, upper] = appendTopAndBottom(srcCharIndex, tp.getStartPositionOfChar(srcCharIndex));\n if (lineCharIndex === 0) {\n polygon.push(upper);\n polygon.push(lower);\n }\n else {\n if (lineIndex === 0) {\n polygon.unshift(upper);\n }\n if (lineIndex === numOfLines - 1) {\n polygon.push(lower);\n }\n }\n }\n catch (e) {\n // Safari fails on getStartPositionOfChar even if the\n // character is within the `textContent.length`\n break;\n }\n }\n i += lineLen - 1;\n try {\n const srcCharIndex = i + lineIndex, charPos = tp.getEndPositionOfChar(srcCharIndex), [lower, upper] = appendTopAndBottom(srcCharIndex, charPos);\n polygon.unshift(upper);\n polygon.unshift(lower);\n }\n catch (e) {\n // Safari fails on getStartPositionOfChar even if the character\n // is within the `textContent.length`\n break;\n }\n }\n // Close it\n if (polygon.length) {\n polygon.push(polygon[0].slice());\n }\n bBox.polygon = polygon;\n }\n return bBox;\n}\n/**\n * Draw text along a textPath for a dataLabel.\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {any} event\n * An event containing label options\n *\n * @return {void}\n */\nfunction drawTextPath(event) {\n const labelOptions = event.labelOptions, point = event.point, textPathOptions = (labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath);\n if (textPathOptions && !labelOptions.useHTML) {\n this.setTextPath(point.getDataLabelPath?.(this) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // Clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n}\nfunction TextPath_compose(SVGElementClass) {\n TextPath_addEvent(SVGElementClass, 'afterGetBBox', setPolygon);\n TextPath_addEvent(SVGElementClass, 'beforeAddingDataLabel', drawTextPath);\n const svgElementProto = SVGElementClass.prototype;\n if (!svgElementProto.setTextPath) {\n svgElementProto.setTextPath = setTextPath;\n }\n}\nconst TextPath = {\n compose: TextPath_compose\n};\n/* harmony default export */ const Extensions_TextPath = (TextPath);\n\n;// ./code/es-modules/Series/PackedBubble/PackedBubbleSeries.js\n/* *\n *\n * (c) 2010-2024 Grzegorz Blachlinski, Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { parse: PackedBubbleSeries_color } = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default());\n\n\n\nconst { noop: PackedBubbleSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n\nconst { series: { prototype: seriesProto }, seriesTypes: { bubble: PackedBubbleSeries_BubbleSeries } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { initDataLabels: PackedBubbleSeries_initDataLabels, initDataLabelsDefer: PackedBubbleSeries_initDataLabelsDefer } = SimulationSeriesUtilities;\n\nconst { addEvent: PackedBubbleSeries_addEvent, clamp: PackedBubbleSeries_clamp, defined: PackedBubbleSeries_defined, extend: PackedBubbleSeries_extend, fireEvent: PackedBubbleSeries_fireEvent, isArray: PackedBubbleSeries_isArray, isNumber: PackedBubbleSeries_isNumber, merge: PackedBubbleSeries_merge, pick: PackedBubbleSeries_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nExtensions_TextPath.compose((highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default()));\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.packedbubble\n *\n * @extends Highcharts.Series\n */\nclass PackedBubbleSeries extends PackedBubbleSeries_BubbleSeries {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n this.parentNodeMass = 0;\n this.deferDataLabels = true;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Static Functions\n *\n * */\n static compose(AxisClass, ChartClass, LegendClass) {\n PackedBubbleSeries_BubbleSeries.compose(AxisClass, ChartClass, LegendClass);\n Series_DragNodesComposition.compose(ChartClass);\n PackedBubble_PackedBubbleLayout.compose(ChartClass);\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Create a single array of all points from all series\n * @private\n */\n accumulateAllPoints() {\n const chart = this.chart, allDataPoints = [];\n for (const series of chart.series) {\n if (series.is('packedbubble') && // #13574\n series.reserveSpace()) {\n const valueData = series.getColumn('value');\n // Add data to array only if series is visible\n for (let j = 0; j < valueData.length; j++) {\n allDataPoints.push([\n null, null,\n valueData[j],\n series.index,\n j,\n {\n id: j,\n marker: {\n radius: 0\n }\n }\n ]);\n }\n }\n }\n return allDataPoints;\n }\n /**\n * Adding the basic layout to series points.\n * @private\n */\n addLayout() {\n const layoutOptions = this.options.layoutAlgorithm =\n this.options.layoutAlgorithm || {}, layoutType = layoutOptions.type || 'packedbubble', chartOptions = this.chart.options.chart;\n let graphLayoutsStorage = this.chart.graphLayoutsStorage, graphLayoutsLookup = this.chart.graphLayoutsLookup, layout;\n if (!graphLayoutsStorage) {\n this.chart.graphLayoutsStorage = graphLayoutsStorage = {};\n this.chart.graphLayoutsLookup = graphLayoutsLookup = [];\n }\n layout = graphLayoutsStorage[layoutType];\n if (!layout) {\n layoutOptions.enableSimulation =\n !PackedBubbleSeries_defined(chartOptions.forExport) ?\n layoutOptions.enableSimulation :\n !chartOptions.forExport;\n graphLayoutsStorage[layoutType] = layout =\n new Series_GraphLayoutComposition.layouts[layoutType]();\n layout.init(layoutOptions);\n graphLayoutsLookup.splice(layout.index, 0, layout);\n }\n this.layout = layout;\n this.points.forEach((node) => {\n node.mass = 2;\n node.degree = 1;\n node.collisionNmb = 1;\n });\n layout.setArea(0, 0, this.chart.plotWidth, this.chart.plotHeight);\n layout.addElementsToCollection([this], layout.series);\n layout.addElementsToCollection(this.points, layout.nodes);\n }\n /**\n * Function responsible for adding series layout, used for parent nodes.\n * @private\n */\n addSeriesLayout() {\n const layoutOptions = this.options.layoutAlgorithm =\n this.options.layoutAlgorithm || {}, layoutType = (layoutOptions.type || 'packedbubble'), graphLayoutsStorage = this.chart.graphLayoutsStorage, graphLayoutsLookup = this.chart.graphLayoutsLookup, parentNodeOptions = PackedBubbleSeries_merge(layoutOptions, layoutOptions.parentNodeOptions, {\n enableSimulation: this.layout.options.enableSimulation\n });\n let seriesLayout = graphLayoutsStorage[layoutType + '-series'];\n if (!seriesLayout) {\n graphLayoutsStorage[layoutType + '-series'] = seriesLayout =\n new Series_GraphLayoutComposition.layouts[layoutType]();\n seriesLayout.init(parentNodeOptions);\n graphLayoutsLookup.splice(seriesLayout.index, 0, seriesLayout);\n }\n this.parentNodeLayout = seriesLayout;\n this.createParentNodes();\n }\n /**\n * The function responsible for calculating the parent node radius\n * based on the total surface of inside-bubbles and the group BBox\n * @private\n */\n calculateParentRadius() {\n const bBox = this.seriesBox(), parentPadding = 20, minParentRadius = 20;\n this.parentNodeRadius = PackedBubbleSeries_clamp(Math.sqrt(2 * this.parentNodeMass / Math.PI) + parentPadding, minParentRadius, bBox ?\n Math.max(Math.sqrt(Math.pow(bBox.width, 2) +\n Math.pow(bBox.height, 2)) / 2 + parentPadding, minParentRadius) :\n Math.sqrt(2 * this.parentNodeMass / Math.PI) + parentPadding);\n if (this.parentNode) {\n this.parentNode.marker.radius =\n this.parentNode.radius = this.parentNodeRadius;\n }\n }\n /**\n * Calculate min and max bubble value for radius calculation.\n * @private\n */\n calculateZExtremes() {\n const chart = this.chart, allSeries = chart.series;\n let zMin = this.options.zMin, zMax = this.options.zMax, valMin = Infinity, valMax = -Infinity;\n if (zMin && zMax) {\n return [zMin, zMax];\n }\n // It is needed to deal with null and undefined values\n allSeries.forEach((series) => {\n series.getColumn('value').forEach((y) => {\n if (PackedBubbleSeries_defined(y)) {\n if (y > valMax) {\n valMax = y;\n }\n if (y < valMin) {\n valMin = y;\n }\n }\n });\n });\n zMin = PackedBubbleSeries_pick(zMin, valMin);\n zMax = PackedBubbleSeries_pick(zMax, valMax);\n return [zMin, zMax];\n }\n /**\n * Check if two bubbles overlaps.\n * @private\n */\n checkOverlap(bubble1, bubble2) {\n const diffX = bubble1[0] - bubble2[0], // Diff of X center values\n diffY = bubble1[1] - bubble2[1], // Diff of Y center values\n sumRad = bubble1[2] + bubble2[2]; // Sum of bubble radius\n return (Math.sqrt(diffX * diffX + diffY * diffY) -\n Math.abs(sumRad)) < -0.001;\n }\n /**\n * Creating parent nodes for split series, in which all the bubbles\n * are rendered.\n * @private\n */\n createParentNodes() {\n const PackedBubblePoint = this.pointClass, chart = this.chart, parentNodeLayout = this.parentNodeLayout, layoutOptions = this.layout.options;\n let nodeAdded, parentNode = this.parentNode, parentMarkerOptions = {\n radius: this.parentNodeRadius,\n lineColor: this.color,\n fillColor: PackedBubbleSeries_color(this.color).brighten(0.4).get()\n };\n if (layoutOptions.parentNodeOptions) {\n parentMarkerOptions = PackedBubbleSeries_merge(layoutOptions.parentNodeOptions.marker || {}, parentMarkerOptions);\n }\n this.parentNodeMass = 0;\n this.points.forEach((p) => {\n this.parentNodeMass +=\n Math.PI * Math.pow(p.marker.radius, 2);\n });\n this.calculateParentRadius();\n parentNodeLayout.nodes\n .forEach((node) => {\n if (node.seriesIndex === this.index) {\n nodeAdded = true;\n }\n });\n parentNodeLayout.setArea(0, 0, chart.plotWidth, chart.plotHeight);\n if (!nodeAdded) {\n if (!parentNode) {\n parentNode = new PackedBubblePoint(this, {\n mass: this.parentNodeRadius / 2,\n marker: parentMarkerOptions,\n dataLabels: {\n inside: false\n },\n states: {\n normal: {\n marker: parentMarkerOptions\n },\n hover: {\n marker: parentMarkerOptions\n }\n },\n dataLabelOnNull: true,\n degree: this.parentNodeRadius,\n isParentNode: true,\n seriesIndex: this.index\n });\n }\n if (this.parentNode) {\n parentNode.plotX = this.parentNode.plotX;\n parentNode.plotY = this.parentNode.plotY;\n }\n this.parentNode = parentNode;\n parentNodeLayout.addElementsToCollection([this], parentNodeLayout.series);\n parentNodeLayout.addElementsToCollection([parentNode], parentNodeLayout.nodes);\n }\n }\n /**\n * Function responsible for adding all the layouts to the chart.\n * @private\n */\n deferLayout() {\n // TODO split layouts to independent methods\n const layoutOptions = this.options.layoutAlgorithm;\n if (!this.visible) {\n return;\n }\n // Layout is using nodes for position calculation\n this.addLayout();\n if (layoutOptions.splitSeries) {\n this.addSeriesLayout();\n }\n }\n destroy() {\n // Remove the series from all layouts series collections #11469\n if (this.chart.graphLayoutsLookup) {\n this.chart.graphLayoutsLookup.forEach((layout) => {\n layout.removeElementFromCollection(this, layout.series);\n }, this);\n }\n if (this.parentNode &&\n this.parentNodeLayout) {\n this.parentNodeLayout.removeElementFromCollection(this.parentNode, this.parentNodeLayout.nodes);\n if (this.parentNode.dataLabel) {\n this.parentNode.dataLabel =\n this.parentNode.dataLabel.destroy();\n }\n }\n seriesProto.destroy.apply(this, arguments);\n }\n /**\n * Packedbubble has two separate collections of nodes if split, render\n * dataLabels for both sets:\n * @private\n */\n drawDataLabels() {\n // We defer drawing the dataLabels\n // until dataLabels.animation.defer time passes\n if (this.deferDataLabels) {\n return;\n }\n seriesProto.drawDataLabels.call(this, this.points);\n // Render parentNode labels:\n if (this.parentNode) {\n this.parentNode.formatPrefix = 'parentNode';\n seriesProto.drawDataLabels.call(this, [this.parentNode]);\n }\n }\n /**\n * Create Background/Parent Nodes for split series.\n * @private\n */\n drawGraph() {\n // If the series is not using layout, don't add parent nodes\n if (!this.layout || !this.layout.options.splitSeries) {\n return;\n }\n const chart = this.chart, nodeMarker = this.layout.options.parentNodeOptions.marker, parentOptions = {\n fill: (nodeMarker.fillColor ||\n PackedBubbleSeries_color(this.color).brighten(0.4).get()),\n opacity: nodeMarker.fillOpacity,\n stroke: nodeMarker.lineColor || this.color,\n 'stroke-width': PackedBubbleSeries_pick(nodeMarker.lineWidth, this.options.lineWidth)\n };\n let parentAttribs = {};\n // Create the group for parent Nodes if doesn't exist\n // If exists it will only be adjusted to the updated plot size (#12063)\n this.parentNodesGroup = this.plotGroup('parentNodesGroup', 'parentNode', this.visible ? 'inherit' : 'hidden', 0.1, chart.seriesGroup);\n this.group?.attr({\n zIndex: 2\n });\n this.calculateParentRadius();\n if (this.parentNode &&\n PackedBubbleSeries_defined(this.parentNode.plotX) &&\n PackedBubbleSeries_defined(this.parentNode.plotY) &&\n PackedBubbleSeries_defined(this.parentNodeRadius)) {\n parentAttribs = PackedBubbleSeries_merge({\n x: this.parentNode.plotX -\n this.parentNodeRadius,\n y: this.parentNode.plotY -\n this.parentNodeRadius,\n width: this.parentNodeRadius * 2,\n height: this.parentNodeRadius * 2\n }, parentOptions);\n if (!this.parentNode.graphic) {\n this.graph = this.parentNode.graphic =\n chart.renderer.symbol(parentOptions.symbol)\n .add(this.parentNodesGroup);\n }\n this.parentNode.graphic.attr(parentAttribs);\n }\n }\n drawTracker() {\n const parentNode = this.parentNode;\n // Chart = series.chart,\n // pointer = chart.pointer,\n // onMouseOver = function (e: PointerEvent): void {\n // const point = pointer.getPointFromEvent(e);\n // // undefined on graph in scatterchart\n // if (typeof point !== 'undefined') {\n // pointer.isDirectTouch = true;\n // point.onMouseOver(e);\n // }\n // };\n let dataLabels;\n super.drawTracker();\n // Add reference to the point\n if (parentNode) {\n dataLabels = (PackedBubbleSeries_isArray(parentNode.dataLabels) ?\n parentNode.dataLabels :\n (parentNode.dataLabel ? [parentNode.dataLabel] : []));\n if (parentNode.graphic) {\n parentNode.graphic.element.point = parentNode;\n }\n dataLabels.forEach((dataLabel) => {\n (dataLabel.div || dataLabel.element).point = parentNode;\n });\n }\n }\n /**\n * Calculate radius of bubbles in series.\n * @private\n */\n getPointRadius() {\n const chart = this.chart, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, seriesOptions = this.options, useSimulation = seriesOptions.useSimulation, smallestSize = Math.min(plotWidth, plotHeight), extremes = {}, radii = [], allDataPoints = chart.allDataPoints || [], allDataPointsLength = allDataPoints.length;\n let minSize, maxSize, value, radius;\n ['minSize', 'maxSize'].forEach((prop) => {\n const length = parseInt(seriesOptions[prop], 10), isPercent = /%$/.test(seriesOptions[prop]);\n extremes[prop] = isPercent ?\n smallestSize * length / 100 :\n length * Math.sqrt(allDataPointsLength);\n });\n chart.minRadius = minSize = extremes.minSize /\n Math.sqrt(allDataPointsLength);\n chart.maxRadius = maxSize = extremes.maxSize /\n Math.sqrt(allDataPointsLength);\n const zExtremes = useSimulation ?\n this.calculateZExtremes() :\n [minSize, maxSize];\n allDataPoints.forEach((point, i) => {\n value = useSimulation ?\n PackedBubbleSeries_clamp(point[2], zExtremes[0], zExtremes[1]) :\n point[2];\n radius = this.getRadius(zExtremes[0], zExtremes[1], minSize, maxSize, value);\n if (radius === 0) {\n radius = null;\n }\n allDataPoints[i][2] = radius;\n radii.push(radius);\n });\n this.radii = radii;\n }\n init() {\n seriesProto.init.apply(this, arguments);\n PackedBubbleSeries_initDataLabelsDefer.call(this);\n /* eslint-disable no-invalid-this */\n // When one series is modified, the others need to be recomputed\n this.eventsToUnbind.push(PackedBubbleSeries_addEvent(this, 'updatedData', function () {\n this.chart.series.forEach((s) => {\n if (s.type === this.type) {\n s.isDirty = true;\n }\n }, this);\n }));\n /* eslint-enable no-invalid-this */\n return this;\n }\n /**\n * Mouse up action, finalizing drag&drop.\n * @private\n * @param {Highcharts.Point} point The point that event occurred.\n */\n onMouseUp(dnPoint) {\n const point = dnPoint;\n if (point.fixedPosition && !point.removed) {\n const layout = this.layout, parentNodeLayout = this.parentNodeLayout;\n let distanceXY, distanceR;\n if (parentNodeLayout && layout.options.dragBetweenSeries) {\n parentNodeLayout.nodes.forEach((node) => {\n if (point && point.marker &&\n node !== point.series.parentNode) {\n distanceXY = layout.getDistXY(point, node);\n distanceR = (layout.vectorLength(distanceXY) -\n node.marker.radius -\n point.marker.radius);\n if (distanceR < 0) {\n node.series.addPoint(PackedBubbleSeries_merge(point.options, {\n plotX: point.plotX,\n plotY: point.plotY\n }), false);\n layout.removeElementFromCollection(point, layout.nodes);\n point.remove();\n }\n }\n });\n }\n Series_DragNodesComposition.onMouseUp.apply(this, arguments);\n }\n }\n /**\n * This is the main function responsible\n * for positioning all of the bubbles\n * allDataPoints - bubble array, in format [pixel x value,\n * pixel y value, radius,\n * related series index, related point index]\n * @private\n * @param {Array<Highcharts.PackedBubbleData>} allDataPoints All points from all series\n * @return {Array<Highcharts.PackedBubbleData>} Positions of all bubbles\n */\n placeBubbles(allDataPoints) {\n const checkOverlap = this.checkOverlap, positionBubble = this.positionBubble, bubblePos = [];\n let stage = 1, j = 0, k = 0, calculatedBubble, arr = [], i;\n // Sort all points\n const sortedArr = allDataPoints.sort((a, b) => b[2] - a[2]);\n if (sortedArr.length) {\n // Create first bubble in the middle of the chart\n bubblePos.push([\n [\n 0, // Starting in 0,0 coordinates\n 0,\n sortedArr[0][2], // Radius\n sortedArr[0][3], // Series index\n sortedArr[0][4]\n ] // Point index\n ]); // 0 level bubble\n if (sortedArr.length > 1) {\n bubblePos.push([\n [\n 0,\n (0 - sortedArr[1][2] -\n sortedArr[0][2]),\n // Move bubble above first one\n sortedArr[1][2],\n sortedArr[1][3],\n sortedArr[1][4]\n ]\n ]); // 1 level 1st bubble\n // first two already positioned so starting from 2\n for (i = 2; i < sortedArr.length; i++) {\n sortedArr[i][2] = sortedArr[i][2] || 1;\n // In case if radius is calculated as 0.\n calculatedBubble = positionBubble(bubblePos[stage][j], bubblePos[stage - 1][k], sortedArr[i]); // Calculate initial bubble position\n if (checkOverlap(calculatedBubble, bubblePos[stage][0])) {\n /* If new bubble is overlapping with first bubble\n * in current level (stage)\n */\n bubblePos.push([]);\n k = 0;\n /* Reset index of bubble, used for\n * positioning the bubbles around it,\n * we are starting from first bubble in next\n * stage because we are changing level to higher\n */\n bubblePos[stage + 1].push(positionBubble(bubblePos[stage][j], bubblePos[stage][0], sortedArr[i]));\n // (last bubble, 1. from curr stage, new bubble)\n stage++; // The new level is created, above current\n j = 0; // Set the index of bubble in curr level to 0\n }\n else if (stage > 1 &&\n bubblePos[stage - 1][k + 1] &&\n checkOverlap(calculatedBubble, bubblePos[stage - 1][k + 1])) {\n /* If new bubble is overlapping with one of the prev\n * stage bubbles, it means that - bubble, used for\n * positioning the bubbles around it has changed\n * so we need to recalculate it\n */\n k++;\n bubblePos[stage].push(positionBubble(bubblePos[stage][j], bubblePos[stage - 1][k], sortedArr[i]));\n // (last bubble, prev stage bubble, new bubble)\n j++;\n }\n else { // Simply add calculated bubble\n j++;\n bubblePos[stage].push(calculatedBubble);\n }\n }\n }\n this.chart.stages = bubblePos;\n // It may not be necessary but adding it just in case -\n // it is containing all of the bubble levels\n this.chart.rawPositions =\n []\n .concat.apply([], bubblePos);\n // Bubble positions merged into one array\n this.resizeRadius();\n arr = this.chart.rawPositions;\n }\n return arr;\n }\n /**\n * Function that checks for a parentMarker and sets the correct opacity.\n * @private\n * @param {Highcharts.Pack} point\n * Candidate point for opacity correction.\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n pointAttribs(point, state) {\n const options = this.options, hasParentMarker = point && point.isParentNode;\n let markerOptions = options.marker;\n if (hasParentMarker &&\n options.layoutAlgorithm &&\n options.layoutAlgorithm.parentNodeOptions) {\n markerOptions = options.layoutAlgorithm.parentNodeOptions.marker;\n }\n const fillOpacity = markerOptions.fillOpacity, attr = seriesProto.pointAttribs.call(this, point, state);\n if (fillOpacity !== 1) {\n attr['fill-opacity'] = fillOpacity;\n }\n return attr;\n }\n /**\n * Function that is adding one bubble based on positions and sizes of\n * two other bubbles, lastBubble is the last added bubble, newOrigin is\n * the bubble for positioning new bubbles. nextBubble is the currently\n * added bubble for which we are calculating positions\n * @private\n * @param {Array<number>} lastBubble The closest last bubble\n * @param {Array<number>} newOrigin New bubble\n * @param {Array<number>} nextBubble The closest next bubble\n * @return {Array<number>} Bubble with correct positions\n */\n positionBubble(lastBubble, newOrigin, nextBubble) {\n const sqrt = Math.sqrt, asin = Math.asin, acos = Math.acos, pow = Math.pow, abs = Math.abs, distance = sqrt(// Dist between lastBubble and newOrigin\n pow((lastBubble[0] - newOrigin[0]), 2) +\n pow((lastBubble[1] - newOrigin[1]), 2)), alfa = acos(\n // From cosinus theorem: alfa is an angle used for\n // calculating correct position\n (pow(distance, 2) +\n pow(nextBubble[2] + newOrigin[2], 2) -\n pow(nextBubble[2] + lastBubble[2], 2)) / (2 * (nextBubble[2] + newOrigin[2]) * distance)), beta = asin(// From sinus theorem.\n abs(lastBubble[0] - newOrigin[0]) /\n distance), \n // Providing helping variables, related to angle between\n // lastBubble and newOrigin\n gamma = (lastBubble[1] - newOrigin[1]) < 0 ? 0 : Math.PI, \n // If new origin y is smaller than last bubble y value\n // (2 and 3 quarter),\n // add Math.PI to final angle\n delta = (lastBubble[0] - newOrigin[0]) *\n (lastBubble[1] - newOrigin[1]) < 0 ?\n 1 : -1, // (1st and 3rd quarter)\n finalAngle = gamma + alfa + beta * delta, cosA = Math.cos(finalAngle), sinA = Math.sin(finalAngle), posX = newOrigin[0] + (newOrigin[2] + nextBubble[2]) * sinA, \n // Center of new origin + (radius1 + radius2) * sinus A\n posY = newOrigin[1] - (newOrigin[2] + nextBubble[2]) * cosA;\n return [\n posX,\n posY,\n nextBubble[2],\n nextBubble[3],\n nextBubble[4]\n ]; // The same as described before\n }\n render() {\n const dataLabels = [];\n seriesProto.render.apply(this, arguments);\n // #10823 - dataLabels should stay visible\n // when enabled allowOverlap.\n if (!this.options.dataLabels.allowOverlap) {\n this.data.forEach((point) => {\n if (PackedBubbleSeries_isArray(point.dataLabels)) {\n point.dataLabels.forEach((dataLabel) => {\n dataLabels.push(dataLabel);\n });\n }\n });\n // Only hide overlapping dataLabels for layouts that\n // use simulation. Spiral packedbubble don't need\n // additional dataLabel hiding on every simulation step\n if (this.options.useSimulation) {\n this.chart.hideOverlappingLabels(dataLabels);\n }\n }\n }\n /**\n * The function responsible for resizing the bubble radius.\n * In shortcut: it is taking the initially\n * calculated positions of bubbles. Then it is calculating the min max\n * of both dimensions, creating something in shape of bBox.\n * The comparison of bBox and the size of plotArea\n * (later it may be also the size set by customer) is giving the\n * value how to recalculate the radius so it will match the size\n * @private\n */\n resizeRadius() {\n const chart = this.chart, positions = chart.rawPositions, min = Math.min, max = Math.max, plotLeft = chart.plotLeft, plotTop = chart.plotTop, chartHeight = chart.plotHeight, chartWidth = chart.plotWidth;\n let minX, maxX, minY, maxY, radius;\n minX = minY = Number.POSITIVE_INFINITY; // Set initial values\n maxX = maxY = Number.NEGATIVE_INFINITY;\n for (const position of positions) {\n radius = position[2];\n minX = min(minX, position[0] - radius);\n // (x center-radius) is the min x value used by specific bubble\n maxX = max(maxX, position[0] + radius);\n minY = min(minY, position[1] - radius);\n maxY = max(maxY, position[1] + radius);\n }\n const bBox = [maxX - minX, maxY - minY], spaceRatio = [\n (chartWidth - plotLeft) / bBox[0],\n (chartHeight - plotTop) / bBox[1]\n ], smallerDimension = min.apply([], spaceRatio);\n if (Math.abs(smallerDimension - 1) > 1e-10) {\n // If bBox is considered not the same width as possible size\n for (const position of positions) {\n position[2] *= smallerDimension;\n }\n this.placeBubbles(positions);\n }\n else {\n /** If no radius recalculation is needed, we need to position\n * the whole bubbles in center of chart plotarea\n * for this, we are adding two parameters,\n * diffY and diffX, that are related to differences\n * between the initial center and the bounding box\n */\n chart.diffY = chartHeight / 2 +\n plotTop - minY - (maxY - minY) / 2;\n chart.diffX = chartWidth / 2 +\n plotLeft - minX - (maxX - minX) / 2;\n }\n }\n /**\n * The function responsible for calculating series bubble' s bBox.\n * Needed because of exporting failure when useSimulation\n * is set to false\n * @private\n */\n seriesBox() {\n const chart = this.chart, data = this.data, max = Math.max, min = Math.min, bBox = [\n chart.plotLeft,\n chart.plotLeft + chart.plotWidth,\n chart.plotTop,\n chart.plotTop + chart.plotHeight\n ];\n let radius;\n data.forEach((p) => {\n if (PackedBubbleSeries_defined(p.plotX) &&\n PackedBubbleSeries_defined(p.plotY) &&\n p.marker.radius) {\n radius = p.marker.radius;\n bBox[0] = min(bBox[0], p.plotX - radius);\n bBox[1] = max(bBox[1], p.plotX + radius);\n bBox[2] = min(bBox[2], p.plotY - radius);\n bBox[3] = max(bBox[3], p.plotY + radius);\n }\n });\n return PackedBubbleSeries_isNumber(bBox.width / bBox.height) ?\n bBox :\n null;\n }\n /**\n * Needed because of z-indexing issue if point is added in series.group\n * @private\n */\n setVisible() {\n const series = this;\n seriesProto.setVisible.apply(series, arguments);\n if (series.parentNodeLayout && series.graph) {\n if (series.visible) {\n series.graph.show();\n if (series.parentNode.dataLabel) {\n series.parentNode.dataLabel.show();\n }\n }\n else {\n series.graph.hide();\n series.parentNodeLayout.removeElementFromCollection(series.parentNode, series.parentNodeLayout.nodes);\n if (series.parentNode.dataLabel) {\n series.parentNode.dataLabel.hide();\n }\n }\n }\n else if (series.layout) {\n if (series.visible) {\n series.layout.addElementsToCollection(series.points, series.layout.nodes);\n }\n else {\n series.points.forEach((node) => {\n series.layout.removeElementFromCollection(node, series.layout.nodes);\n });\n }\n }\n }\n /**\n * Extend the base translate method to handle bubble size,\n * and correct positioning them.\n * @private\n */\n translate() {\n const chart = this.chart, data = this.data, index = this.index, useSimulation = this.options.useSimulation;\n let point, radius, positions;\n this.generatePoints();\n // Merged data is an array with all of the data from all series\n if (!PackedBubbleSeries_defined(chart.allDataPoints)) {\n chart.allDataPoints = this.accumulateAllPoints();\n // Calculate radius for all added data\n this.getPointRadius();\n }\n // After getting initial radius, calculate bubble positions\n if (useSimulation) {\n positions = chart.allDataPoints;\n }\n else {\n positions = this.placeBubbles(chart.allDataPoints);\n this.options.draggable = false;\n }\n // Set the shape and arguments to be picked up in drawPoints\n for (const position of positions) {\n if (position[3] === index) {\n // Update the series points with the val from positions\n // array\n point = data[position[4]];\n radius = PackedBubbleSeries_pick(position[2], void 0);\n if (!useSimulation) {\n point.plotX = (position[0] - chart.plotLeft +\n chart.diffX);\n point.plotY = (position[1] - chart.plotTop +\n chart.diffY);\n }\n if (PackedBubbleSeries_isNumber(radius)) {\n point.marker = PackedBubbleSeries_extend(point.marker, {\n radius,\n width: 2 * radius,\n height: 2 * radius\n });\n point.radius = radius;\n }\n }\n }\n if (useSimulation) {\n this.deferLayout();\n }\n PackedBubbleSeries_fireEvent(this, 'afterTranslate');\n }\n}\nPackedBubbleSeries.defaultOptions = PackedBubbleSeries_merge(PackedBubbleSeries_BubbleSeries.defaultOptions, PackedBubble_PackedBubbleSeriesDefaults);\nPackedBubbleSeries_extend(PackedBubbleSeries.prototype, {\n pointClass: PackedBubble_PackedBubblePoint,\n axisTypes: [],\n directTouch: true,\n forces: ['barycenter', 'repulsive'],\n hasDraggableNodes: true,\n invertible: false,\n isCartesian: false,\n noSharedTooltip: true,\n pointArrayMap: ['value'],\n pointValKey: 'value',\n requireSorting: false,\n trackerGroups: ['group', 'dataLabelsGroup', 'parentNodesGroup'],\n initDataLabels: PackedBubbleSeries_initDataLabels,\n alignDataLabel: seriesProto.alignDataLabel,\n indexateNodes: PackedBubbleSeries_noop,\n onMouseDown: Series_DragNodesComposition.onMouseDown,\n onMouseMove: Series_DragNodesComposition.onMouseMove,\n redrawHalo: Series_DragNodesComposition.redrawHalo,\n searchPoint: PackedBubbleSeries_noop // Solving #12287\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('packedbubble', PackedBubbleSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const PackedBubble_PackedBubbleSeries = (PackedBubbleSeries);\n\n;// ./code/es-modules/Series/Polygon/PolygonSeriesDefaults.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 * API Options\n *\n * */\n/**\n * A polygon series can be used to draw any freeform shape in the cartesian\n * coordinate system. A fill is applied with the `color` option, and\n * stroke is applied through `lineWidth` and `lineColor` options.\n *\n * @sample {highcharts} highcharts/demo/polygon/\n * Polygon\n * @sample {highstock} highcharts/demo/polygon/\n * Polygon\n *\n * @extends plotOptions.scatter\n * @since 4.1.0\n * @excluding jitter, softThreshold, threshold, cluster, boostThreshold,\n * boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @optionparent plotOptions.polygon\n */\nconst PolygonSeriesDefaults = {\n marker: {\n enabled: false,\n states: {\n hover: {\n enabled: false\n }\n }\n },\n stickyTracking: false,\n tooltip: {\n followPointer: true,\n pointFormat: ''\n },\n trackByArea: true,\n legendSymbol: 'rectangle'\n};\n/**\n * A `polygon` series. If the [type](#series.polygon.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.polygon\n * @excluding dataParser, dataURL, stack, boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.polygon\n */\n/**\n * An array of data points for the series. For the `polygon` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 3],\n * [2, 1]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.polygon.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 8,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.polygon.data\n */\n''; // Keeps doclets above separate\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Polygon_PolygonSeriesDefaults = (PolygonSeriesDefaults);\n\n;// ./code/es-modules/Series/Polygon/PolygonSeries.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 { noop: PolygonSeries_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { area: PolygonSeries_AreaSeries, line: LineSeries, scatter: PolygonSeries_ScatterSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { extend: PolygonSeries_extend, merge: PolygonSeries_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass PolygonSeries extends PolygonSeries_ScatterSeries {\n /* *\n *\n * Functions\n *\n * */\n getGraphPath() {\n const graphPath = LineSeries.prototype.getGraphPath.call(this);\n let i = graphPath.length + 1;\n // Close all segments\n while (i--) {\n if ((i === graphPath.length || graphPath[i][0] === 'M') && i > 0) {\n graphPath.splice(i, 0, ['Z']);\n }\n }\n this.areaPath = graphPath;\n return graphPath;\n }\n drawGraph() {\n // Hack into the fill logic in area.drawGraph\n this.options.fillColor = this.color;\n PolygonSeries_AreaSeries.prototype.drawGraph.call(this);\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nPolygonSeries.defaultOptions = PolygonSeries_merge(PolygonSeries_ScatterSeries.defaultOptions, Polygon_PolygonSeriesDefaults);\nPolygonSeries_extend(PolygonSeries.prototype, {\n type: 'polygon',\n drawTracker: LineSeries.prototype.drawTracker,\n setStackedPoints: PolygonSeries_noop // No stacking points on polygons (#5310)\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('polygon', PolygonSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Polygon_PolygonSeries = ((/* unused pure expression or super */ null && (PolygonSeries)));\n\n;// ./code/es-modules/Core/Axis/RadialAxisDefaults.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * Extension for radial axes\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/**\n * Circular axis around the perimeter of a polar chart.\n * @private\n */\nconst defaultCircularOptions = {\n gridLineWidth: 1, // Spokes\n labels: {\n align: void 0, // Auto\n x: 0,\n y: void 0 // Auto\n },\n maxPadding: 0,\n minPadding: 0,\n showLastLabel: false,\n tickLength: 0\n};\n/**\n * The default options extend defaultYAxisOptions.\n * @private\n */\nconst defaultRadialGaugeOptions = {\n endOnTick: false,\n gridLineWidth: 0,\n labels: {\n align: 'center',\n distance: -25,\n x: 0,\n y: void 0 // Auto\n },\n lineWidth: 1,\n minorGridLineWidth: 0,\n minorTickInterval: 'auto',\n minorTickLength: 10,\n minorTickPosition: 'inside',\n minorTickWidth: 1,\n startOnTick: false,\n tickLength: 10,\n tickPixelInterval: 100,\n tickPosition: 'inside',\n tickWidth: 2,\n title: {\n rotation: 0,\n text: ''\n },\n zIndex: 2 // Behind dials, points in the series group\n};\n/**\n * Radial axis, like a spoke in a polar chart.\n * @private\n */\nconst defaultRadialOptions = {\n /**\n * In a polar chart, this is the angle of the Y axis in degrees, where\n * 0 is up and 90 is right. The angle determines the position of the\n * axis line and the labels, though the coordinate system is unaffected.\n * Since v8.0.0 this option is also applicable for X axis (inverted\n * polar).\n *\n * @sample {highcharts} highcharts/xaxis/angle/\n * Custom X axis' angle on inverted polar chart\n * @sample {highcharts} highcharts/yaxis/angle/\n * Dual axis polar chart\n *\n * @type {number}\n * @default 0\n * @since 4.2.7\n * @product highcharts\n * @apioption xAxis.angle\n */\n /**\n * Polar charts only. Whether the grid lines should draw as a polygon\n * with straight lines between categories, or as circles. Can be either\n * `circle` or `polygon`. Since v8.0.0 this option is also applicable\n * for X axis (inverted polar).\n *\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Polygon grid lines\n * @sample {highcharts} highcharts/xaxis/gridlineinterpolation/\n * Circle and polygon on inverted polar\n * @sample {highcharts} highcharts/yaxis/gridlineinterpolation/\n * Circle and polygon\n *\n * @type {string}\n * @product highcharts\n * @validvalue [\"circle\", \"polygon\"]\n * @apioption xAxis.gridLineInterpolation\n */\n gridLineInterpolation: 'circle',\n gridLineWidth: 1,\n labels: {\n align: 'right',\n padding: 5,\n x: -3,\n y: -2\n },\n showLastLabel: false,\n title: {\n x: 4,\n text: null,\n rotation: 90\n }\n};\n/* *\n *\n * Default Export\n *\n * */\nconst RadialAxisDefaults = {\n circular: defaultCircularOptions,\n radial: defaultRadialOptions,\n radialGauge: defaultRadialGaugeOptions\n};\n/* harmony default export */ const Axis_RadialAxisDefaults = (RadialAxisDefaults);\n\n;// ./code/es-modules/Core/Axis/RadialAxis.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\nconst { defaultOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { composed: RadialAxis_composed, noop: RadialAxis_noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: RadialAxis_addEvent, correctFloat: RadialAxis_correctFloat, defined: RadialAxis_defined, extend: RadialAxis_extend, fireEvent: RadialAxis_fireEvent, isObject, merge: RadialAxis_merge, pick: RadialAxis_pick, pushUnique: RadialAxis_pushUnique, relativeLength: RadialAxis_relativeLength, wrap: RadialAxis_wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Composition\n *\n * */\nvar RadialAxis;\n(function (RadialAxis) {\n /* *\n *\n * Declarations\n *\n * */\n RadialAxis.radialDefaultOptions = RadialAxis_merge(Axis_RadialAxisDefaults);\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * In case of auto connect, add one closestPointRange to the max value\n * right before tickPositions are computed, so that ticks will extend\n * passed the real max.\n * @private\n */\n function beforeSetTickPositions() {\n // If autoConnect is true, polygonal grid lines are connected, and\n // one closestPointRange is added to the X axis to prevent the last\n // point from overlapping the first.\n this.autoConnect = (this.isCircular &&\n typeof RadialAxis_pick(this.userMax, this.options.max) === 'undefined' &&\n RadialAxis_correctFloat(this.endAngleRad - this.startAngleRad) ===\n RadialAxis_correctFloat(2 * Math.PI));\n // This will lead to add an extra tick to xAxis in order to display\n // a correct range on inverted polar\n if (!this.isCircular && this.chart.inverted) {\n this.max++;\n }\n if (this.autoConnect) {\n this.max += ((this.categories && 1) ||\n this.pointRange ||\n this.closestPointRange ||\n 0); // #1197, #2260\n }\n }\n /**\n * Augments methods for the value axis.\n *\n * @private\n *\n * @param {Highcharts.Axis} AxisClass\n * Axis class to extend.\n *\n * @param {Highcharts.Tick} TickClass\n * Tick class to use.\n *\n * @return {Highcharts.Axis}\n * Axis composition.\n */\n function compose(AxisClass, TickClass) {\n if (RadialAxis_pushUnique(RadialAxis_composed, 'Axis.Radial')) {\n RadialAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n RadialAxis_addEvent(AxisClass, 'autoLabelAlign', onAxisAutoLabelAlign);\n RadialAxis_addEvent(AxisClass, 'destroy', onAxisDestroy);\n RadialAxis_addEvent(AxisClass, 'init', onAxisInit);\n RadialAxis_addEvent(AxisClass, 'initialAxisTranslation', onAxisInitialAxisTranslation);\n RadialAxis_addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);\n RadialAxis_addEvent(TickClass, 'afterGetPosition', onTickAfterGetPosition);\n RadialAxis_addEvent((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()), 'setOptions', onGlobalSetOptions);\n RadialAxis_wrap(TickClass.prototype, 'getMarkPath', wrapTickGetMarkPath);\n }\n return AxisClass;\n }\n RadialAxis.compose = compose;\n /**\n * Attach and return collecting function for labels in radial axis for\n * anti-collision.\n *\n * @private\n */\n function createLabelCollector() {\n return () => {\n if (this.isRadial &&\n this.tickPositions &&\n // Undocumented option for now, but working\n this.options.labels &&\n this.options.labels.allowOverlap !== true) {\n return this.tickPositions\n .map((pos) => this.ticks[pos] && this.ticks[pos].label)\n .filter((label) => Boolean(label));\n }\n };\n }\n /**\n * Creates an empty collector function.\n * @private\n */\n function createLabelCollectorHidden() {\n return RadialAxis_noop;\n }\n /**\n * Find the correct end values of crosshair in polar.\n * @private\n */\n function getCrosshairPosition(options, x1, y1) {\n const center = this.pane.center;\n let value = options.value, shapeArgs, end, x2, y2;\n if (this.isCircular) {\n if (!RadialAxis_defined(value)) {\n // When the snap is set to false\n x2 = options.chartX || 0;\n y2 = options.chartY || 0;\n value = this.translate(Math.atan2(y2 - y1, x2 - x1) - this.startAngleRad, true);\n }\n else if (options.point) {\n // When the snap is set to true\n shapeArgs = options.point.shapeArgs || {};\n if (shapeArgs.start) {\n // Find a true value of the point based on the\n // angle\n value = this.chart.inverted ?\n this.translate(options.point.rectPlotY, true) :\n options.point.x;\n }\n }\n end = this.getPosition(value);\n x2 = end.x;\n y2 = end.y;\n }\n else {\n if (!RadialAxis_defined(value)) {\n x2 = options.chartX;\n y2 = options.chartY;\n }\n if (RadialAxis_defined(x2) && RadialAxis_defined(y2)) {\n // Calculate radius of non-circular axis' crosshair\n y1 = center[1] + this.chart.plotTop;\n value = this.translate(Math.min(Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), center[2] / 2) - center[3] / 2, true);\n }\n }\n return [value, x2 || 0, y2 || 0];\n }\n /**\n * Get the path for the axis line. This method is also referenced in the\n * getPlotLinePath method.\n *\n * @private\n * @param {number} _lineWidth\n * Line width is not used.\n * @param {number} [radius]\n * Radius of radial path.\n * @param {number} [innerRadius]\n * Inner radius of radial path.\n */\n function getLinePath(_lineWidth, radius, innerRadius) {\n const center = this.pane.center, chart = this.chart, left = this.left || 0, top = this.top || 0;\n let end, r = RadialAxis_pick(radius, center[2] / 2 - this.offset), path;\n if (typeof innerRadius === 'undefined') {\n innerRadius = this.horiz ? 0 : this.center && -this.center[3] / 2;\n }\n // In case when innerSize of pane is set, it must be included\n if (innerRadius) {\n r += innerRadius;\n }\n if (this.isCircular || typeof radius !== 'undefined') {\n path = this.chart.renderer.symbols.arc(left + center[0], top + center[1], r, r, {\n start: this.startAngleRad,\n end: this.endAngleRad,\n open: true,\n innerR: 0\n });\n // Bounds used to position the plotLine label next to the line\n // (#7117)\n path.xBounds = [left + center[0]];\n path.yBounds = [top + center[1] - r];\n }\n else {\n end = this.postTranslate(this.angleRad, r);\n path = [\n [\n 'M',\n this.center[0] + chart.plotLeft,\n this.center[1] + chart.plotTop\n ],\n ['L', end.x, end.y]\n ];\n }\n return path;\n }\n /**\n * Wrap the getOffset method to return zero offset for title or labels\n * in a radial axis.\n */\n function getOffset() {\n const axisProto = this.constructor.prototype;\n // Call the Axis prototype method (the method we're in now is on the\n // instance)\n axisProto.getOffset.call(this);\n // Title or label offsets are not counted\n this.chart.axisOffset[this.side] = 0;\n }\n /**\n * Find the path for plot bands along the radial axis.\n *\n * @private\n */\n function getPlotBandPath(from, to, options) {\n const chart = this.chart, radiusToPixels = (radius) => {\n if (typeof radius === 'string') {\n let r = parseInt(radius, 10);\n if (percentRegex.test(radius)) {\n r = (r * fullRadius) / 100;\n }\n return r;\n }\n return radius;\n }, center = this.center, startAngleRad = this.startAngleRad, fullRadius = center[2] / 2, offset = Math.min(this.offset, 0), left = this.left || 0, top = this.top || 0, percentRegex = /%$/, isCircular = this.isCircular; // X axis in a polar chart\n let start, end, angle, xOnPerimeter, open, path, outerRadius = RadialAxis_pick(radiusToPixels(options.outerRadius), fullRadius), innerRadius = radiusToPixels(options.innerRadius), thickness = RadialAxis_pick(radiusToPixels(options.thickness), 10);\n // Polygonal plot bands\n if (this.options.gridLineInterpolation === 'polygon') {\n path = this.getPlotLinePath({ value: from }).concat(this.getPlotLinePath({ value: to, reverse: true }));\n // Circular grid bands\n }\n else {\n // Keep within bounds\n from = Math.max(from, this.min);\n to = Math.min(to, this.max);\n const transFrom = this.translate(from), transTo = this.translate(to);\n // Plot bands on Y axis (radial axis) - inner and outer\n // radius depend on to and from\n if (!isCircular) {\n outerRadius = transFrom || 0;\n innerRadius = transTo || 0;\n }\n // Handle full circle\n if (options.shape === 'circle' || !isCircular) {\n start = -Math.PI / 2;\n end = Math.PI * 1.5;\n open = true;\n }\n else {\n start = startAngleRad + (transFrom || 0);\n end = startAngleRad + (transTo || 0);\n }\n outerRadius -= offset; // #5283\n thickness -= offset; // #5283\n path = chart.renderer.symbols.arc(left + center[0], top + center[1], outerRadius, outerRadius, {\n // Math is for reversed yAxis (#3606)\n start: Math.min(start, end),\n end: Math.max(start, end),\n innerR: RadialAxis_pick(innerRadius, outerRadius - thickness),\n open,\n borderRadius: options.borderRadius\n });\n // Provide positioning boxes for the label (#6406)\n if (isCircular) {\n angle = (end + start) / 2;\n xOnPerimeter = (left +\n center[0] +\n (center[2] / 2) * Math.cos(angle));\n path.xBounds = angle > -Math.PI / 2 && angle < Math.PI / 2 ?\n // Right hemisphere\n [xOnPerimeter, chart.plotWidth] :\n // Left hemisphere\n [0, xOnPerimeter];\n path.yBounds = [\n top + center[1] + (center[2] / 2) * Math.sin(angle)\n ];\n // Shift up or down to get the label clear of the perimeter\n path.yBounds[0] += ((angle > -Math.PI && angle < 0) ||\n (angle > Math.PI)) ? -10 : 10;\n }\n }\n return path;\n }\n /**\n * Find the path for plot lines perpendicular to the radial axis.\n */\n function getPlotLinePath(options) {\n const center = this.pane.center, chart = this.chart, inverted = chart.inverted, reverse = options.reverse, background = this.pane.options.background ?\n (this.pane.options.background[0] ||\n this.pane.options.background) :\n {}, innerRadius = background.innerRadius || '0%', outerRadius = background.outerRadius || '100%', x1 = center[0] + chart.plotLeft, y1 = center[1] + chart.plotTop, height = this.height, isCrosshair = options.isCrosshair, paneInnerR = center[3] / 2;\n let value = options.value, innerRatio, distance, a, b, otherAxis, xy, tickPositions, crossPos, path;\n const end = this.getPosition(value);\n let x2 = end.x, y2 = end.y;\n // Crosshair logic\n if (isCrosshair) {\n // Find crosshair's position and perform destructuring\n // assignment\n crossPos = this.getCrosshairPosition(options, x1, y1);\n value = crossPos[0];\n x2 = crossPos[1];\n y2 = crossPos[2];\n }\n // Spokes\n if (this.isCircular) {\n distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n a = (typeof innerRadius === 'string') ?\n RadialAxis_relativeLength(innerRadius, 1) :\n (innerRadius / distance);\n b = (typeof outerRadius === 'string') ?\n RadialAxis_relativeLength(outerRadius, 1) :\n (outerRadius / distance);\n // To ensure that gridlines won't be displayed in area\n // defined by innerSize in case of custom radiuses of pane's\n // background\n if (center && paneInnerR) {\n innerRatio = paneInnerR / distance;\n if (a < innerRatio) {\n a = innerRatio;\n }\n if (b < innerRatio) {\n b = innerRatio;\n }\n }\n path = [\n ['M', x1 + a * (x2 - x1), y1 - a * (y1 - y2)],\n ['L', x2 - (1 - b) * (x2 - x1), y2 + (1 - b) * (y1 - y2)]\n ];\n // Concentric circles\n }\n else {\n // Pick the right values depending if it is grid line or\n // crosshair\n value = this.translate(value);\n // This is required in case when xAxis is non-circular to\n // prevent grid lines (or crosshairs, if enabled) from\n // rendering above the center after they supposed to be\n // displayed below the center point\n if (value) {\n if (value < 0 || value > height) {\n value = 0;\n }\n }\n if (this.options.gridLineInterpolation === 'circle') {\n // A value of 0 is in the center, so it won't be\n // visible, but draw it anyway for update and animation\n // (#2366)\n path = this.getLinePath(0, value, paneInnerR);\n // Concentric polygons\n }\n else {\n path = [];\n // Find the other axis (a circular one) in the same pane\n chart[inverted ? 'yAxis' : 'xAxis'].forEach((a) => {\n if (a.pane === this.pane) {\n otherAxis = a;\n }\n });\n if (otherAxis) {\n tickPositions = otherAxis.tickPositions;\n if (otherAxis.autoConnect) {\n tickPositions =\n tickPositions.concat([tickPositions[0]]);\n }\n // Reverse the positions for concatenation of polygonal\n // plot bands\n if (reverse) {\n tickPositions = tickPositions.slice().reverse();\n }\n if (value) {\n value += paneInnerR;\n }\n for (let i = 0; i < tickPositions.length; i++) {\n xy = otherAxis.getPosition(tickPositions[i], value);\n path.push(i ? ['L', xy.x, xy.y] : ['M', xy.x, xy.y]);\n }\n }\n }\n }\n return path;\n }\n /**\n * Returns the x, y coordinate of a point given by a value and a pixel\n * distance from center.\n *\n * @private\n * @param {number} value\n * Point value.\n * @param {number} [length]\n * Distance from center.\n */\n function getPosition(value, length) {\n const translatedVal = this.translate(value);\n return this.postTranslate(this.isCircular ? translatedVal : this.angleRad, // #2848\n // In case when translatedVal is negative, the 0 value must be\n // used instead, in order to deal with lines and labels that\n // fall out of the visible range near the center of a pane\n RadialAxis_pick(this.isCircular ?\n length :\n (translatedVal < 0 ? 0 : translatedVal), this.center[2] / 2) - this.offset);\n }\n /**\n * Find the position for the axis title, by default inside the gauge.\n */\n function getTitlePosition() {\n const center = this.center, chart = this.chart, titleOptions = this.options.title;\n return {\n x: chart.plotLeft + center[0] + (titleOptions.x || 0),\n y: (chart.plotTop +\n center[1] -\n ({\n high: 0.5,\n middle: 0.25,\n low: 0\n }[titleOptions.align] *\n center[2]) +\n (titleOptions.y || 0))\n };\n }\n /**\n * Modify radial axis.\n * @private\n *\n * @param {Highcharts.Axis} radialAxis\n * Radial axis to modify.\n */\n function modify(axis) {\n axis.beforeSetTickPositions = beforeSetTickPositions;\n axis.createLabelCollector = createLabelCollector;\n axis.getCrosshairPosition = getCrosshairPosition;\n axis.getLinePath = getLinePath;\n axis.getOffset = getOffset;\n axis.getPlotBandPath = getPlotBandPath;\n axis.getPlotLinePath = getPlotLinePath;\n axis.getPosition = getPosition;\n axis.getTitlePosition = getTitlePosition;\n axis.postTranslate = postTranslate;\n axis.setAxisSize = setAxisSize;\n axis.setAxisTranslation = setAxisTranslation;\n axis.setOptions = setOptions;\n }\n /**\n * Modify radial axis as hidden.\n * @private\n *\n * @param {Highcharts.Axis} radialAxis\n * Radial axis to modify.\n */\n function modifyAsHidden(radialAxis) {\n radialAxis.isHidden = true;\n radialAxis.createLabelCollector = createLabelCollectorHidden;\n radialAxis.getOffset = RadialAxis_noop;\n radialAxis.redraw = renderHidden;\n radialAxis.render = renderHidden;\n radialAxis.setScale = RadialAxis_noop;\n radialAxis.setCategories = RadialAxis_noop;\n radialAxis.setTitle = RadialAxis_noop;\n }\n /**\n * Finalize modification of axis instance with radial logic.\n */\n function onAxisAfterInit() {\n const chart = this.chart, options = this.options, isHidden = chart.angular && this.isXAxis, pane = this.pane, paneOptions = pane && pane.options;\n if (!isHidden && pane && (chart.angular || chart.polar)) {\n const fullCircle = Math.PI * 2, \n // Start and end angle options are given in degrees relative to\n // top, while internal computations are in radians relative to\n // right (like SVG).\n start = (RadialAxis_pick(paneOptions.startAngle, 0) - 90) * Math.PI / 180, end = (RadialAxis_pick(paneOptions.endAngle, RadialAxis_pick(paneOptions.startAngle, 0) + 360) - 90) * Math.PI / 180;\n // Y axis in polar charts\n this.angleRad = (options.angle || 0) * Math.PI / 180;\n // Gauges\n this.startAngleRad = start;\n this.endAngleRad = end;\n this.offset = options.offset || 0;\n // Normalize Start and End to <0, 2*PI> range\n // (in degrees: <0,360>)\n let normalizedStart = (start % fullCircle + fullCircle) %\n fullCircle, normalizedEnd = (end % fullCircle + fullCircle) % fullCircle;\n // Move normalized angles to <-PI, PI> range (<-180, 180>)\n // to match values returned by Math.atan2()\n if (normalizedStart > Math.PI) {\n normalizedStart -= fullCircle;\n }\n if (normalizedEnd > Math.PI) {\n normalizedEnd -= fullCircle;\n }\n this.normalizedStartAngleRad = normalizedStart;\n this.normalizedEndAngleRad = normalizedEnd;\n }\n }\n /**\n * Wrap auto label align to avoid setting axis-wide rotation on radial axes.\n * (#4920)\n */\n function onAxisAutoLabelAlign(e) {\n if (this.isRadial) {\n e.align = void 0;\n e.preventDefault();\n }\n }\n /**\n * Remove label collector function on axis remove/update.\n */\n function onAxisDestroy() {\n if (this.chart &&\n this.chart.labelCollectors) {\n const index = (this.labelCollector ?\n this.chart.labelCollectors.indexOf(this.labelCollector) :\n -1);\n if (index >= 0) {\n this.chart.labelCollectors.splice(index, 1);\n }\n }\n }\n /**\n * Modify axis instance with radial logic before common axis init.\n */\n function onAxisInit(e) {\n const chart = this.chart, angular = chart.angular, polar = chart.polar, isX = this.isXAxis, coll = this.coll, isHidden = angular && isX, paneIndex = e.userOptions.pane || 0, pane = this.pane = chart.pane && chart.pane[paneIndex];\n let isCircular;\n // Prevent changes for colorAxis\n if (coll === 'colorAxis') {\n this.isRadial = false;\n return;\n }\n // Before prototype.init\n if (angular) {\n if (isHidden) {\n modifyAsHidden(this);\n }\n else {\n modify(this);\n }\n isCircular = !isX;\n }\n else if (polar) {\n modify(this);\n // Check which axis is circular\n isCircular = this.horiz;\n }\n // Disable certain features on angular and polar axes\n if (angular || polar) {\n this.isRadial = true;\n if (!this.labelCollector) {\n this.labelCollector = this.createLabelCollector();\n }\n if (this.labelCollector) {\n // Prevent overlapping axis labels (#9761)\n chart.labelCollectors.push(this.labelCollector);\n }\n }\n else {\n this.isRadial = false;\n }\n // A pointer back to this axis to borrow geometry\n if (pane && isCircular) {\n pane.axis = this;\n }\n this.isCircular = isCircular;\n }\n /**\n * Prepare axis translation.\n */\n function onAxisInitialAxisTranslation() {\n if (this.isRadial) {\n this.beforeSetTickPositions();\n }\n }\n /**\n * Find the center position of the label based on the distance option.\n */\n function onTickAfterGetLabelPosition(e) {\n const label = this.label;\n if (!label) {\n return;\n }\n const axis = this.axis, labelBBox = label.getBBox(), labelOptions = axis.options.labels, angle = ((axis.translate(this.pos) + axis.startAngleRad +\n Math.PI / 2) / Math.PI * 180) % 360, correctAngle = Math.round(angle), labelYPosCorrection = !RadialAxis_defined(labelOptions.y) ? -labelBBox.height * 0.3 : 0;\n let optionsY = labelOptions.y, ret, centerSlot = 20, // 20 degrees to each side at the top and bottom\n align = labelOptions.align, labelDir = 'end', // Direction of the label 'start' or 'end'\n reducedAngle1 = correctAngle < 0 ?\n correctAngle + 360 : correctAngle, reducedAngle2 = reducedAngle1, translateY = 0, translateX = 0;\n if (axis.isRadial) { // Both X and Y axes in a polar chart\n ret = axis.getPosition(this.pos, (axis.center[2] / 2) +\n RadialAxis_relativeLength(RadialAxis_pick(labelOptions.distance, -25), axis.center[2] / 2, -axis.center[2] / 2));\n // Automatically rotated\n if (labelOptions.rotation === 'auto') {\n label.attr({\n rotation: angle\n });\n // Vertically centered\n }\n else if (!RadialAxis_defined(optionsY)) {\n optionsY = (axis.chart.renderer.fontMetrics(label).b -\n labelBBox.height / 2);\n }\n // Automatic alignment\n if (!RadialAxis_defined(align)) {\n if (axis.isCircular) { // Y axis\n if (labelBBox.width >\n axis.len * axis.tickInterval / (axis.max - axis.min)) { // #3506\n centerSlot = 0;\n }\n if (angle > centerSlot && angle < 180 - centerSlot) {\n align = 'left'; // Right hemisphere\n }\n else if (angle > 180 + centerSlot &&\n angle < 360 - centerSlot) {\n align = 'right'; // Left hemisphere\n }\n else {\n align = 'center'; // Top or bottom\n }\n }\n else {\n align = 'center';\n }\n label.attr({\n align: align\n });\n }\n // Auto alignment for solid-gauges with two labels (#10635)\n if (align === 'auto' &&\n axis.tickPositions.length === 2 &&\n axis.isCircular) {\n // Angles reduced to 0 - 90 or 180 - 270\n if (reducedAngle1 > 90 && reducedAngle1 < 180) {\n reducedAngle1 = 180 - reducedAngle1;\n }\n else if (reducedAngle1 > 270 && reducedAngle1 <= 360) {\n reducedAngle1 = 540 - reducedAngle1;\n }\n // Angles reduced to 0 - 180\n if (reducedAngle2 > 180 && reducedAngle2 <= 360) {\n reducedAngle2 = 360 - reducedAngle2;\n }\n if ((axis.pane.options.startAngle === correctAngle) ||\n (axis.pane.options.startAngle === correctAngle + 360) ||\n (axis.pane.options.startAngle === correctAngle - 360)) {\n labelDir = 'start';\n }\n if ((correctAngle >= -90 && correctAngle <= 90) ||\n (correctAngle >= -360 && correctAngle <= -270) ||\n (correctAngle >= 270 && correctAngle <= 360)) {\n align = (labelDir === 'start') ? 'right' : 'left';\n }\n else {\n align = (labelDir === 'start') ? 'left' : 'right';\n }\n // For angles between (90 + n * 180) +- 20\n if (reducedAngle2 > 70 && reducedAngle2 < 110) {\n align = 'center';\n }\n // Auto Y translation\n if (reducedAngle1 < 15 ||\n (reducedAngle1 >= 180 && reducedAngle1 < 195)) {\n translateY = labelBBox.height * 0.3;\n }\n else if (reducedAngle1 >= 15 && reducedAngle1 <= 35) {\n translateY = labelDir === 'start' ?\n 0 : labelBBox.height * 0.75;\n }\n else if (reducedAngle1 >= 195 && reducedAngle1 <= 215) {\n translateY = labelDir === 'start' ?\n labelBBox.height * 0.75 : 0;\n }\n else if (reducedAngle1 > 35 && reducedAngle1 <= 90) {\n translateY = labelDir === 'start' ?\n -labelBBox.height * 0.25 : labelBBox.height;\n }\n else if (reducedAngle1 > 215 && reducedAngle1 <= 270) {\n translateY = labelDir === 'start' ?\n labelBBox.height : -labelBBox.height * 0.25;\n }\n // Auto X translation\n if (reducedAngle2 < 15) {\n translateX = labelDir === 'start' ?\n -labelBBox.height * 0.15 : labelBBox.height * 0.15;\n }\n else if (reducedAngle2 > 165 && reducedAngle2 <= 180) {\n translateX = labelDir === 'start' ?\n labelBBox.height * 0.15 : -labelBBox.height * 0.15;\n }\n label.attr({ align: align });\n label.translate(translateX, translateY + labelYPosCorrection);\n }\n e.pos.x = ret.x + (labelOptions.x || 0);\n e.pos.y = ret.y + (optionsY || 0);\n }\n }\n /**\n * Add special cases within the Tick class' methods for radial axes.\n */\n function onTickAfterGetPosition(e) {\n if (this.axis.getPosition) {\n RadialAxis_extend(e.pos, this.axis.getPosition(this.pos));\n }\n }\n /**\n * Update default options for radial axes from setOptions method.\n */\n function onGlobalSetOptions({ options }) {\n if (options.xAxis) {\n RadialAxis_merge(true, RadialAxis.radialDefaultOptions.circular, options.xAxis);\n }\n if (options.yAxis) {\n RadialAxis_merge(true, RadialAxis.radialDefaultOptions.radialGauge, options.yAxis);\n }\n }\n /**\n * Translate from intermediate plotX (angle), plotY (axis.len - radius)\n * to final chart coordinates.\n *\n * @private\n * @param {number} angle\n * Translation angle.\n * @param {number} radius\n * Translation radius.\n */\n function postTranslate(angle, radius) {\n const chart = this.chart, center = this.center;\n angle = this.startAngleRad + angle;\n return {\n x: chart.plotLeft + center[0] + Math.cos(angle) * radius,\n y: chart.plotTop + center[1] + Math.sin(angle) * radius\n };\n }\n /**\n * Prevent setting Y axis dirty.\n */\n function renderHidden() {\n this.isDirty = false;\n }\n /**\n * Override the setAxisSize method to use the arc's circumference as\n * length. This allows tickPixelInterval to apply to pixel lengths along\n * the perimeter.\n * @private\n */\n function setAxisSize() {\n const axisProto = this.constructor.prototype;\n let center, start;\n axisProto.setAxisSize.call(this);\n if (this.isRadial) {\n // Set the center array\n this.pane.updateCenter(this);\n // In case when the innerSize is set in a polar chart, the axis'\n // center cannot be a reference to pane's center\n center = this.center = this.pane.center.slice();\n // The sector is used in Axis.translate to compute the\n // translation of reversed axis points (#2570)\n if (this.isCircular) {\n this.sector = this.endAngleRad - this.startAngleRad;\n }\n else {\n // When the pane's startAngle or the axis' angle is set then\n // new x and y values for vertical axis' center must be\n // calculated\n start = this.postTranslate(this.angleRad, center[3] / 2);\n center[0] = start.x - this.chart.plotLeft;\n center[1] = start.y - this.chart.plotTop;\n }\n // Axis len is used to lay out the ticks\n this.len = this.width = this.height =\n (center[2] - center[3]) * RadialAxis_pick(this.sector, 1) / 2;\n }\n }\n /**\n * Override setAxisTranslation by setting the translation to the\n * difference in rotation. This allows the translate method to return\n * angle for any given value.\n *\n * @private\n */\n function setAxisTranslation() {\n const axisProto = this.constructor.prototype;\n // Call uber method\n axisProto.setAxisTranslation.call(this);\n // Set transA and minPixelPadding\n if (this.center) { // It's not defined the first time\n if (this.isCircular) {\n this.transA = (this.endAngleRad - this.startAngleRad) /\n ((this.max - this.min) || 1);\n }\n else {\n // The transA here is the length of the axis, so in case\n // of inner radius, the length must be decreased by it\n this.transA = ((this.center[2] - this.center[3]) / 2) /\n ((this.max - this.min) || 1);\n }\n if (this.isXAxis) {\n this.minPixelPadding = this.transA * this.minPointOffset;\n }\n else {\n // This is a workaround for regression #2593, but categories\n // still don't position correctly.\n this.minPixelPadding = 0;\n }\n }\n }\n /**\n * Merge and set options.\n */\n function setOptions(userOptions) {\n const { coll } = this;\n const { angular, inverted, polar } = this.chart;\n let defaultPolarOptions = {};\n if (angular) {\n if (!this.isXAxis) {\n defaultPolarOptions = RadialAxis_merge(defaultOptions.yAxis, RadialAxis.radialDefaultOptions.radialGauge);\n }\n }\n else if (polar) {\n defaultPolarOptions = this.horiz ?\n RadialAxis_merge(defaultOptions.xAxis, RadialAxis.radialDefaultOptions.circular) :\n RadialAxis_merge(coll === 'xAxis' ?\n defaultOptions.xAxis :\n defaultOptions.yAxis, RadialAxis.radialDefaultOptions.radial);\n }\n if (inverted && coll === 'yAxis') {\n defaultPolarOptions.stackLabels = isObject(defaultOptions.yAxis, true) ? defaultOptions.yAxis.stackLabels : {};\n defaultPolarOptions.reversedStacks = true;\n }\n const options = this.options = RadialAxis_merge(defaultPolarOptions, userOptions);\n // Make sure the plotBands array is instantiated for each Axis\n // (#2649)\n if (!options.plotBands) {\n options.plotBands = [];\n }\n RadialAxis_fireEvent(this, 'afterSetOptions');\n }\n /**\n * Wrap the getMarkPath function to return the path of the radial marker.\n */\n function wrapTickGetMarkPath(proceed, x, y, tickLength, tickWidth, horiz, renderer) {\n const axis = this.axis;\n let endPoint, ret;\n if (axis.isRadial) {\n endPoint = axis.getPosition(this.pos, axis.center[2] / 2 + tickLength);\n ret = [\n 'M',\n x,\n y,\n 'L',\n endPoint.x,\n endPoint.y\n ];\n }\n else {\n ret = proceed.call(this, x, y, tickLength, tickWidth, horiz, renderer);\n }\n return ret;\n }\n /* eslint-enable valid-jsdoc */\n})(RadialAxis || (RadialAxis = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Axis_RadialAxis = (RadialAxis);\n\n;// ./code/es-modules/Series/PolarComposition.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 { animObject: PolarComposition_animObject } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { composed: PolarComposition_composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n\nconst { addEvent: PolarComposition_addEvent, defined: PolarComposition_defined, find, isNumber: PolarComposition_isNumber, merge: PolarComposition_merge, pick: PolarComposition_pick, pushUnique: PolarComposition_pushUnique, relativeLength: PolarComposition_relativeLength, splat: PolarComposition_splat, uniqueKey: PolarComposition_uniqueKey, wrap: PolarComposition_wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction clipCircle(renderer, x, y, r, innerR) {\n const id = PolarComposition_uniqueKey(), clipPath = renderer.createElement('clipPath').attr({\n id: id\n }).add(renderer.defs), wrapper = innerR ?\n renderer.arc(x, y, r, innerR, 0, 2 * Math.PI).add(clipPath) :\n renderer.circle(x, y, r).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n return wrapper;\n}\n/**\n * Find correct align and vertical align based on an angle in polar chart\n * @private\n */\nfunction findAlignments(angle, options) {\n let align, verticalAlign;\n if (options.align === null) {\n if (angle > 20 && angle < 160) {\n align = 'left'; // Right hemisphere\n }\n else if (angle > 200 && angle < 340) {\n align = 'right'; // Left hemisphere\n }\n else {\n align = 'center'; // Top or bottom\n }\n options.align = align;\n }\n if (options.verticalAlign === null) {\n if (angle < 45 || angle > 315) {\n verticalAlign = 'bottom'; // Top part\n }\n else if (angle > 135 && angle < 225) {\n verticalAlign = 'top'; // Bottom part\n }\n else {\n verticalAlign = 'middle'; // Left or right\n }\n options.verticalAlign = verticalAlign;\n }\n return options;\n}\n/**\n * #6212 Calculate connectors for spline series in polar chart.\n * @private\n * @param {boolean} calculateNeighbours\n * Check if connectors should be calculated for neighbour points as\n * well allows short recurrence\n */\nfunction getConnectors(segment, index, calculateNeighbours, connectEnds) {\n const smoothing = 1.5, denom = smoothing + 1, addedNumber = connectEnds ? 1 : 0;\n let i, leftContX, leftContY, rightContX, rightContY, jointAngle;\n // Calculate final index of points depending on the initial index value.\n // Because of calculating neighbours, index may be outside segment\n // array.\n if (index >= 0 && index <= segment.length - 1) {\n i = index;\n }\n else if (index < 0) {\n i = segment.length - 1 + index;\n }\n else {\n i = 0;\n }\n // 1 means control points midway between points, 2 means 1/3 from\n // the point, 3 is 1/4 etc;\n const prevPointInd = ((i - 1 < 0) ? segment.length - (1 + addedNumber) : i - 1), nextPointInd = (i + 1 > segment.length - 1) ? addedNumber : i + 1, previousPoint = segment[prevPointInd], nextPoint = segment[nextPointInd], previousX = previousPoint.plotX, previousY = previousPoint.plotY, nextX = nextPoint.plotX, nextY = nextPoint.plotY, plotX = segment[i].plotX, // Actual point\n plotY = segment[i].plotY;\n leftContX = (smoothing * plotX + previousX) / denom;\n leftContY = (smoothing * plotY + previousY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Distance left control point\n const dLControlPoint = Math.sqrt(Math.pow(leftContX - plotX, 2) + Math.pow(leftContY - plotY, 2)), dRControlPoint = Math.sqrt(Math.pow(rightContX - plotX, 2) + Math.pow(rightContY - plotY, 2)), leftContAngle = Math.atan2(leftContY - plotY, leftContX - plotX), rightContAngle = Math.atan2(rightContY - plotY, rightContX - plotX);\n jointAngle = (Math.PI / 2) + ((leftContAngle + rightContAngle) / 2);\n // Ensure the right direction, jointAngle should be in the same quadrant\n // as leftContAngle\n if (Math.abs(leftContAngle - jointAngle) > Math.PI / 2) {\n jointAngle -= Math.PI;\n }\n // Find the corrected control points for a spline straight through the\n // point\n leftContX = plotX + Math.cos(jointAngle) * dLControlPoint;\n leftContY = plotY + Math.sin(jointAngle) * dLControlPoint;\n rightContX = plotX + Math.cos(Math.PI + jointAngle) * dRControlPoint;\n rightContY = plotY + Math.sin(Math.PI + jointAngle) * dRControlPoint;\n // Push current point's connectors into returned object\n const ret = {\n rightContX: rightContX,\n rightContY: rightContY,\n leftContX: leftContX,\n leftContY: leftContY,\n plotX: plotX,\n plotY: plotY\n };\n // Calculate connectors for previous and next point and push them inside\n // returned object\n if (calculateNeighbours) {\n ret.prevPointCont = getConnectors(segment, prevPointInd, false, connectEnds);\n }\n return ret;\n}\n/**\n *\n */\nfunction onChartAfterDrawChartBox() {\n (this.pane || []).forEach((pane) => {\n pane.render();\n });\n}\n/**\n * If polar has polygonal grid lines, force start and endOnTick on radial axis\n * @private\n */\nfunction onChartAfterInit(event) {\n const xAxis = event.args[0].xAxis, yAxis = event.args[0].yAxis, chart = event.args[0].chart;\n if (xAxis && yAxis) {\n if (yAxis.gridLineInterpolation === 'polygon') {\n xAxis.startOnTick = true;\n xAxis.endOnTick = true;\n }\n else if (xAxis.gridLineInterpolation === 'polygon' &&\n chart.inverted) {\n yAxis.startOnTick = true;\n yAxis.endOnTick = true;\n }\n }\n}\n/**\n *\n */\nfunction onChartCreateAxes() {\n if (!this.pane) {\n this.pane = [];\n }\n this.options.pane = PolarComposition_splat(this.options.pane || {});\n this.options.pane.forEach((paneOptions) => {\n new Pane_Pane(// eslint-disable-line no-new\n paneOptions, this);\n }, this);\n}\n/**\n * Get selection dimensions\n * @private\n */\nfunction onPointerGetSelectionBox(event) {\n const marker = event.args.marker, xAxis = this.chart.xAxis[0], yAxis = this.chart.yAxis[0], inverted = this.chart.inverted, radialAxis = inverted ? yAxis : xAxis, linearAxis = inverted ? xAxis : yAxis;\n if (this.chart.polar) {\n event.preventDefault();\n const start = (marker.attr ? marker.attr('start') : marker.start) - radialAxis.startAngleRad, r = (marker.attr ? marker.attr('r') : marker.r), end = (marker.attr ? marker.attr('end') : marker.end) - radialAxis.startAngleRad, innerR = (marker.attr ? marker.attr('innerR') : marker.innerR);\n event.result.x = start + radialAxis.pos;\n event.result.width = end - start;\n // `innerR` goes from pane's center but `toValue` computes values from\n // top\n event.result.y = linearAxis.len + linearAxis.pos - r;\n event.result.height = r - innerR;\n }\n}\n/**\n * Get attrs for Polar selection marker\n * @private\n */\nfunction onPointerGetSelectionMarkerAttrs(event) {\n const chart = this.chart;\n if (chart.polar && chart.hoverPane && chart.hoverPane.axis) {\n event.preventDefault();\n const center = chart.hoverPane.center, mouseDownX = chart.mouseDownX || 0, mouseDownY = chart.mouseDownY || 0, chartY = event.args.chartY, chartX = event.args.chartX, fullCircle = Math.PI * 2, startAngleRad = chart.hoverPane.axis.startAngleRad, endAngleRad = chart.hoverPane.axis.endAngleRad, linearAxis = chart.inverted ? chart.xAxis[0] : chart.yAxis[0], attrs = {};\n let shapeType = 'arc';\n attrs.x = center[0] + chart.plotLeft;\n attrs.y = center[1] + chart.plotTop;\n // Adjust the width of the selection marker\n if (this.zoomHor) {\n const paneRadRange = startAngleRad > 0 ?\n endAngleRad - startAngleRad :\n Math.abs(startAngleRad) + Math.abs(endAngleRad);\n let startAngle = Math.atan2(mouseDownY - chart.plotTop - center[1], mouseDownX - chart.plotLeft - center[0]) - startAngleRad, endAngle = Math.atan2(chartY - chart.plotTop - center[1], chartX - chart.plotLeft - center[0]) - startAngleRad;\n attrs.r = center[2] / 2;\n attrs.innerR = center[3] / 2;\n if (startAngle <= 0) {\n startAngle += fullCircle;\n }\n if (endAngle <= 0) {\n endAngle += fullCircle;\n }\n if (endAngle < startAngle) {\n // Swapping angles\n endAngle = [startAngle, startAngle = endAngle][0];\n }\n // If pane is not a full circle we need to let users zoom to the min\n // We do this by swapping angles after pointer crosses\n // middle angle (swapAngle) of the missing slice of the pane\n if (paneRadRange < fullCircle) {\n const swapAngle = endAngleRad + (fullCircle - paneRadRange) / 2;\n if (startAngleRad + endAngle > swapAngle) {\n endAngle = startAngle;\n startAngle = startAngleRad <= 0 ? startAngleRad : 0;\n }\n }\n const start = attrs.start =\n Math.max(startAngle + startAngleRad, startAngleRad), end = attrs.end =\n Math.min(endAngle + startAngleRad, endAngleRad);\n // Adjust the selection shape for polygon grid lines\n if (linearAxis.options.gridLineInterpolation === 'polygon') {\n const radialAxis = chart.hoverPane.axis, min = start - radialAxis.startAngleRad + radialAxis.pos, max = end - start;\n let path = linearAxis.getPlotLinePath({\n value: linearAxis.max\n }), pathStart = radialAxis.toValue(min), pathEnd = radialAxis.toValue(min + max);\n if (pathStart < radialAxis.getExtremes().min) {\n const { min, max } = radialAxis.getExtremes();\n pathStart = max - (min - pathStart);\n }\n if (pathEnd < radialAxis.getExtremes().min) {\n const { min, max } = radialAxis.getExtremes();\n pathEnd = max - (min - pathEnd);\n }\n if (pathEnd < pathStart) {\n // Swapping angles\n pathEnd = [pathStart, pathStart = pathEnd][0];\n }\n // Get trimmed path\n path = trimPath(path, pathStart, pathEnd, radialAxis);\n // Add center to the path\n path.push([\n 'L', center[0] + chart.plotLeft,\n chart.plotTop + center[1]\n ]);\n attrs.d = path;\n shapeType = 'path';\n }\n }\n // Adjust the height of the selection marker\n if (this.zoomVert) {\n const linearAxis = chart.inverted ? chart.xAxis[0] : chart.yAxis[0];\n let innerR = Math.sqrt(Math.pow(mouseDownX - chart.plotLeft - center[0], 2) +\n Math.pow(mouseDownY - chart.plotTop - center[1], 2)), r = Math.sqrt(Math.pow(chartX - chart.plotLeft - center[0], 2) +\n Math.pow(chartY - chart.plotTop - center[1], 2));\n if (r < innerR) {\n // Swapping angles\n innerR = [r, r = innerR][0];\n }\n if (r > center[2] / 2) {\n r = center[2] / 2;\n }\n if (innerR < center[3] / 2) {\n innerR = center[3] / 2;\n }\n if (!this.zoomHor) {\n attrs.start = startAngleRad;\n attrs.end = endAngleRad;\n }\n attrs.r = r;\n attrs.innerR = innerR;\n if (linearAxis.options.gridLineInterpolation === 'polygon') {\n const end = linearAxis.toValue(linearAxis.len + linearAxis.pos - innerR), start = linearAxis.toValue(linearAxis.len + linearAxis.pos - r), path = linearAxis.getPlotLinePath({\n value: start\n }).concat(linearAxis.getPlotLinePath({\n value: end,\n reverse: true\n }));\n attrs.d = path;\n shapeType = 'path';\n }\n }\n if (this.zoomHor &&\n this.zoomVert &&\n linearAxis.options.gridLineInterpolation === 'polygon') {\n const radialAxis = chart.hoverPane.axis, start = attrs.start || 0, end = attrs.end || 0, min = start - radialAxis.startAngleRad + radialAxis.pos, max = end - start, pathStart = radialAxis.toValue(min), pathEnd = radialAxis.toValue(min + max);\n // Trim path\n if (attrs.d instanceof Array) {\n let innerPath = attrs.d.slice(0, attrs.d.length / 2), outerPath = attrs.d.slice(attrs.d.length / 2, attrs.d.length);\n outerPath = [...outerPath].reverse();\n const radialAxis = chart.hoverPane.axis;\n innerPath = trimPath(innerPath, pathStart, pathEnd, radialAxis);\n outerPath = trimPath(outerPath, pathStart, pathEnd, radialAxis);\n if (outerPath) {\n (outerPath[0][0]) = 'L';\n }\n outerPath = [...outerPath].reverse();\n attrs.d = innerPath.concat(outerPath);\n shapeType = 'path';\n }\n }\n event.attrs = attrs;\n event.shapeType = shapeType;\n }\n}\n/**\n * @private\n */\nfunction onSeriesAfterInit() {\n const chart = this.chart;\n if (chart.polar) {\n this.polar = new PolarAdditions(this);\n // Add flags that identifies radial inverted series\n if (chart.inverted) {\n this.isRadialSeries = true;\n if (this.is('column')) {\n this.isRadialBar = true;\n }\n }\n }\n}\n/**\n * Extend translate. The plotX and plotY values are computed as if the polar\n * chart were a cartesian plane, where plotX denotes the angle in radians\n * and (yAxis.len - plotY) is the pixel distance from center.\n * @private\n */\nfunction onSeriesAfterTranslate() {\n if (this.chart.polar && this.xAxis) {\n const series = this, { xAxis, yAxis } = series, chart = series.chart;\n // Prepare k-d-tree handling. It searches by angle (clientX) in\n // case of shared tooltip, and by two dimensional distance in case\n // of non-shared.\n series.kdByAngle = chart.tooltip && chart.tooltip.shared;\n if (series.kdByAngle || chart.inverted) {\n series.searchPoint = searchPointByAngleOrInverted;\n }\n else {\n series.options.findNearestPointBy = 'xy';\n }\n const points = series.points;\n let i = points.length;\n while (i--) {\n // Translate plotX, plotY from angle and radius to true plot\n // coordinates\n if (!series.is('column') && !series.is('columnrange')) {\n series.polar.toXY(points[i]);\n }\n // Treat points below Y axis min as null (#10082)\n if (!chart.hasParallelCoordinates &&\n !series.yAxis.reversed) {\n if (PolarComposition_pick(points[i].y, Number.MIN_VALUE) < yAxis.min ||\n points[i].x < xAxis.min ||\n points[i].x > xAxis.max) {\n // Destroy markers\n points[i].isNull = true;\n // Destroy column's graphic\n points[i].plotY = NaN;\n }\n else {\n // Restore isNull flag\n points[i].isNull =\n points[i].isValid && !points[i].isValid();\n }\n }\n }\n // Perform clip after render\n if (!this.hasClipCircleSetter) {\n this.hasClipCircleSetter = !!series.eventsToUnbind.push(PolarComposition_addEvent(series, 'afterRender', function () {\n let circ;\n if (chart.polar && this.options.clip !== false) {\n // For clipping purposes there is a need for\n // coordinates from the absolute center\n circ = this.yAxis.pane.center;\n if (!this.clipCircle) {\n this.clipCircle = clipCircle(chart.renderer, circ[0], circ[1], circ[2] / 2, circ[3] / 2);\n }\n else {\n this.clipCircle.animate({\n x: circ[0],\n y: circ[1],\n r: circ[2] / 2,\n innerR: circ[3] / 2\n });\n }\n this.group.clip(this.clipCircle);\n this.setClip = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n }\n }));\n }\n }\n}\n/**\n * Search a k-d tree by the point angle (used for shared tooltips in polar) or\n * the inverted point.\n * charts\n * @private\n */\nfunction searchPointByAngleOrInverted(e) {\n const series = this, chart = series.chart, xAxis = series.xAxis, yAxis = series.yAxis, center = xAxis.pane && xAxis.pane.center, plotX = e.chartX - (center && center[0] || 0) - chart.plotLeft, plotY = e.chartY - (center && center[1] || 0) - chart.plotTop;\n const searchKDTreePoint = chart.inverted ? {\n clientX: e.chartX - yAxis.pos,\n plotY: e.chartY - xAxis.pos\n } : {\n clientX: 180 + (Math.atan2(plotX, plotY) * (-180 / Math.PI))\n };\n return series.searchKDTree(searchKDTreePoint);\n}\n/**\n * Trim polygonal path\n * @private\n */\nfunction trimPath(path, start, end, radialAxis) {\n const tickInterval = radialAxis.tickInterval, ticks = radialAxis.tickPositions;\n let lastTick = find(ticks, (tick) => tick >= end), firstTick = find([...ticks].reverse(), (tick) => tick <= start);\n if (!PolarComposition_defined(lastTick)) {\n lastTick = ticks[ticks.length - 1];\n }\n if (!PolarComposition_defined(firstTick)) {\n firstTick = ticks[0];\n lastTick += tickInterval;\n path[0][0] = 'L';\n // To do: figure out why -3 or -2\n path.unshift(path[path.length - 3]);\n }\n path = path.slice(ticks.indexOf(firstTick), ticks.indexOf(lastTick) + 1);\n path[0][0] = 'M';\n return path;\n}\n/**\n * Extend chart.get to also search in panes. Used internally in\n * responsiveness and chart.update.\n * @private\n */\nfunction wrapChartGet(proceed, id) {\n return find(this.pane || [], (pane) => (\n // @todo remove id or define id type:\n pane.options.id === id)) || proceed.call(this, id);\n}\n/**\n * Align column data labels outside the columns. #1199.\n * @private\n */\nfunction wrapColumnSeriesAlignDataLabel(proceed, point, dataLabel, options, alignTo, isNew) {\n const chart = this.chart, inside = PolarComposition_pick(options.inside, !!this.options.stacking);\n let angle, shapeArgs, labelPos;\n if (chart.polar) {\n angle = point.rectPlotX / Math.PI * 180;\n if (!chart.inverted) {\n // Align nicely outside the perimeter of the columns\n options = findAlignments(angle, options);\n }\n else { // Required corrections for data labels of inverted bars\n // The plotX and plotY are correctly set therefore they\n // don't need to be swapped (inverted argument is false)\n this.forceDL = chart.isInsidePlot(point.plotX, point.plotY);\n // Checks if labels should be positioned inside\n if (inside && point.shapeArgs) {\n shapeArgs = point.shapeArgs;\n // Calculates pixel positions for a data label to be\n // inside\n labelPos =\n this.yAxis.postTranslate(\n // Angle\n ((shapeArgs.start || 0) + (shapeArgs.end || 0)) / 2 -\n this\n .xAxis.startAngleRad, \n // Radius\n point.barX +\n point.pointWidth / 2);\n alignTo = PolarComposition_merge(alignTo, {\n x: labelPos.x - chart.plotLeft,\n y: labelPos.y - chart.plotTop\n });\n }\n else if (point.tooltipPos) {\n alignTo = PolarComposition_merge(alignTo, {\n x: point.tooltipPos[0],\n y: point.tooltipPos[1]\n });\n }\n options.align = PolarComposition_pick(options.align, 'center');\n options.verticalAlign =\n PolarComposition_pick(options.verticalAlign, 'middle');\n }\n highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default().prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // Hide label of a point (only inverted) that is outside the\n // visible y range\n if (this.isRadialBar && point.shapeArgs &&\n point.shapeArgs.start === point.shapeArgs.end) {\n dataLabel.hide();\n }\n else {\n dataLabel.show();\n }\n }\n else {\n proceed.call(this, point, dataLabel, options, alignTo, isNew);\n }\n}\n/**\n * Extend the column prototype's translate method\n * @private\n */\nfunction onAfterColumnTranslate() {\n const series = this, options = series.options, stacking = options.stacking, chart = series.chart, xAxis = series.xAxis, yAxis = series.yAxis, reversed = yAxis.reversed, center = yAxis.center, startAngleRad = xAxis.startAngleRad, endAngleRad = xAxis.endAngleRad, visibleRange = endAngleRad - startAngleRad;\n let threshold = options.threshold, thresholdAngleRad = 0, points, point, i, yMin, yMax, start = 0, end = 0, tooltipPos, pointX, pointY, stackValues, stack, barX, innerR, r;\n // Postprocess plot coordinates\n if (xAxis.isRadial) {\n points = series.points;\n i = points.length;\n yMin = yAxis.translate(yAxis.min);\n yMax = yAxis.translate(yAxis.max);\n threshold = options.threshold || 0;\n if (chart.inverted) {\n // Finding a correct threshold\n if (PolarComposition_isNumber(threshold)) {\n thresholdAngleRad = yAxis.translate(threshold);\n // Checks if threshold is outside the visible range\n if (PolarComposition_defined(thresholdAngleRad)) {\n if (thresholdAngleRad < 0) {\n thresholdAngleRad = 0;\n }\n else if (thresholdAngleRad > visibleRange) {\n thresholdAngleRad = visibleRange;\n }\n // Adding start angle offset\n series.translatedThreshold =\n thresholdAngleRad + startAngleRad;\n }\n }\n }\n while (i--) {\n point = points[i];\n barX = point.barX;\n pointX = point.x;\n pointY = point.y;\n point.shapeType = 'arc';\n if (chart.inverted) {\n point.plotY = yAxis.translate(pointY);\n if (stacking && yAxis.stacking) {\n stack = yAxis.stacking.stacks[(pointY < 0 ? '-' : '') +\n series.stackKey];\n if (series.visible && stack && stack[pointX]) {\n if (!point.isNull) {\n stackValues = stack[pointX].points[series.getStackIndicator(void 0, pointX, series.index).key];\n // Translating to radial values\n start = yAxis.translate(stackValues[0]);\n end = yAxis.translate(stackValues[1]);\n // If starting point is beyond the\n // range, set it to 0\n if (PolarComposition_defined(start)) {\n start = highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clamp(start, 0, visibleRange);\n }\n }\n }\n }\n else {\n // Initial start and end angles for radial bar\n start = thresholdAngleRad;\n end = point.plotY;\n }\n if (start > end) {\n // Swapping start and end\n end = [start, start = end][0];\n }\n // Prevent from rendering point outside the\n // acceptable circular range\n if (!reversed) {\n if (start < yMin) {\n start = yMin;\n }\n else if (end > yMax) {\n end = yMax;\n }\n else if (end < yMin || start > yMax) {\n start = end = 0;\n }\n }\n else {\n if (end > yMin) {\n end = yMin;\n }\n else if (start < yMax) {\n start = yMax;\n }\n else if (start > yMin || end < yMax) {\n start = end = visibleRange;\n }\n }\n if (yAxis.min > yAxis.max) {\n start = end = reversed ? visibleRange : 0;\n }\n start += startAngleRad;\n end += startAngleRad;\n if (center) {\n point.barX = barX += center[3] / 2;\n }\n // In case when radius, inner radius or both are negative, a\n // point is rendered but partially or as a center point\n innerR = Math.max(barX, 0);\n r = Math.max(barX + point.pointWidth, 0);\n // Handle border radius\n const brOption = options.borderRadius, brValue = typeof brOption === 'object' ?\n brOption.radius : brOption, borderRadius = PolarComposition_relativeLength(brValue || 0, r - innerR);\n point.shapeArgs = {\n x: center[0],\n y: center[1],\n r,\n innerR,\n start,\n end,\n borderRadius\n };\n // Fade out the points if not inside the polar \"plot area\"\n point.opacity = start === end ? 0 : void 0;\n // A correct value for stacked or not fully visible\n // point\n point.plotY = (PolarComposition_defined(series.translatedThreshold) &&\n (start < series.translatedThreshold ? start : end)) -\n startAngleRad;\n // Non-inverted polar columns\n }\n else {\n start = barX + startAngleRad;\n point.shapeArgs = series.polar.arc(point.yBottom, point.plotY, start, start + point.pointWidth);\n // Disallow border radius on polar columns for now. It would\n // take some refactoring to work with the `scope` and the\n // `where` options. Those options would require that only\n // individual corners be rounded, in practice individual calls\n // to applyBorderRadius from the extended `arc` function. That\n // would be a viable solution, though it would not be perfect\n // until we implemented rounding that included the lower points\n // in the stack, like we have for cartesian column.\n point.shapeArgs.borderRadius = 0;\n }\n // Provided a correct coordinates for the tooltip\n series.polar.toXY(point);\n if (chart.inverted) {\n tooltipPos = yAxis.postTranslate(point.rectPlotY, barX + point.pointWidth / 2);\n point.tooltipPos = [\n tooltipPos.x - chart.plotLeft,\n tooltipPos.y - chart.plotTop\n ];\n }\n else {\n point.tooltipPos = [point.plotX, point.plotY];\n }\n if (center) {\n point.ttBelow = point.plotY > center[1];\n }\n }\n }\n}\n/**\n * Extend getSegmentPath to allow connecting ends across 0 to provide a\n * closed circle in line-like series.\n * @private\n */\nfunction wrapLineSeriesGetGraphPath(proceed, points) {\n const series = this;\n let firstValid, popLastPoint;\n // Connect the path\n if (this.chart.polar) {\n points = points || this.points;\n // Append first valid point in order to connect the ends\n for (let i = 0; i < points.length; i++) {\n if (!points[i].isNull) {\n firstValid = i;\n break;\n }\n }\n /**\n * Polar charts only. Whether to connect the ends of a line series\n * plot across the extremes.\n *\n * @sample {highcharts} highcharts/plotoptions/line-connectends-false/\n * Do not connect\n *\n * @type {boolean}\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.series.connectEnds\n */\n if (this.options.connectEnds !== false &&\n typeof firstValid !== 'undefined') {\n this.connectEnds = true; // Re-used in splines\n points.splice(points.length, 0, points[firstValid]);\n popLastPoint = true;\n }\n // For area charts, pseudo points are added to the graph, now we\n // need to translate these\n points.forEach((point) => {\n if (typeof point.polarPlotY === 'undefined') {\n series.polar.toXY(point);\n }\n });\n }\n // Run uber method\n const ret = proceed.apply(this, [].slice.call(arguments, 1));\n // #6212 points.splice method is adding points to an array. In case of\n // areaspline getGraphPath method is used two times and in both times\n // points are added to an array. That is why points.pop is used, to get\n // unmodified points.\n if (popLastPoint) {\n points.pop();\n }\n return ret;\n}\n/**\n * Extend getCoordinates to prepare for polar axis values\n * @private\n */\nfunction wrapPointerGetCoordinates(proceed, e) {\n const chart = this.chart;\n let ret = {\n xAxis: [],\n yAxis: []\n };\n if (chart.polar) {\n chart.axes.forEach((axis) => {\n // Skip colorAxis\n if (axis.coll === 'colorAxis') {\n return;\n }\n const isXAxis = axis.isXAxis, center = axis.center, x = e.chartX - center[0] - chart.plotLeft, y = e.chartY - center[1] - chart.plotTop;\n ret[isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.translate(isXAxis ?\n Math.PI - Math.atan2(x, y) : // Angle\n // distance from center\n Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)), true)\n });\n });\n }\n else {\n ret = proceed.call(this, e);\n }\n return ret;\n}\n/**\n * Prevent zooming on mobile devices\n * @private\n */\nfunction wrapPointerPinch(proceed, e) {\n if (this.chart.polar) {\n return;\n }\n proceed.call(this, e);\n}\n/**\n * Define the animate method for regular series\n * @private\n */\nfunction wrapSeriesAnimate(proceed, init) {\n const series = this, chart = this.chart, group = this.group, markerGroup = this.markerGroup, center = this.xAxis && this.xAxis.center, plotLeft = chart.plotLeft, plotTop = chart.plotTop;\n let animation = this.options.animation, attribs, paneInnerR, graphic, shapeArgs, r, innerR;\n // Specific animation for polar charts\n if (chart.polar) {\n if (series.isRadialBar) {\n if (!init) {\n // Run the pie animation for radial bars\n series.startAngleRad = PolarComposition_pick(series.translatedThreshold, series.xAxis.startAngleRad);\n highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().seriesTypes.pie.prototype.animate.call(series, init);\n }\n }\n else {\n animation = PolarComposition_animObject(animation);\n // A different animation needed for column like series\n if (series.is('column')) {\n if (!init) {\n paneInnerR = center[3] / 2;\n series.points.forEach((point) => {\n graphic = point.graphic;\n shapeArgs = point.shapeArgs;\n r = shapeArgs && shapeArgs.r;\n innerR = shapeArgs && shapeArgs.innerR;\n if (graphic && shapeArgs) {\n // Start values\n graphic.attr({\n r: paneInnerR,\n innerR: paneInnerR\n });\n // Animate\n graphic.animate({\n r: r,\n innerR: innerR\n }, series.options.animation);\n }\n });\n }\n }\n else {\n // Initialize the animation\n if (init) {\n // Scale down the group and place it in the center\n attribs = {\n translateX: center[0] + plotLeft,\n translateY: center[1] + plotTop,\n scaleX: 0.001,\n scaleY: 0.001\n };\n group.attr(attribs);\n if (markerGroup) {\n markerGroup.attr(attribs);\n }\n // Run the animation\n }\n else {\n attribs = {\n translateX: plotLeft,\n translateY: plotTop,\n scaleX: 1,\n scaleY: 1\n };\n group.animate(attribs, animation);\n if (markerGroup) {\n markerGroup.animate(attribs, animation);\n }\n }\n }\n }\n // For non-polar charts, revert to the basic animation\n }\n else {\n proceed.call(this, init);\n }\n}\n/**\n * Overridden method for calculating a spline from one point to the next\n * @private\n */\nfunction wrapSplineSeriesGetPointSpline(proceed, segment, point, i) {\n let ret, connectors;\n if (this.chart.polar) {\n // `moveTo` or `lineTo`\n if (!i) {\n ret = ['M', point.plotX, point.plotY];\n }\n else { // Curve from last point to this\n connectors = getConnectors(segment, i, true, this.connectEnds);\n const rightContX = connectors.prevPointCont &&\n connectors.prevPointCont.rightContX;\n const rightContY = connectors.prevPointCont &&\n connectors.prevPointCont.rightContY;\n ret = [\n 'C',\n PolarComposition_isNumber(rightContX) ? rightContX : connectors.plotX,\n PolarComposition_isNumber(rightContY) ? rightContY : connectors.plotY,\n PolarComposition_isNumber(connectors.leftContX) ?\n connectors.leftContX :\n connectors.plotX,\n PolarComposition_isNumber(connectors.leftContY) ?\n connectors.leftContY :\n connectors.plotY,\n connectors.plotX,\n connectors.plotY\n ];\n }\n }\n else {\n ret = proceed.call(this, segment, point, i);\n }\n return ret;\n}\n/**\n * Extend the point pos method to calculate point positions for the polar chart.\n * @private\n */\nfunction wrapPointPos(proceed, chartCoordinates, plotY = this.plotY) {\n if (!this.destroyed) {\n const { plotX, series } = this, { chart } = series;\n if (chart.polar &&\n PolarComposition_isNumber(plotX) &&\n PolarComposition_isNumber(plotY)) {\n return [\n plotX + (chartCoordinates ? chart.plotLeft : 0),\n plotY + (chartCoordinates ? chart.plotTop : 0)\n ];\n }\n return proceed.call(this, chartCoordinates, plotY);\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * Extensions for polar charts. Additionally, much of the geometry required\n * for polar charts is gathered in RadialAxes.js.\n * @private\n */\nclass PolarAdditions {\n /* *\n *\n * Static Functions\n *\n * */\n static compose(AxisClass, ChartClass, PointerClass, SeriesClass, TickClass, PointClass, AreaSplineRangeSeriesClass, ColumnSeriesClass, LineSeriesClass, SplineSeriesClass) {\n Pane_Pane.compose(ChartClass, PointerClass);\n Axis_RadialAxis.compose(AxisClass, TickClass);\n if (PolarComposition_pushUnique(PolarComposition_composed, 'Polar')) {\n const chartProto = ChartClass.prototype, pointProto = PointClass.prototype, pointerProto = PointerClass.prototype, seriesProto = SeriesClass.prototype;\n PolarComposition_addEvent(ChartClass, 'afterDrawChartBox', onChartAfterDrawChartBox);\n PolarComposition_addEvent(ChartClass, 'createAxes', onChartCreateAxes);\n PolarComposition_addEvent(ChartClass, 'init', onChartAfterInit);\n PolarComposition_wrap(chartProto, 'get', wrapChartGet);\n PolarComposition_wrap(pointerProto, 'getCoordinates', wrapPointerGetCoordinates);\n PolarComposition_wrap(pointerProto, 'pinch', wrapPointerPinch);\n PolarComposition_addEvent(PointerClass, 'getSelectionMarkerAttrs', onPointerGetSelectionMarkerAttrs);\n PolarComposition_addEvent(PointerClass, 'getSelectionBox', onPointerGetSelectionBox);\n PolarComposition_addEvent(SeriesClass, 'afterInit', onSeriesAfterInit);\n PolarComposition_addEvent(SeriesClass, 'afterTranslate', onSeriesAfterTranslate, { order: 2 } // Run after translation of ||-coords\n );\n PolarComposition_addEvent(SeriesClass, 'afterColumnTranslate', onAfterColumnTranslate, { order: 4 });\n PolarComposition_wrap(seriesProto, 'animate', wrapSeriesAnimate);\n PolarComposition_wrap(pointProto, 'pos', wrapPointPos);\n if (ColumnSeriesClass) {\n const columnProto = ColumnSeriesClass.prototype;\n PolarComposition_wrap(columnProto, 'alignDataLabel', wrapColumnSeriesAlignDataLabel);\n PolarComposition_wrap(columnProto, 'animate', wrapSeriesAnimate);\n }\n if (LineSeriesClass) {\n const lineProto = LineSeriesClass.prototype;\n PolarComposition_wrap(lineProto, 'getGraphPath', wrapLineSeriesGetGraphPath);\n }\n if (SplineSeriesClass) {\n const splineProto = SplineSeriesClass.prototype;\n PolarComposition_wrap(splineProto, 'getPointSpline', wrapSplineSeriesGetPointSpline);\n if (AreaSplineRangeSeriesClass) {\n const areaSplineRangeProto = AreaSplineRangeSeriesClass.prototype;\n // #6430 Areasplinerange series use unwrapped getPointSpline\n // method, so we need to set this method again.\n areaSplineRangeProto.getPointSpline =\n splineProto.getPointSpline;\n }\n }\n }\n }\n /* *\n *\n * Constructor\n *\n * */\n constructor(series) {\n this.series = series;\n }\n /* *\n *\n * Functions\n *\n * */\n arc(low, high, start, end) {\n const series = this.series, center = series.xAxis.center, len = series.yAxis.len, paneInnerR = center[3] / 2;\n let r = len - high + paneInnerR, innerR = len - PolarComposition_pick(low, len) + paneInnerR;\n // Prevent columns from shooting through the pane's center\n if (series.yAxis.reversed) {\n if (r < 0) {\n r = paneInnerR;\n }\n if (innerR < 0) {\n innerR = paneInnerR;\n }\n }\n // Return a new shapeArgs\n return {\n x: center[0],\n y: center[1],\n r: r,\n innerR: innerR,\n start: start,\n end: end\n };\n }\n /**\n * Translate a point's plotX and plotY from the internal angle and radius\n * measures to true plotX, plotY coordinates\n * @private\n */\n toXY(point) {\n const series = this.series, chart = series.chart, xAxis = series.xAxis, yAxis = series.yAxis, plotX = point.plotX, inverted = chart.inverted, pointY = point.y;\n let plotY = point.plotY, radius = inverted ? plotX : yAxis.len - plotY, clientX;\n // Corrected y position of inverted series other than column\n if (inverted && series && !series.isRadialBar) {\n point.plotY = plotY =\n PolarComposition_isNumber(pointY) ? yAxis.translate(pointY) : 0;\n }\n // Save rectangular plotX, plotY for later computation\n point.rectPlotX = plotX;\n point.rectPlotY = plotY;\n if (yAxis.center) {\n radius += yAxis.center[3] / 2;\n }\n // Find the polar plotX and plotY. Avoid setting plotX and plotY to NaN\n // when plotY is undefined (#15438)\n if (PolarComposition_isNumber(plotY)) {\n const xy = inverted ? yAxis.postTranslate(plotY, radius) :\n xAxis.postTranslate(plotX, radius);\n point.plotX = point.polarPlotX = xy.x - chart.plotLeft;\n point.plotY = point.polarPlotY = xy.y - chart.plotTop;\n }\n // If shared tooltip, record the angle in degrees in order to align X\n // points. Otherwise, use a standard k-d tree to get the nearest point\n // in two dimensions.\n if (series.kdByAngle) {\n clientX = ((plotX / Math.PI * 180) + xAxis.pane.options.startAngle) % 360;\n if (clientX < 0) { // #2665\n clientX += 360;\n }\n point.clientX = clientX;\n }\n else {\n point.clientX = point.plotX;\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const PolarComposition = (PolarAdditions);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"StackItem\"],\"commonjs\":[\"highcharts\",\"StackItem\"],\"commonjs2\":[\"highcharts\",\"StackItem\"],\"root\":[\"Highcharts\",\"StackItem\"]}\nvar highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_ = __webpack_require__(184);\nvar highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default = /*#__PURE__*/__webpack_require__.n(highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_);\n;// ./code/es-modules/Core/Axis/WaterfallAxis.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 { composed: WaterfallAxis_composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { addEvent: WaterfallAxis_addEvent, objectEach: WaterfallAxis_objectEach, pushUnique: WaterfallAxis_pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Namespace\n *\n * */\nvar WaterfallAxis;\n(function (WaterfallAxis) {\n /* *\n *\n * Interfaces\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(AxisClass, ChartClass) {\n if (WaterfallAxis_pushUnique(WaterfallAxis_composed, 'Axis.Waterfall')) {\n WaterfallAxis_addEvent(AxisClass, 'init', onAxisInit);\n WaterfallAxis_addEvent(AxisClass, 'afterBuildStacks', onAxisAfterBuildStacks);\n WaterfallAxis_addEvent(AxisClass, 'afterRender', onAxisAfterRender);\n WaterfallAxis_addEvent(ChartClass, 'beforeRedraw', onChartBeforeRedraw);\n }\n }\n WaterfallAxis.compose = compose;\n /**\n * @private\n */\n function onAxisAfterBuildStacks() {\n const axis = this, stacks = axis.waterfall.stacks;\n if (stacks) {\n stacks.changed = false;\n delete stacks.alreadyChanged;\n }\n }\n /**\n * @private\n */\n function onAxisAfterRender() {\n const axis = this, stackLabelOptions = axis.options.stackLabels;\n if (stackLabelOptions && stackLabelOptions.enabled &&\n axis.waterfall.stacks) {\n axis.waterfall.renderStackTotals();\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n const axis = this;\n if (!axis.waterfall) {\n axis.waterfall = new Composition(axis);\n }\n }\n /**\n * @private\n */\n function onChartBeforeRedraw() {\n const axes = this.axes, series = this.series;\n for (const serie of series) {\n if (serie.options.stacking) {\n for (const axis of axes) {\n if (!axis.isXAxis) {\n axis.waterfall.stacks.changed = true;\n }\n }\n break;\n }\n }\n }\n /* *\n *\n * Classes\n *\n * */\n class Composition {\n /* *\n *\n * Constructors\n *\n * */\n constructor(axis) {\n this.axis = axis;\n this.stacks = {\n changed: false\n };\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calls StackItem.prototype.render function that creates and renders\n * stack total label for each waterfall stack item.\n *\n * @private\n * @function Highcharts.Axis#renderWaterfallStackTotals\n */\n renderStackTotals() {\n const yAxis = this.axis, waterfallStacks = yAxis.waterfall.stacks, stackTotalGroup = (yAxis.stacking && yAxis.stacking.stackTotalGroup), dummyStackItem = new (highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default())(yAxis, yAxis.options.stackLabels || {}, false, 0, void 0);\n this.dummyStackItem = dummyStackItem;\n // Render each waterfall stack total\n if (stackTotalGroup) {\n WaterfallAxis_objectEach(waterfallStacks, (type) => {\n WaterfallAxis_objectEach(type, (stackItem, key) => {\n dummyStackItem.total = stackItem.stackTotal;\n dummyStackItem.x = +key;\n if (stackItem.label) {\n dummyStackItem.label = stackItem.label;\n }\n highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default().prototype.render.call(dummyStackItem, stackTotalGroup);\n stackItem.label = dummyStackItem.label;\n delete dummyStackItem.label;\n });\n });\n }\n dummyStackItem.total = null;\n }\n }\n WaterfallAxis.Composition = Composition;\n})(WaterfallAxis || (WaterfallAxis = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Axis_WaterfallAxis = (WaterfallAxis);\n\n;// ./code/es-modules/Series/Waterfall/WaterfallPoint.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\nconst { isNumber: WaterfallPoint_isNumber } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Class\n *\n * */\nclass WaterfallPoint extends (highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default()).prototype.pointClass {\n /* *\n *\n * Functions\n *\n * */\n getClassName() {\n let className = highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.getClassName.call(this);\n if (this.isSum) {\n className += ' highcharts-sum';\n }\n else if (this.isIntermediateSum) {\n className += ' highcharts-intermediate-sum';\n }\n return className;\n }\n // Pass the null test in ColumnSeries.translate.\n isValid() {\n return (WaterfallPoint_isNumber(this.y) ||\n this.isSum ||\n Boolean(this.isIntermediateSum));\n }\n}\n/* *\n *\n * Export\n *\n * */\n/* harmony default export */ const Waterfall_WaterfallPoint = (WaterfallPoint);\n\n;// ./code/es-modules/Series/Waterfall/WaterfallSeriesDefaults.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 * API Options\n *\n * */\n/**\n * A waterfall chart displays sequentially introduced positive or negative\n * values in cumulative columns.\n *\n * @sample highcharts/demo/waterfall/\n * Waterfall chart\n * @sample highcharts/plotoptions/waterfall-inverted/\n * Horizontal (inverted) waterfall\n * @sample highcharts/plotoptions/waterfall-stacked/\n * Stacked waterfall chart\n *\n * @extends plotOptions.column\n * @excluding boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.waterfall\n */\nconst WaterfallSeriesDefaults = {\n /**\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.waterfall.color\n */\n /**\n * The color used specifically for positive point columns. When not\n * specified, the general series color is used.\n *\n * In styled mode, the waterfall colors can be set with the\n * `.highcharts-point-negative`, `.highcharts-sum` and\n * `.highcharts-intermediate-sum` classes.\n *\n * @sample {highcharts} highcharts/demo/waterfall/\n * Waterfall\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts\n * @apioption plotOptions.waterfall.upColor\n */\n dataLabels: {\n inside: true\n },\n /**\n * The width of the line connecting waterfall columns.\n *\n * @product highcharts\n */\n lineWidth: 1,\n /**\n * The color of the line that connects columns in a waterfall series.\n *\n * In styled mode, the stroke can be set with the `.highcharts-graph`\n * class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n */\n lineColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * A name for the dash style to use for the line connecting the columns\n * of the waterfall series. Possible values: Dash, DashDot, Dot,\n * LongDash, LongDashDot, LongDashDotDot, ShortDash, ShortDashDot,\n * ShortDashDotDot, ShortDot, Solid\n *\n * In styled mode, the stroke dash-array can be set with the\n * `.highcharts-graph` class.\n *\n * @type {Highcharts.DashStyleValue}\n * @since 3.0\n * @product highcharts\n */\n dashStyle: 'Dot',\n /**\n * The color of the border of each waterfall column.\n *\n * In styled mode, the border stroke can be set with the\n * `.highcharts-point` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n */\n borderColor: \"#333333\" /* Palette.neutralColor80 */,\n states: {\n hover: {\n lineWidthPlus: 0 // #3126\n }\n }\n};\n/**\n * A `waterfall` series. If the [type](#series.waterfall.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.waterfall\n * @excluding dataParser, dataURL, boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.waterfall\n */\n/**\n * An array of data points for the series. For the `waterfall` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 7],\n * [1, 8],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.waterfall.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 8,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 8,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts\n * @apioption series.waterfall.data\n */\n/**\n * When this property is true, the points acts as a summary column for\n * the values added or subtracted since the last intermediate sum,\n * or since the start of the series. The `y` value is ignored.\n *\n * @sample {highcharts} highcharts/demo/waterfall/\n * Waterfall\n *\n * @type {boolean}\n * @default false\n * @product highcharts\n * @apioption series.waterfall.data.isIntermediateSum\n */\n/**\n * When this property is true, the point display the total sum across\n * the entire series. The `y` value is ignored.\n *\n * @sample {highcharts} highcharts/demo/waterfall/\n * Waterfall\n *\n * @type {boolean}\n * @default false\n * @product highcharts\n * @apioption series.waterfall.data.isSum\n */\n''; // Adds doclets above to transpiled file\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Waterfall_WaterfallSeriesDefaults = (WaterfallSeriesDefaults);\n\n;// ./code/es-modules/Series/Waterfall/WaterfallSeries.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 { column: WaterfallSeries_ColumnSeries, line: WaterfallSeries_LineSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { addEvent: WaterfallSeries_addEvent, arrayMax: WaterfallSeries_arrayMax, arrayMin: WaterfallSeries_arrayMin, correctFloat: WaterfallSeries_correctFloat, crisp: WaterfallSeries_crisp, extend: WaterfallSeries_extend, isNumber: WaterfallSeries_isNumber, merge: WaterfallSeries_merge, objectEach: WaterfallSeries_objectEach, pick: WaterfallSeries_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n/* *\n *\n * Functions\n *\n * */\n/**\n * Returns true if the key is a direct property of the object.\n * @private\n * @param {*} obj\n * Object with property to test\n * @param {string} key\n * Property key to test\n * @return {boolean}\n * Whether it is a direct property\n */\nfunction ownProp(obj, key) {\n return Object.hasOwnProperty.call(obj, key);\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * Waterfall series type.\n *\n * @private\n */\nclass WaterfallSeries extends WaterfallSeries_ColumnSeries {\n /* *\n *\n * Functions\n *\n * */\n // After generating points, set y-values for all sums.\n generatePoints() {\n // Parent call:\n WaterfallSeries_ColumnSeries.prototype.generatePoints.apply(this);\n const processedYData = this.getColumn('y', true);\n for (let i = 0, len = this.points.length; i < len; i++) {\n const point = this.points[i], y = processedYData[i];\n // Override point value for sums. #3710 Update point does not\n // propagate to sum\n if (WaterfallSeries_isNumber(y) && (point.isIntermediateSum || point.isSum)) {\n point.y = WaterfallSeries_correctFloat(y);\n }\n }\n }\n // Call default processData then override yData to reflect waterfall's\n // extremes on yAxis\n processData(force) {\n const series = this, options = series.options, yData = series.getColumn('y'), \n // #3710 Update point does not propagate to sum\n points = options.data, dataLength = yData.length, threshold = options.threshold || 0;\n let point, subSum, sum, dataMin, dataMax, y;\n sum = subSum = dataMin = dataMax = 0;\n for (let i = 0; i < dataLength; i++) {\n y = yData[i];\n point = points?.[i] || {};\n if (y === 'sum' || point.isSum) {\n yData[i] = WaterfallSeries_correctFloat(sum);\n }\n else if (y === 'intermediateSum' ||\n point.isIntermediateSum) {\n yData[i] = WaterfallSeries_correctFloat(subSum);\n subSum = 0;\n }\n else {\n sum += y;\n subSum += y;\n }\n dataMin = Math.min(sum, dataMin);\n dataMax = Math.max(sum, dataMax);\n }\n super.processData.call(this, force);\n // Record extremes only if stacking was not set:\n if (!options.stacking) {\n series.dataMin = dataMin + threshold;\n series.dataMax = dataMax;\n }\n return;\n }\n // Return y value or string if point is sum\n toYData(pt) {\n if (pt.isSum) {\n return 'sum';\n }\n if (pt.isIntermediateSum) {\n return 'intermediateSum';\n }\n return pt.y;\n }\n // Postprocess mapping between options and SVG attributes\n pointAttribs(point, state) {\n const upColor = this.options.upColor;\n // Set or reset up color (#3710, update to negative)\n if (upColor && !point.options.color && WaterfallSeries_isNumber(point.y)) {\n point.color = point.y > 0 ? upColor : void 0;\n }\n const attr = WaterfallSeries_ColumnSeries.prototype.pointAttribs.call(this, point, state);\n // The dashStyle option in waterfall applies to the graph, not\n // the points\n delete attr.dashstyle;\n return attr;\n }\n // Return an empty path initially, because we need to know the stroke-width\n // in order to set the final path.\n getGraphPath() {\n return [['M', 0, 0]];\n }\n // Draw columns' connector lines\n getCrispPath() {\n const // Skip points where Y is not a number (#18636)\n data = this.data.filter((d) => WaterfallSeries_isNumber(d.y)), yAxis = this.yAxis, length = data.length, graphLineWidth = this.graph?.strokeWidth() || 0, reversedXAxis = this.xAxis.reversed, reversedYAxis = this.yAxis.reversed, stacking = this.options.stacking, path = [];\n for (let i = 1; i < length; i++) {\n if (!( // Skip lines that would pass over the null point (#18636)\n this.options.connectNulls ||\n WaterfallSeries_isNumber(this.data[data[i].index - 1].y))) {\n continue;\n }\n const box = data[i].box, prevPoint = data[i - 1], prevY = prevPoint.y || 0, prevBox = data[i - 1].box;\n if (!box || !prevBox) {\n continue;\n }\n const prevStack = yAxis.waterfall.stacks[this.stackKey], isPos = prevY > 0 ? -prevBox.height : 0;\n if (prevStack && prevBox && box) {\n const prevStackX = prevStack[i - 1];\n // Y position of the connector is different when series are\n // stacked, yAxis is reversed and it also depends on point's\n // value\n let yPos;\n if (stacking) {\n const connectorThreshold = prevStackX.connectorThreshold;\n yPos = WaterfallSeries_crisp(yAxis.translate(connectorThreshold, false, true, false, true) +\n (reversedYAxis ? isPos : 0), graphLineWidth);\n }\n else {\n yPos = WaterfallSeries_crisp(prevBox.y + (prevPoint.minPointLengthOffset || 0), graphLineWidth);\n }\n path.push([\n 'M',\n (prevBox.x || 0) + (reversedXAxis ?\n 0 :\n (prevBox.width || 0)),\n yPos\n ], [\n 'L',\n (box.x || 0) + (reversedXAxis ?\n (box.width || 0) :\n 0),\n yPos\n ]);\n }\n if (prevBox &&\n path.length &&\n ((!stacking && prevY < 0 && !reversedYAxis) ||\n (prevY > 0 && reversedYAxis))) {\n const nextLast = path[path.length - 2];\n if (nextLast && typeof nextLast[2] === 'number') {\n nextLast[2] += prevBox.height || 0;\n }\n const last = path[path.length - 1];\n if (last && typeof last[2] === 'number') {\n last[2] += prevBox.height || 0;\n }\n }\n }\n return path;\n }\n // The graph is initially drawn with an empty definition, then updated with\n // crisp rendering.\n drawGraph() {\n WaterfallSeries_LineSeries.prototype.drawGraph.call(this);\n if (this.graph) {\n this.graph.attr({\n d: this.getCrispPath()\n });\n }\n }\n // Waterfall has stacking along the x-values too.\n setStackedPoints(axis) {\n const series = this, options = series.options, waterfallStacks = axis.waterfall?.stacks, seriesThreshold = options.threshold || 0, stackKey = series.stackKey, xData = series.getColumn('x'), yData = series.getColumn('y'), xLength = xData.length;\n let stackThreshold = seriesThreshold, interSum = stackThreshold, actualStackX, totalYVal = 0, actualSum = 0, prevSum = 0, statesLen, posTotal, negTotal, xPoint, yVal, x, alreadyChanged, changed;\n // Function responsible for calculating correct values for stackState\n // array of each stack item. The arguments are: firstS - the value for\n // the first state, nextS - the difference between the previous and the\n // newest state, sInx - counter used in the for that updates each state\n // when necessary, sOff - offset that must be added to each state when\n // they need to be updated (if point isn't a total sum)\n // eslint-disable-next-line require-jsdoc\n const calculateStackState = (firstS, nextS, sInx, sOff) => {\n if (actualStackX) {\n if (!statesLen) {\n actualStackX.stackState[0] = firstS;\n statesLen = actualStackX.stackState.length;\n }\n else {\n for (sInx; sInx < statesLen; sInx++) {\n actualStackX.stackState[sInx] += sOff;\n }\n }\n actualStackX.stackState.push(actualStackX.stackState[statesLen - 1] + nextS);\n }\n };\n if (axis.stacking && waterfallStacks) {\n // Code responsible for creating stacks for waterfall series\n if (series.reserveSpace()) {\n changed = waterfallStacks.changed;\n alreadyChanged = waterfallStacks.alreadyChanged;\n // In case of a redraw, stack for each x value must be emptied\n // (only for the first series in a specific stack) and\n // recalculated once more\n if (alreadyChanged &&\n alreadyChanged.indexOf(stackKey) < 0) {\n changed = true;\n }\n if (!waterfallStacks[stackKey]) {\n waterfallStacks[stackKey] = {};\n }\n const actualStack = waterfallStacks[stackKey];\n if (actualStack) {\n for (let i = 0; i < xLength; i++) {\n x = xData[i];\n if (!actualStack[x] || changed) {\n actualStack[x] = {\n negTotal: 0,\n posTotal: 0,\n stackTotal: 0,\n threshold: 0,\n stateIndex: 0,\n stackState: [],\n label: ((changed &&\n actualStack[x]) ?\n actualStack[x].label :\n void 0)\n };\n }\n actualStackX = actualStack[x];\n yVal = yData[i];\n if (yVal >= 0) {\n actualStackX.posTotal += yVal;\n }\n else {\n actualStackX.negTotal += yVal;\n }\n // Points do not exist yet, so raw data is used\n xPoint = options.data[i];\n posTotal = actualStackX.absolutePos =\n actualStackX.posTotal;\n negTotal = actualStackX.absoluteNeg =\n actualStackX.negTotal;\n actualStackX.stackTotal = posTotal + negTotal;\n statesLen = actualStackX.stackState.length;\n if (xPoint && xPoint.isIntermediateSum) {\n calculateStackState(prevSum, actualSum, 0, prevSum);\n prevSum = actualSum;\n actualSum = seriesThreshold;\n // Swapping values\n stackThreshold ^= interSum;\n interSum ^= stackThreshold;\n stackThreshold ^= interSum;\n }\n else if (xPoint && xPoint.isSum) {\n calculateStackState(seriesThreshold, totalYVal, statesLen, 0);\n stackThreshold = seriesThreshold;\n }\n else {\n calculateStackState(stackThreshold, yVal, 0, totalYVal);\n if (xPoint) {\n totalYVal += yVal;\n actualSum += yVal;\n }\n }\n actualStackX.stateIndex++;\n actualStackX.threshold = stackThreshold;\n stackThreshold += actualStackX.stackTotal;\n }\n }\n waterfallStacks.changed = false;\n if (!waterfallStacks.alreadyChanged) {\n waterfallStacks.alreadyChanged = [];\n }\n waterfallStacks.alreadyChanged.push(stackKey);\n }\n }\n }\n // Extremes for a non-stacked series are recorded in processData.\n // In case of stacking, use Series.stackedYData to calculate extremes.\n getExtremes() {\n const stacking = this.options.stacking;\n let yAxis, waterfallStacks, stackedYNeg, stackedYPos;\n if (stacking) {\n yAxis = this.yAxis;\n waterfallStacks = yAxis.waterfall.stacks;\n stackedYNeg = this.stackedYNeg = [];\n stackedYPos = this.stackedYPos = [];\n // The visible y range can be different when stacking is set to\n // overlap and different when it's set to normal\n if (stacking === 'overlap') {\n WaterfallSeries_objectEach(waterfallStacks[this.stackKey], function (stackX) {\n stackedYNeg.push(WaterfallSeries_arrayMin(stackX.stackState));\n stackedYPos.push(WaterfallSeries_arrayMax(stackX.stackState));\n });\n }\n else {\n WaterfallSeries_objectEach(waterfallStacks[this.stackKey], function (stackX) {\n stackedYNeg.push(stackX.negTotal + stackX.threshold);\n stackedYPos.push(stackX.posTotal + stackX.threshold);\n });\n }\n return {\n dataMin: WaterfallSeries_arrayMin(stackedYNeg),\n dataMax: WaterfallSeries_arrayMax(stackedYPos)\n };\n }\n // When not stacking, data extremes have already been computed in the\n // processData function.\n return {\n dataMin: this.dataMin,\n dataMax: this.dataMax\n };\n }\n}\n/* *\n *\n * Static Properties\n *\n * */\nWaterfallSeries.defaultOptions = WaterfallSeries_merge(WaterfallSeries_ColumnSeries.defaultOptions, Waterfall_WaterfallSeriesDefaults);\nWaterfallSeries.compose = Axis_WaterfallAxis.compose;\nWaterfallSeries_extend(WaterfallSeries.prototype, {\n pointValKey: 'y',\n // Property needed to prevent lines between the columns from disappearing\n // when negativeColor is used.\n showLine: true,\n pointClass: Waterfall_WaterfallPoint\n});\n// Translate data points from raw values\nWaterfallSeries_addEvent(WaterfallSeries, 'afterColumnTranslate', function () {\n const series = this, { options, points, yAxis } = series, minPointLength = WaterfallSeries_pick(options.minPointLength, 5), halfMinPointLength = minPointLength / 2, threshold = options.threshold || 0, stacking = options.stacking, actualStack = yAxis.waterfall.stacks[series.stackKey], processedYData = series.getColumn('y', true);\n let previousIntermediate = threshold, previousY = threshold, y, total, yPos, hPos;\n for (let i = 0; i < points.length; i++) {\n const point = points[i], yValue = processedYData[i], shapeArgs = point.shapeArgs, box = WaterfallSeries_extend({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, shapeArgs || {});\n point.box = box;\n const range = [0, yValue], pointY = point.y || 0;\n // Code responsible for correct positions of stacked points\n // starts here\n if (stacking) {\n if (actualStack) {\n const actualStackX = actualStack[i];\n if (stacking === 'overlap') {\n total =\n actualStackX.stackState[actualStackX.stateIndex--];\n y = pointY >= 0 ? total : total - pointY;\n if (ownProp(actualStackX, 'absolutePos')) {\n delete actualStackX.absolutePos;\n }\n if (ownProp(actualStackX, 'absoluteNeg')) {\n delete actualStackX.absoluteNeg;\n }\n }\n else {\n if (pointY >= 0) {\n total = actualStackX.threshold +\n actualStackX.posTotal;\n actualStackX.posTotal -= pointY;\n y = total;\n }\n else {\n total = actualStackX.threshold +\n actualStackX.negTotal;\n actualStackX.negTotal -= pointY;\n y = total - pointY;\n }\n if (!actualStackX.posTotal) {\n if (WaterfallSeries_isNumber(actualStackX.absolutePos) &&\n ownProp(actualStackX, 'absolutePos')) {\n actualStackX.posTotal =\n actualStackX.absolutePos;\n delete actualStackX.absolutePos;\n }\n }\n if (!actualStackX.negTotal) {\n if (WaterfallSeries_isNumber(actualStackX.absoluteNeg) &&\n ownProp(actualStackX, 'absoluteNeg')) {\n actualStackX.negTotal =\n actualStackX.absoluteNeg;\n delete actualStackX.absoluteNeg;\n }\n }\n }\n if (!point.isSum) {\n // The connectorThreshold property is later used in\n // getCrispPath function to draw a connector line in a\n // correct place\n actualStackX.connectorThreshold =\n actualStackX.threshold + actualStackX.stackTotal;\n }\n if (yAxis.reversed) {\n yPos = (pointY >= 0) ? (y - pointY) : (y + pointY);\n hPos = y;\n }\n else {\n yPos = y;\n hPos = y - pointY;\n }\n point.below = yPos <= threshold;\n box.y = yAxis.translate(yPos, false, true, false, true);\n box.height = Math.abs(box.y -\n yAxis.translate(hPos, false, true, false, true));\n const dummyStackItem = yAxis.waterfall.dummyStackItem;\n if (dummyStackItem) {\n dummyStackItem.x = i;\n dummyStackItem.label = actualStack[i].label;\n dummyStackItem.setOffset(series.pointXOffset || 0, series.barW || 0, series.stackedYNeg[i], series.stackedYPos[i], void 0, this.xAxis);\n }\n }\n }\n else {\n // Up points\n y = Math.max(previousY, previousY + pointY) + range[0];\n box.y = yAxis.translate(y, false, true, false, true);\n // Sum points\n if (point.isSum) {\n box.y = yAxis.translate(range[1], false, true, false, true);\n box.height = Math.min(yAxis.translate(range[0], false, true, false, true), yAxis.len) - box.y; // #4256\n point.below = range[1] <= threshold;\n }\n else if (point.isIntermediateSum) {\n if (pointY >= 0) {\n yPos = range[1] + previousIntermediate;\n hPos = previousIntermediate;\n }\n else {\n yPos = previousIntermediate;\n hPos = range[1] + previousIntermediate;\n }\n if (yAxis.reversed) {\n // Swapping values\n yPos ^= hPos;\n hPos ^= yPos;\n yPos ^= hPos;\n }\n box.y = yAxis.translate(yPos, false, true, false, true);\n box.height = Math.abs(box.y -\n Math.min(yAxis.translate(hPos, false, true, false, true), yAxis.len));\n previousIntermediate += range[1];\n point.below = yPos <= threshold;\n // If it's not the sum point, update previous stack end position\n // and get shape height (#3886)\n }\n else {\n box.height = yValue > 0 ?\n yAxis.translate(previousY, false, true, false, true) - box.y :\n yAxis.translate(previousY, false, true, false, true) - yAxis.translate(previousY - yValue, false, true, false, true);\n previousY += yValue;\n point.below = previousY < threshold;\n }\n // #3952 Negative sum or intermediate sum not rendered correctly\n if (box.height < 0) {\n box.y += box.height;\n box.height *= -1;\n }\n }\n point.plotY = box.y;\n point.yBottom = box.y + box.height;\n if (box.height <= minPointLength && !point.isNull) {\n box.height = minPointLength;\n box.y -= halfMinPointLength;\n point.yBottom = box.y + box.height;\n point.plotY = box.y;\n if (pointY < 0) {\n point.minPointLengthOffset = -halfMinPointLength;\n }\n else {\n point.minPointLengthOffset = halfMinPointLength;\n }\n }\n else {\n // #8024, empty gaps in the line for null data\n if (point.isNull) {\n box.width = 0;\n }\n point.minPointLengthOffset = 0;\n }\n // Correct tooltip placement (#3014)\n const tooltipY = point.plotY + (point.negative ? box.height : 0);\n if (point.below) { // #15334\n point.plotY += box.height;\n }\n if (point.tooltipPos) {\n if (series.chart.inverted) {\n point.tooltipPos[0] = yAxis.len - tooltipY;\n }\n else {\n point.tooltipPos[1] = tooltipY;\n }\n }\n // Check point position after recalculation (#16788)\n point.isInside = this.isPointInside(point);\n // Crisp vector coordinates\n const crispBottom = WaterfallSeries_crisp(point.yBottom, series.borderWidth);\n box.y = WaterfallSeries_crisp(box.y, series.borderWidth);\n box.height = crispBottom - box.y;\n WaterfallSeries_merge(true, point.shapeArgs, box);\n }\n}, { order: 2 });\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('waterfall', WaterfallSeries);\n/* *\n *\n * Export\n *\n * */\n/* harmony default export */ const Waterfall_WaterfallSeries = (WaterfallSeries);\n\n;// ./code/es-modules/masters/highcharts-more.src.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.RadialAxis = Axis_RadialAxis;\nBubble_BubbleSeries.compose(G.Axis, G.Chart, G.Legend);\nPackedBubble_PackedBubbleSeries.compose(G.Axis, G.Chart, G.Legend);\nPane_Pane.compose(G.Chart, G.Pointer);\nPolarComposition.compose(G.Axis, G.Chart, G.Pointer, G.Series, G.Tick, G.Point, (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.areasplinerange, (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column, (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.line, (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.spline);\nWaterfall_WaterfallSeries.compose(G.Axis, G.Chart);\n/* harmony default export */ const highcharts_more_src = (G);\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__512__","__WEBPACK_EXTERNAL_MODULE__820__","__WEBPACK_EXTERNAL_MODULE__448__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__260__","__WEBPACK_EXTERNAL_MODULE__960__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__184__","CenteredUtilities","RadialAxis","WaterfallAxis","__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__","highcharts_more_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default","deg2rad","fireEvent","isNumber","pick","relativeLength","getCenter","options","chart","slicingRoom","slicedOffset","plotWidth","plotHeight","centerOption","center","smallestSize","Math","min","thickness","handleSlicingRoom","size","innerSize","i","value","parseFloat","positions","angular","test","getStartAndEndRadians","start","end","startAngle","endAngle","Series_CenteredUtilities","addEvent","correctFloat","defined","PaneComposition_pick","chartGetHoverPane","eventArgs","hoverPane","pane","forEach","isInsidePane","chartX","plotLeft","chartY","plotTop","x","y","insideSlice","cx","cy","distance","sqrt","pow","angle","atan2","PI","ceil","onChartAfterIsInsiderPlot","e","polar","inverted","isInsidePlot","some","axis","normalizedStartAngleRad","normalizedEndAngleRad","onPointerAfterGetHoverData","hoverPoint","plotX","plotY","onPointerBeforeGetHoverData","getHoverPane","filter","s","visible","shared","directTouch","enableMouseTracking","xAxis","Pane_PaneDefaults","background","shape","borderRadius","borderWidth","borderColor","backgroundColor","linearGradient","x1","y1","x2","y2","stops","from","Number","MAX_VALUE","innerRadius","to","outerRadius","extend","merge","splat","Pane","constructor","coll","init","push","setOptions","render","renderer","group","g","attr","zIndex","add","updateCenter","backgroundOption","len","max","length","renderBackground","destroy","splice","backgroundOptions","attribs","className","method","styledMode","path","getPlotBandPath","update","redraw","axes","compose","ChartClass","PointerClass","chartProto","collectionsWithUpdate","area","pointClass","AreaPoint","areaProto","seriesTypes","AreaRangePoint_defined","AreaRangePoint_isNumber","AreaRange_AreaRangePoint","setState","prevState","state","series","isPolar","plotHigh","yAxis","toPixels","high","plotLow","low","lowerStateMarkerGraphic","stateMarkerGraphic","upperStateMarkerGraphic","graphic","graphics","plotHighX","apply","arguments","plotLowX","originalSettings","modifyMarkerSettings","restoreMarkerSettings","haloPath","isInside","isTopInside","concat","isValid","noop","AreaSeries","AreaRangeSeries_areaProto","column","columnProto","AreaRangeSeries_addEvent","AreaRangeSeries_defined","AreaRangeSeries_extend","isArray","AreaRangeSeries_isNumber","AreaRangeSeries_pick","AreaRangeSeries_merge","AreaRangeSeries","toYData","point","highToXY","xy","postTranslate","rectPlotX","getGraphPath","points","highPoints","highAreaPoints","connectEnds","connectNulls","pointShim","step","highAreaPoint","yBottom","doCurve","isNull","polarPlotY","lowerPath","left","right","higherPath","higherAreaPath","linePath","graphPath","areaPath","isArea","xMap","drawDataLabels","up","upperDataLabelOptions","lowerDataLabelOptions","data","originalDataLabels","dataLabelOptions","dataLabels","enabled","xHigh","yHigh","xLow","yLow","hasDataLabels","inside","_plotY","dataLabel","dataLabelUpper","below","align","verticalAlign","label","alignDataLabel","originalMarkerSettings","marker","symbol","lowMarker","drawPoints","pointLength","origProps","negative","zone","threshold","zones","getZone","hasMarkerChanged","oldOptions","oldMarker","height","width","defaultOptions","lineWidth","tooltip","pointFormat","trackByArea","pointArrayMap","join","translate","dataModify","modifyValue","order","tooltipPos","pos","posHigh","deferTranslatePolar","pointValKey","setStackedPoints","registerSeriesType","AreaRange_AreaRangeSeries","spline","splineProto","AreaSplineRangeSeries_merge","AreaSplineRangeSeries_extend","AreaSplineRangeSeries","getPointSpline","highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_","highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default","BoxPlotSeries_noop","crisp","BoxPlotSeries_extend","BoxPlotSeries_merge","BoxPlotSeries_pick","BoxPlotSeries_relativeLength","BoxPlotSeries","pointAttribs","getWhiskerPair","halfWidth","stemX","upperWhiskerLength","lowerWhiskerLength","strokeWidth","whiskers","getWhisker","xLen","yPos","halfLen","crispedYPos","highPlot","lowPlot","q1Plot","q3Plot","medianPlot","medianPath","boxPath","doQuartiles","whiskerLength","verb","shapeArgs","boxAttr","stemAttr","whiskersAttr","medianAttr","color","pointWhiskerLength","stem","addClass","box","medianShape","stroke","stemColor","stemWidth","dashstyle","stemDashStyle","dashStyle","whiskerColor","whiskerWidth","whiskerDashStyle","fill","fillColor","lineColor","boxDashStyle","medianColor","medianWidth","medianDashStyle","pointXOffset","barW","boxStrokeWidth","q1","median","q3","BoxPlot_BoxPlotSeries","Bubble_BubbleLegendDefaults","connectorClassName","connectorColor","connectorDistance","connectorWidth","labels","allowOverlap","format","formatter","style","fontSize","maxSize","minSize","legendIndex","ranges","sizeBy","sizeByAbsoluteValue","zThreshold","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","parse","BubbleLegendItem_noop","arrayMax","arrayMin","BubbleLegendItem_isNumber","BubbleLegendItem_merge","BubbleLegendItem_pick","stableSort","Bubble_BubbleLegendItem","legend","addToLegend","items","drawLegendSymbol","connectorSpace","itemDistance","legendItem","bubbleLegend","autoRanges","b","maxLabel","getMaxLabelSize","radius","movementX","labelWidth","labelHeight","seriesIndex","baseline","bubbleAttribs","connectorAttribs","labelAttribs","rtl","fillOpacity","range","setOpacity","getRangeRadius","bubbleSeries","zMax","zMin","getRadius","symbols","connectors","bubbleItems","css","itemStyle","translateX","translateY","renderRange","hideOverlappingLabels","mainRange","labelsOptions","elementCenter","absoluteRadius","abs","labelsAlign","posX","posY","crispMovement","connectorLength","circle","colorIndex","crispLine","text","formatLabel","position","getBBox","placed","alignAttr","labelSize","numberFormatter","index","newOpacity","oldOpacity","show","hide","getRanges","rangesOptions","zData","minZ","maxZ","isBubble","ignoreSeries","getColumn","displayNegative","reverse","predictBubbleSizes","legendOptions","floating","horizontal","layout","lastLineHeight","plotSizeX","plotSizeY","pxSizes","getPxExtremes","minPxSize","maxPxSize","plotSize","calculatedSize","updateRanges","bubbleLegendOptions","correctSizes","composed","BubbleLegendComposition_addEvent","objectEach","pushUnique","wrap","chartDrawChartBox","proceed","callback","bubbleSizes","getVisibleBubbleSeriesIndex","allItems","item","getMargins","setScale","updateNames","ticks","tick","isNew","isNewLabel","retranslateItems","getLinesHeights","dataTable","rowCount","lines","lastLine","legendItem2","j","itemHeight","onLegendAfterGetAllItems","bubbleSeriesIndex","destroyItem","onLegendItemClick","status","defaultPrevented","orgTranslateX","orgTranslateY","actualLine","round","Bubble_BubbleLegendComposition","LegendClass","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","scatter","ScatterPoint","BubblePoint_extend","BubblePoint","computedSize","ttBelow","BubbleSeries_color","BubbleSeries_composed","BubbleSeries_noop","Series","BubbleSeries_columnProto","ScatterSeries","BubbleSeries_addEvent","BubbleSeries_arrayMax","BubbleSeries_arrayMin","clamp","BubbleSeries_extend","BubbleSeries_isNumber","BubbleSeries_merge","BubbleSeries_pick","BubbleSeries_pushUnique","onAxisFoundExtremes","axisLength","isXAxis","pxMin","pxMax","transA","hasActiveSeries","bubblePadding","reserveSpace","allowZoomOutside","onPoint","getRadii","radii","dataMin","logarithmic","keys","onAxisAfterRender","tickPositions","dataMax","categories","type","find","tickCount","BubbleSeries","AxisClass","animate","animationLimit","hasRendered","markerAttribs","animation","yData","zExtremes","bubbleZExtremes","valid","otherSeries","getZExtremes","yValue","sizeByArea","zRange","hasData","markerOptions","translateBubble","zoneAxis","z","dlBox","getPxSize","isPercent","parseInt","searchKDTree","compareX","suppliedPointEvaluator","suppliedBSideCheckEvaluator","p1","p2","comparisonProp","p1Dist","p2Dist","ret","flip","states","hover","radiusPlus","softThreshold","halo","turboThreshold","applyZones","keysAffectYAxis","parallelArrays","trackerGroups","specialGroup","target","ColumnRangePoint_columnProto","arearange","ColumnRangePoint_AreaRangePoint","ColumnRangePoint_extend","ColumnRangePoint_isNumber","ColumnRangePoint","ColumnRangeSeries_noop","ColumnRangeSeries_AreaRangeSeries","ColumnSeries","ColumnRangeSeries_columnProto","ColumnRangeSeries_addEvent","ColumnRangeSeries_clamp","ColumnRangeSeries_extend","ColumnRangeSeries_isNumber","ColumnRangeSeries_merge","ColumnRangeSeries_pick","ColumnRangeSeries","stacking","translate3dPoints","translate3dShapes","afterColumnTranslate","heightDifference","startAngleRad","isRadial","safeDistance","chartWidth","chartHeight","minPointLength","rectPlotY","barX","shapeType","arc","pointWidth","crispCol","where","pointRange","legendSymbol","adjustForMissingColumns","drawGraph","getSymbol","drawTracker","getColumnMetrics","ColumnPyramidSeries_ColumnSeries","ColumnPyramidSeries_clamp","ColumnPyramidSeries_merge","ColumnPyramidSeries_pick","ColumnPyramidSeries","dense","closestPointRange","metrics","offset","translatedThreshold","getThreshold","seriesBarW","pointPadding","barY","barH","stackTotal","stackHeight","topXwidth","bottomXwidth","invBarPos","x3","x4","centerInCategory","total","topPointY","ErrorBarSeries_AreaRangeSeries","ErrorBarSeries_addEvent","ErrorBarSeries_merge","ErrorBarSeries_extend","ErrorBarSeries","linkedParent","columnMetrics","valKey","grouping","linkedTo","Point","GaugeSeries_noop","GaugeSeries_Series","GaugeSeries_ColumnSeries","GaugeSeries_clamp","GaugeSeries_isNumber","GaugeSeries_extend","GaugeSeries_merge","GaugeSeries_pick","pInt","GaugeSeries_defined","GaugeSeries","generatePoints","dialOptions","dial","baseLength","rearLength","baseWidth","topWidth","overshoot","rotation","endAngleRad","percentage","pivot","pivotOptions","plotGroup","seriesGroup","clip","clipRect","setData","processData","crop","defer","headerFormat","showInLegend","fixedBox","forceDL","noSharedTooltip","DragNodesComposition_composed","DragNodesComposition_addEvent","DragNodesComposition_pushUnique","onChartLoad","mousedownUnbinder","mousemoveUnbinder","mouseupUnbinder","container","event","hasDraggableNodes","draggable","onMouseDown","onMouseMove","ownerDocument","onMouseUp","Series_DragNodesComposition","normalizedEvent","pointer","normalize","fixedPosition","inDragMode","newPlotX","newPlotY","diffX","diffY","graphLayoutsLookup","hasDragged","redrawHalo","restartSimulation","enableSimulation","fixedDraggable","setAnimation","GraphLayoutComposition_composed","GraphLayoutComposition_addEvent","GraphLayoutComposition_pushUnique","onChartAfterPrint","updateSimulation","onChartBeforePrint","onChartPredraw","stop","onChartRender","systemsStable","afterRender","layoutStep","maxIterations","isFinite","temperature","isStable","beforeStep","Series_GraphLayoutComposition","integrations","layouts","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default","bubble","PackedBubblePoint_BubblePoint","PackedBubble_PackedBubblePoint","removeElementFromCollection","nodes","firePointEvent","seriesOptions","isParentNode","parentNode","temp","allowPointSelect","select","getSelectedPoints","getSelectedParentNodes","PackedBubbleSeriesDefaults_isNumber","Networkgraph_VerletIntegration","attractive","link","force","distanceXY","massFactor","getMass","translatedX","diffTemperature","translatedY","fromNode","degree","toNode","attractiveForceFunction","k","barycenter","gravitationalConstant","xFactor","yFactor","top","node","mass","getK","integrate","friction","maxSpeed","prevX","prevY","frictionX","dispX","frictionY","dispY","signX","signY","vectorLength","repulsive","factor","repulsiveForceFunction","PackedBubbleIntegration_noop","PackedBubbleIntegration","centerX","centerY","splitSeries","repNode","Networkgraph_EulerIntegration","distanceR","getDegree","phi","QuadTreeNode","body","isEmpty","isInternal","boxSize","divideBox","halfHeight","getBoxPosition","insert","depth","newQuadTreeNode","NaN","updateMassAndCenter","pointMass","Networkgraph_QuadTree","maxDepth","isRoot","calculateMassAndCenter","visitNodeRecursive","insertNodes","beforeCallback","afterCallback","goFurther","qtNode","win","ReingoldFruchtermanLayout_clamp","ReingoldFruchtermanLayout_defined","isFunction","ReingoldFruchtermanLayout_fireEvent","ReingoldFruchtermanLayout_pick","ReingoldFruchtermanLayout","currentStep","initialRendering","links","simulation","euler","verlet","setInitialRendering","integration","attractiveForce","repulsiveForce","approximation","enable","forces","initPositions","finishedAnimating","setK","resetSimulation","allSeries","forceName","createQuadTree","quadTree","anyLayout","applyLimits","coolDown","startTemperature","prevSystemTemperature","systemTemperature","getSystemTemperature","cancelAnimationFrame","requestAnimationFrame","setArea","w","h","linkLength","addElementsToCollection","elements","collection","element","indexOf","clear","forcedStop","setMaxIterations","setTemperature","setDiffTemperature","initialPositions","setCircularPositions","setRandomPositions","rootNodes","linksTo","visitedNodes","initialPositionRadius","addToNodes","linksFrom","id","sortedNodes","rootNode","iEnd","cos","sin","nodesLength","unrandom","rand","floor","name","args","barycenterForces","getBarycenter","systemMass","barnesHutApproximation","quadNode","goDeeper","getDistXY","theta","repulsiveForces","attractiveForces","applyLimitBox","temperatureStep","vector","getDistR","nodeA","nodeB","xDist","yDist","absX","absY","Networkgraph_ReingoldFruchtermanLayout","PackedBubbleLayout_addEvent","PackedBubbleLayout_pick","chartGetSelectedParentNodes","selectedParentsNodes","selected","onChartBeforeRedraw","allDataPoints","PackedBubbleLayout","packedbubble","calculateParentRadius","tempDiff","neighbours","seriesInteraction","parentNodeLimit","parentNodeRadius","SimulationSeriesUtilities_merge","syncTimeout","animObject","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","TextPath_deg2rad","TextPath_addEvent","TextPath_merge","uniqueKey","TextPath_defined","TextPath_extend","setTextPath","textPathOptions","attributes","dy","startOffset","textAnchor","url","textWrapper","textPath","undo","textPathId","textAttribs","dx","transform","children","slice","tagName","href","added","textCache","buildText","setPolygon","bBox","tp","querySelector","polygon","fontMetrics","descender","lineCleanerRegex","RegExp","innerHTML","replace","split","numOfLines","appendTopAndBottom","charIndex","positionOfChar","getRotationOfChar","cosRot","sinRot","lineIndex","lineLen","line","lineCharIndex","srcCharIndex","lower","upper","getStartPositionOfChar","unshift","charPos","getEndPositionOfChar","drawTextPath","labelOptions","formatPrefix","useHTML","getDataLabelPath","dataLabelPath","PackedBubbleSeries_color","PackedBubbleSeries_noop","seriesProto","PackedBubbleSeries_BubbleSeries","initDataLabels","PackedBubbleSeries_initDataLabels","initDataLabelsDefer","PackedBubbleSeries_initDataLabelsDefer","dlOptions","dataLabelsGroup","initDataLabelsGroup","opacity","getPlotBox","layoutAlgorithm","deferDataLabels","PackedBubbleSeries_addEvent","PackedBubbleSeries_clamp","PackedBubbleSeries_defined","PackedBubbleSeries_extend","PackedBubbleSeries_fireEvent","PackedBubbleSeries_isArray","PackedBubbleSeries_isNumber","PackedBubbleSeries_merge","PackedBubbleSeries_pick","Extensions_TextPath","SVGElementClass","svgElementProto","PackedBubbleSeries","parentNodeMass","PackedBubble_PackedBubbleLayout","accumulateAllPoints","is","valueData","addLayout","layoutOptions","layoutType","chartOptions","graphLayoutsStorage","forExport","collisionNmb","addSeriesLayout","parentNodeOptions","seriesLayout","parentNodeLayout","createParentNodes","seriesBox","calculateZExtremes","valMin","Infinity","valMax","checkOverlap","bubble1","bubble2","PackedBubblePoint","nodeAdded","parentMarkerOptions","brighten","p","normal","dataLabelOnNull","deferLayout","nodeMarker","parentOptions","parentAttribs","parentNodesGroup","graph","div","getPointRadius","useSimulation","extremes","allDataPointsLength","minRadius","maxRadius","eventsToUnbind","isDirty","dnPoint","removed","dragBetweenSeries","addPoint","remove","placeBubbles","positionBubble","bubblePos","stage","calculatedBubble","arr","sortedArr","sort","stages","rawPositions","resizeRadius","hasParentMarker","lastBubble","newOrigin","nextBubble","asin","acos","alfa","beta","finalAngle","gamma","cosA","sinA","minX","maxX","minY","maxY","POSITIVE_INFINITY","NEGATIVE_INFINITY","spaceRatio","smallerDimension","setVisible","parentNodeFormatter","parentNodeTextPath","padding","transition","axisTypes","invertible","isCartesian","requireSorting","indexateNodes","searchPoint","PolygonSeries_noop","PolygonSeries_AreaSeries","LineSeries","PolygonSeries_ScatterSeries","PolygonSeries_extend","PolygonSeries_merge","PolygonSeries","stickyTracking","followPointer","Axis_RadialAxisDefaults","circular","gridLineWidth","maxPadding","minPadding","showLastLabel","tickLength","radial","gridLineInterpolation","title","radialGauge","endOnTick","minorGridLineWidth","minorTickInterval","minorTickLength","minorTickPosition","minorTickWidth","startOnTick","tickPixelInterval","tickPosition","tickWidth","RadialAxis_composed","RadialAxis_noop","RadialAxis_addEvent","RadialAxis_correctFloat","RadialAxis_defined","RadialAxis_extend","RadialAxis_fireEvent","isObject","RadialAxis_merge","RadialAxis_pick","RadialAxis_pushUnique","RadialAxis_relativeLength","RadialAxis_wrap","beforeSetTickPositions","autoConnect","isCircular","userMax","createLabelCollector","map","Boolean","createLabelCollectorHidden","getCrosshairPosition","getPosition","getLinePath","_lineWidth","r","horiz","open","innerR","xBounds","yBounds","angleRad","getOffset","axisProto","axisOffset","side","radiusToPixels","percentRegex","fullRadius","xOnPerimeter","getPlotLinePath","transFrom","transTo","isCrosshair","paneInnerR","innerRatio","otherAxis","crossPos","translatedVal","getTitlePosition","titleOptions","middle","modify","setAxisSize","setAxisTranslation","onAxisAfterInit","isHidden","paneOptions","fullCircle","normalizedStart","normalizedEnd","onAxisAutoLabelAlign","preventDefault","onAxisDestroy","labelCollectors","labelCollector","onAxisInit","isX","paneIndex","userOptions","radialAxis","renderHidden","setCategories","setTitle","onAxisInitialAxisTranslation","onTickAfterGetLabelPosition","labelBBox","correctAngle","labelYPosCorrection","optionsY","centerSlot","labelDir","reducedAngle1","reducedAngle2","tickInterval","onTickAfterGetPosition","onGlobalSetOptions","radialDefaultOptions","sector","minPixelPadding","minPointOffset","defaultPolarOptions","stackLabels","reversedStacks","plotBands","wrapTickGetMarkPath","endPoint","TickClass","Axis_RadialAxis","PolarComposition_animObject","PolarComposition_composed","PolarComposition_addEvent","PolarComposition_defined","PolarComposition_isNumber","PolarComposition_merge","PolarComposition_pick","PolarComposition_pushUnique","PolarComposition_relativeLength","PolarComposition_splat","PolarComposition_uniqueKey","PolarComposition_wrap","onChartAfterDrawChartBox","onChartAfterInit","onChartCreateAxes","onPointerGetSelectionBox","linearAxis","result","onPointerGetSelectionMarkerAttrs","mouseDownX","mouseDownY","attrs","zoomHor","paneRadRange","pathStart","toValue","pathEnd","getExtremes","trimPath","zoomVert","Array","innerPath","outerPath","onSeriesAfterInit","PolarAdditions","isRadialSeries","isRadialBar","onSeriesAfterTranslate","kdByAngle","searchPointByAngleOrInverted","findNearestPointBy","toXY","hasParallelCoordinates","reversed","MIN_VALUE","hasClipCircleSetter","circ","clipCircle","clipPath","createElement","defs","wrapper","setClip","searchKDTreePoint","clientX","lastTick","firstTick","wrapChartGet","wrapColumnSeriesAlignDataLabel","alignTo","labelPos","onAfterColumnTranslate","visibleRange","thresholdAngleRad","yMin","yMax","pointX","pointY","stackValues","stack","stacks","stackKey","getStackIndicator","brOption","brValue","wrapLineSeriesGetGraphPath","firstValid","popLastPoint","pop","wrapPointerGetCoordinates","wrapPointerPinch","wrapSeriesAnimate","markerGroup","pie","scaleX","scaleY","wrapSplineSeriesGetPointSpline","segment","rightContX","getConnectors","calculateNeighbours","leftContX","leftContY","rightContY","jointAngle","addedNumber","prevPointInd","nextPointInd","previousPoint","nextPoint","previousX","previousY","nextX","nextY","smoothing","dLControlPoint","dRControlPoint","leftContAngle","prevPointCont","wrapPointPos","chartCoordinates","destroyed","SeriesClass","PointClass","AreaSplineRangeSeriesClass","ColumnSeriesClass","LineSeriesClass","SplineSeriesClass","Pane_Pane","pointProto","pointerProto","areaSplineRangeProto","polarPlotX","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default","WaterfallAxis_composed","WaterfallAxis_addEvent","WaterfallAxis_objectEach","WaterfallAxis_pushUnique","onAxisAfterBuildStacks","waterfall","changed","alreadyChanged","stackLabelOptions","renderStackTotals","Composition","serie","waterfallStacks","stackTotalGroup","dummyStackItem","stackItem","Axis_WaterfallAxis","WaterfallPoint_isNumber","WaterfallPoint","getClassName","isSum","isIntermediateSum","WaterfallSeries_ColumnSeries","WaterfallSeries_LineSeries","WaterfallSeries_addEvent","WaterfallSeries_arrayMax","WaterfallSeries_arrayMin","WaterfallSeries_correctFloat","WaterfallSeries_crisp","WaterfallSeries_extend","WaterfallSeries_isNumber","WaterfallSeries_merge","WaterfallSeries_objectEach","WaterfallSeries_pick","ownProp","WaterfallSeries","processedYData","subSum","sum","dataLength","pt","upColor","getCrispPath","graphLineWidth","reversedXAxis","reversedYAxis","prevPoint","prevBox","prevStack","isPos","prevStackX","connectorThreshold","minPointLengthOffset","nextLast","last","seriesThreshold","xData","xLength","stackThreshold","interSum","actualStackX","totalYVal","actualSum","prevSum","statesLen","posTotal","negTotal","xPoint","yVal","calculateStackState","firstS","nextS","sInx","sOff","stackState","actualStack","stateIndex","absolutePos","absoluteNeg","stackedYNeg","stackedYPos","stackX","lineWidthPlus","showLine","halfMinPointLength","previousIntermediate","hPos","setOffset","tooltipY","isPointInside","crispBottom","G","Bubble_BubbleSeries","Axis","Chart","Legend","PackedBubble_PackedBubbleSeries","Pointer","PolarComposition","Tick","areasplinerange","Waterfall_WaterfallSeries"],"mappings":"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"}
Hacked By AnonymousFox1.0, Coded By AnonymousFox