Hacked By AnonymousFox
{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/color-axis\n * @requires highcharts\n *\n * ColorAxis module\n *\n * (c) 2012-2024 Pawel Potaczek\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(require(\"highcharts\"), require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"LegendSymbol\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Series\"], require(\"highcharts\")[\"Chart\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"Series\"][\"types\"][\"scatter\"], require(\"highcharts\")[\"Point\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/map\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Axis\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"LegendSymbol\"], [\"highcharts/highcharts\",\"SeriesRegistry\"], [\"highcharts/highcharts\",\"SVGElement\"], [\"highcharts/highcharts\",\"Series\"], [\"highcharts/highcharts\",\"Chart\"], [\"highcharts/highcharts\",\"SVGRenderer\"], [\"highcharts/highcharts\",\"Templating\"], [\"highcharts/highcharts\",\"Series\",\"types\",\"scatter\"], [\"highcharts/highcharts\",\"Point\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/map\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"LegendSymbol\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Series\"], require(\"highcharts\")[\"Chart\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"Series\"][\"types\"][\"scatter\"], require(\"highcharts\")[\"Point\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Axis\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"LegendSymbol\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"Series\"], root[\"Highcharts\"][\"Chart\"], root[\"Highcharts\"][\"SVGRenderer\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"Series\"][\"types\"][\"scatter\"], root[\"Highcharts\"][\"Point\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__532__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__500__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__820__, __WEBPACK_EXTERNAL_MODULE__960__, __WEBPACK_EXTERNAL_MODULE__540__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__632__, __WEBPACK_EXTERNAL_MODULE__260__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 532:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__532__;\n\n/***/ }),\n\n/***/ 960:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__960__;\n\n/***/ }),\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 500:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__500__;\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 28:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 540:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__540__;\n\n/***/ }),\n\n/***/ 632:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__632__;\n\n/***/ }),\n\n/***/ 820:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__820__;\n\n/***/ }),\n\n/***/ 512:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 984:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\n\n/***/ }),\n\n/***/ 944:\n/***/ (function(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!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return 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!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(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!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return 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\": function() { return /* binding */ map_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\",\"Axis\"],\"commonjs\":[\"highcharts\",\"Axis\"],\"commonjs2\":[\"highcharts\",\"Axis\"],\"root\":[\"Highcharts\",\"Axis\"]}\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_ = __webpack_require__(532);\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default = /*#__PURE__*/__webpack_require__.n(highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_);\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;// ./code/es5/es-modules/Core/Axis/Color/ColorAxisComposition.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\nvar color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n * Composition\n *\n * */\nvar ColorAxisComposition;\n(function (ColorAxisComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Variables\n *\n * */\n var ColorAxisConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(ColorAxisClass, ChartClass, FxClass, LegendClass, SeriesClass) {\n var chartProto = ChartClass.prototype,\n fxProto = FxClass.prototype,\n seriesProto = SeriesClass.prototype;\n if (!chartProto.collectionsWithUpdate.includes('colorAxis')) {\n ColorAxisConstructor = ColorAxisClass;\n chartProto.collectionsWithUpdate.push('colorAxis');\n chartProto.collectionsWithInit.colorAxis = [\n chartProto.addColorAxis\n ];\n addEvent(ChartClass, 'afterCreateAxes', onChartAfterCreateAxes);\n wrapChartCreateAxis(ChartClass);\n fxProto.fillSetter = wrapFxFillSetter;\n fxProto.strokeSetter = wrapFxStrokeSetter;\n addEvent(LegendClass, 'afterGetAllItems', onLegendAfterGetAllItems);\n addEvent(LegendClass, 'afterColorizeItem', onLegendAfterColorizeItem);\n addEvent(LegendClass, 'afterUpdate', onLegendAfterUpdate);\n extend(seriesProto, {\n optionalAxis: 'colorAxis',\n translateColors: seriesTranslateColors\n });\n extend(seriesProto.pointClass.prototype, {\n setVisible: pointSetVisible\n });\n addEvent(SeriesClass, 'afterTranslate', onSeriesAfterTranslate, { order: 1 });\n addEvent(SeriesClass, 'bindAxes', onSeriesBindAxes);\n }\n }\n ColorAxisComposition.compose = compose;\n /**\n * Extend the chart createAxes method to also make the color axis.\n * @private\n */\n function onChartAfterCreateAxes() {\n var _this = this;\n var userOptions = this.userOptions;\n this.colorAxis = [];\n // If a `colorAxis` config is present in the user options (not in a\n // theme), instanciate it.\n if (userOptions.colorAxis) {\n userOptions.colorAxis = splat(userOptions.colorAxis);\n userOptions.colorAxis.map(function (axisOptions) { return (new ColorAxisConstructor(_this, axisOptions)); });\n }\n }\n /**\n * Add the color axis. This also removes the axis' own series to prevent\n * them from showing up individually.\n * @private\n */\n function onLegendAfterGetAllItems(e) {\n var _this = this;\n var colorAxes = this.chart.colorAxis || [],\n destroyItem = function (item) {\n var i = e.allItems.indexOf(item);\n if (i !== -1) {\n // #15436\n _this.destroyItem(e.allItems[i]);\n e.allItems.splice(i, 1);\n }\n };\n var colorAxisItems = [],\n options,\n i;\n colorAxes.forEach(function (colorAxis) {\n options = colorAxis.options;\n if (options && options.showInLegend) {\n // Data classes\n if (options.dataClasses && options.visible) {\n colorAxisItems = colorAxisItems.concat(colorAxis.getDataClassLegendSymbols());\n // Gradient legend\n }\n else if (options.visible) {\n // Add this axis on top\n colorAxisItems.push(colorAxis);\n }\n // If dataClasses are defined or showInLegend option is not set\n // to true, do not add color axis' series to legend.\n colorAxis.series.forEach(function (series) {\n if (!series.options.showInLegend || options.dataClasses) {\n if (series.options.legendType === 'point') {\n series.points.forEach(function (point) {\n destroyItem(point);\n });\n }\n else {\n destroyItem(series);\n }\n }\n });\n }\n });\n i = colorAxisItems.length;\n while (i--) {\n e.allItems.unshift(colorAxisItems[i]);\n }\n }\n /**\n * @private\n */\n function onLegendAfterColorizeItem(e) {\n if (e.visible && e.item.legendColor) {\n e.item.legendItem.symbol.attr({\n fill: e.item.legendColor\n });\n }\n }\n /**\n * Updates in the legend need to be reflected in the color axis. (#6888)\n * @private\n */\n function onLegendAfterUpdate(e) {\n var _a;\n (_a = this.chart.colorAxis) === null || _a === void 0 ? void 0 : _a.forEach(function (colorAxis) {\n colorAxis.update({}, e.redraw);\n });\n }\n /**\n * Calculate and set colors for points.\n * @private\n */\n function onSeriesAfterTranslate() {\n if (this.chart.colorAxis &&\n this.chart.colorAxis.length ||\n this.colorAttribs) {\n this.translateColors();\n }\n }\n /**\n * Add colorAxis to series axisTypes.\n * @private\n */\n function onSeriesBindAxes() {\n var axisTypes = this.axisTypes;\n if (!axisTypes) {\n this.axisTypes = ['colorAxis'];\n }\n else if (axisTypes.indexOf('colorAxis') === -1) {\n axisTypes.push('colorAxis');\n }\n }\n /**\n * Set the visibility of a single point\n * @private\n * @function Highcharts.colorPointMixin.setVisible\n * @param {boolean} visible\n */\n function pointSetVisible(vis) {\n var point = this,\n method = vis ? 'show' : 'hide';\n point.visible = point.options.visible = Boolean(vis);\n // Show and hide associated elements\n ['graphic', 'dataLabel'].forEach(function (key) {\n if (point[key]) {\n point[key][method]();\n }\n });\n this.series.buildKDTree(); // Rebuild kdtree #13195\n }\n ColorAxisComposition.pointSetVisible = pointSetVisible;\n /**\n * In choropleth maps, the color is a result of the value, so this needs\n * translation too\n * @private\n * @function Highcharts.colorSeriesMixin.translateColors\n */\n function seriesTranslateColors() {\n var series = this,\n points = this.getPointsCollection(), // #17945\n nullColor = this.options.nullColor,\n colorAxis = this.colorAxis,\n colorKey = this.colorKey;\n points.forEach(function (point) {\n var value = point.getNestedProperty(colorKey),\n color = point.options.color || (point.isNull || point.value === null ?\n nullColor :\n (colorAxis && typeof value !== 'undefined') ?\n colorAxis.toColor(value,\n point) :\n point.color || series.color);\n if (color && point.color !== color) {\n point.color = color;\n if (series.options.legendType === 'point' &&\n point.legendItem &&\n point.legendItem.label) {\n series.chart.legend.colorizeItem(point, point.visible);\n }\n }\n });\n }\n /**\n * @private\n */\n function wrapChartCreateAxis(ChartClass) {\n var superCreateAxis = ChartClass.prototype.createAxis;\n ChartClass.prototype.createAxis = function (type, options) {\n var chart = this;\n if (type !== 'colorAxis') {\n return superCreateAxis.apply(chart, arguments);\n }\n var axis = new ColorAxisConstructor(chart,\n merge(options.axis, {\n index: chart[type].length,\n isX: false\n }));\n chart.isDirtyLegend = true;\n // Clear before 'bindAxes' (#11924)\n chart.axes.forEach(function (axis) {\n axis.series = [];\n });\n chart.series.forEach(function (series) {\n series.bindAxes();\n series.isDirtyData = true;\n });\n if (pick(options.redraw, true)) {\n chart.redraw(options.animation);\n }\n return axis;\n };\n }\n /**\n * Handle animation of the color attributes directly.\n * @private\n */\n function wrapFxFillSetter() {\n this.elem.attr('fill', color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n }\n /**\n * Handle animation of the color attributes directly.\n * @private\n */\n function wrapFxStrokeSetter() {\n this.elem.attr('stroke', color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n }\n})(ColorAxisComposition || (ColorAxisComposition = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Color_ColorAxisComposition = (ColorAxisComposition);\n\n;// ./code/es5/es-modules/Core/Axis/Color/ColorAxisDefaults.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 color axis for series. Visually, the color\n * axis will appear as a gradient or as separate items inside the\n * legend, depending on whether the axis is scalar or based on data\n * classes.\n *\n * For supported color formats, see the\n * [docs article about colors](https://www.highcharts.com/docs/chart-design-and-style/colors).\n *\n * A scalar color axis is represented by a gradient. The colors either\n * range between the [minColor](#colorAxis.minColor) and the\n * [maxColor](#colorAxis.maxColor), or for more fine grained control the\n * colors can be defined in [stops](#colorAxis.stops). Often times, the\n * color axis needs to be adjusted to get the right color spread for the\n * data. In addition to stops, consider using a logarithmic\n * [axis type](#colorAxis.type), or setting [min](#colorAxis.min) and\n * [max](#colorAxis.max) to avoid the colors being determined by\n * outliers.\n *\n * When [dataClasses](#colorAxis.dataClasses) are used, the ranges are\n * subdivided into separate classes like categories based on their\n * values. This can be used for ranges between two values, but also for\n * a true category. However, when your data is categorized, it may be as\n * convenient to add each category to a separate series.\n *\n * Color axis does not work with: `sankey`, `sunburst`, `dependencywheel`,\n * `networkgraph`, `wordcloud`, `venn`, `gauge` and `solidgauge` series\n * types.\n *\n * Since v7.2.0 `colorAxis` can also be an array of options objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for\n * programmatic access to the axis.\n *\n * @sample {highcharts} highcharts/coloraxis/custom-color-key\n * Column chart with color axis\n * @sample {highcharts} highcharts/coloraxis/horizontal-layout\n * Horizontal layout\n * @sample {highmaps} maps/coloraxis/dataclasscolor\n * With data classes\n * @sample {highmaps} maps/coloraxis/mincolor-maxcolor\n * Min color and max color\n *\n * @extends xAxis\n * @excluding alignTicks, allowDecimals, alternateGridColor, breaks,\n * categories, crosshair, dateTimeLabelFormats, left,\n * lineWidth, linkedTo, maxZoom, minRange, minTickInterval,\n * offset, opposite, pane, plotBands, plotLines,\n * reversedStacks, scrollbar, showEmpty, title, top,\n * zoomEnabled\n * @product highcharts highstock highmaps\n * @type {*|Array<*>}\n * @optionparent colorAxis\n */\nvar colorAxisDefaults = {\n /**\n * Whether to allow decimals on the color axis.\n * @type {boolean}\n * @default true\n * @product highcharts highstock highmaps\n * @apioption colorAxis.allowDecimals\n */\n /**\n * Determines how to set each data class' color if no individual\n * color is set. The default value, `tween`, computes intermediate\n * colors between `minColor` and `maxColor`. The other possible\n * value, `category`, pulls colors from the global or chart specific\n * [colors](#colors) array.\n *\n * @sample {highmaps} maps/coloraxis/dataclasscolor/\n * Category colors\n *\n * @type {string}\n * @default tween\n * @product highcharts highstock highmaps\n * @validvalue [\"tween\", \"category\"]\n * @apioption colorAxis.dataClassColor\n */\n /**\n * An array of data classes or ranges for the choropleth map. If\n * none given, the color axis is scalar and values are distributed\n * as a gradient between the minimum and maximum colors.\n *\n * @sample {highmaps} maps/demo/data-class-ranges/\n * Multiple ranges\n *\n * @sample {highmaps} maps/demo/data-class-two-ranges/\n * Two ranges\n *\n * @type {Array<*>}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.dataClasses\n */\n /**\n * The layout of the color axis. Can be `'horizontal'` or `'vertical'`.\n * If none given, the color axis has the same layout as the legend.\n *\n * @sample highcharts/coloraxis/horizontal-layout/\n * Horizontal color axis layout with vertical legend\n *\n * @type {string|undefined}\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption colorAxis.layout\n */\n /**\n * The color of each data class. If not set, the color is pulled\n * from the global or chart-specific [colors](#colors) array. In\n * styled mode, this option is ignored. Instead, use colors defined\n * in CSS.\n *\n * @sample {highmaps} maps/demo/data-class-two-ranges/\n * Explicit colors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.dataClasses.color\n */\n /**\n * The start of the value range that the data class represents,\n * relating to the point value.\n *\n * The range of each `dataClass` is closed in both ends, but can be\n * overridden by the next `dataClass`.\n *\n * @type {number}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.dataClasses.from\n */\n /**\n * The name of the data class as it appears in the legend.\n * If no name is given, it is automatically created based on the\n * `from` and `to` values. For full programmatic control,\n * [legend.labelFormatter](#legend.labelFormatter) can be used.\n * In the formatter, `this.from` and `this.to` can be accessed.\n *\n * @sample {highmaps} maps/coloraxis/dataclasses-name/\n * Named data classes\n *\n * @sample {highmaps} maps/coloraxis/dataclasses-labelformatter/\n * Formatted data classes\n *\n * @type {string}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.dataClasses.name\n */\n /**\n * The end of the value range that the data class represents,\n * relating to the point value.\n *\n * The range of each `dataClass` is closed in both ends, but can be\n * overridden by the next `dataClass`.\n *\n * @type {number}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.dataClasses.to\n */\n /** @ignore-option */\n lineWidth: 0,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer.\n *\n * @product highcharts highstock highmaps\n */\n minPadding: 0,\n /**\n * The maximum value of the axis in terms of map point values. If\n * `null`, the max value is automatically calculated. If the\n * `endOnTick` option is true, the max value might be rounded up.\n *\n * @sample {highmaps} maps/coloraxis/gridlines/\n * Explicit min and max to reduce the effect of outliers\n *\n * @type {number}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.max\n */\n /**\n * The minimum value of the axis in terms of map point values. If\n * `null`, the min value is automatically calculated. If the\n * `startOnTick` option is true, the min value might be rounded\n * down.\n *\n * @sample {highmaps} maps/coloraxis/gridlines/\n * Explicit min and max to reduce the effect of outliers\n *\n * @type {number}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.min\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer.\n *\n * @product highcharts highstock highmaps\n */\n maxPadding: 0,\n /**\n * Color of the grid lines extending from the axis across the\n * gradient.\n *\n * @sample {highmaps} maps/coloraxis/gridlines/\n * Grid lines demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock highmaps\n */\n gridLineColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the grid lines extending from the axis across the\n * gradient of a scalar color axis.\n *\n * @sample {highmaps} maps/coloraxis/gridlines/\n * Grid lines demonstrated\n *\n * @product highcharts highstock highmaps\n */\n gridLineWidth: 1,\n /**\n * The interval of the tick marks in axis units. When `null`, the\n * tick interval is computed to approximately follow the\n * `tickPixelInterval`.\n *\n * @type {number}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.tickInterval\n */\n /**\n * If [tickInterval](#colorAxis.tickInterval) is `null` this option\n * sets the approximate pixel interval of the tick marks.\n *\n * @product highcharts highstock highmaps\n */\n tickPixelInterval: 72,\n /**\n * Whether to force the axis to start on a tick. Use this option\n * with the `maxPadding` option to control the axis start.\n *\n * @product highcharts highstock highmaps\n */\n startOnTick: true,\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the [maxPadding](#colorAxis.maxPadding) option to control the\n * axis end.\n *\n * @product highcharts highstock highmaps\n */\n endOnTick: true,\n /** @ignore */\n offset: 0,\n /**\n * The triangular marker on a scalar color axis that points to the\n * value of the hovered area. To disable the marker, set\n * `marker: null`.\n *\n * @sample {highmaps} maps/coloraxis/marker/\n * Black marker\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @product highcharts highstock highmaps\n */\n marker: {\n /**\n * Animation for the marker as it moves between values. Set to\n * `false` to disable animation. Defaults to `{ duration: 50 }`.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @product highcharts highstock highmaps\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /** @internal */\n width: 0.01,\n /**\n * The color of the marker.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock highmaps\n */\n color: \"#999999\" /* Palette.neutralColor40 */\n },\n /**\n * The axis labels show the number for each tick.\n *\n * For more live examples on label options, see [xAxis.labels in the\n * Highcharts API.](/highcharts#xAxis.labels)\n *\n * @extends xAxis.labels\n * @product highcharts highstock highmaps\n */\n labels: {\n distance: 8,\n /**\n * How to handle overflowing labels on horizontal color axis. If set\n * to `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @validvalue [\"allow\", \"justify\"]\n * @product highcharts highstock highmaps\n */\n overflow: 'justify',\n rotation: 0\n },\n /**\n * The color to represent the minimum of the color axis. Unless\n * [dataClasses](#colorAxis.dataClasses) or\n * [stops](#colorAxis.stops) are set, the gradient starts at this\n * value.\n *\n * If dataClasses are set, the color is based on minColor and\n * maxColor unless a color is set for each data class, or the\n * [dataClassColor](#colorAxis.dataClassColor) is set.\n *\n * @sample {highmaps} maps/coloraxis/mincolor-maxcolor/\n * Min and max colors on scalar (gradient) axis\n * @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/\n * On data classes\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock highmaps\n */\n minColor: \"#e6e9ff\" /* Palette.highlightColor10 */,\n /**\n * The color to represent the maximum of the color axis. Unless\n * [dataClasses](#colorAxis.dataClasses) or\n * [stops](#colorAxis.stops) are set, the gradient ends at this\n * value.\n *\n * If dataClasses are set, the color is based on minColor and\n * maxColor unless a color is set for each data class, or the\n * [dataClassColor](#colorAxis.dataClassColor) is set.\n *\n * @sample {highmaps} maps/coloraxis/mincolor-maxcolor/\n * Min and max colors on scalar (gradient) axis\n * @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/\n * On data classes\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock highmaps\n */\n maxColor: \"#0022ff\" /* Palette.highlightColor100 */,\n /**\n * Color stops for the gradient of a scalar color axis. Use this in\n * cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the\n * first item is a float between 0 and 1 assigning the relative\n * position in the gradient, and the second item is the color.\n *\n * @sample highcharts/coloraxis/coloraxis-stops/\n * Color axis stops\n * @sample highcharts/coloraxis/color-key-with-stops/\n * Color axis stops with custom colorKey\n * @sample {highmaps} maps/demo/heatmap/\n * Heatmap with three color stops\n *\n * @type {Array<Array<number,Highcharts.ColorString>>}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.stops\n */\n /**\n * The pixel length of the main tick marks on the color axis.\n */\n tickLength: 5,\n /**\n * The type of interpolation to use for the color axis. Can be\n * `linear` or `logarithmic`.\n *\n * @sample highcharts/coloraxis/logarithmic-with-emulate-negative-values/\n * Logarithmic color axis with extension to emulate negative\n * values\n *\n * @type {Highcharts.ColorAxisTypeValue}\n * @default linear\n * @product highcharts highstock highmaps\n * @apioption colorAxis.type\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. Defaults to `false` in a horizontal legend and\n * `true` in a vertical legend, where the smallest value starts on\n * top.\n *\n * @type {boolean}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.reversed\n */\n /**\n * @product highcharts highstock highmaps\n * @excluding afterBreaks, pointBreak, pointInBreak\n * @apioption colorAxis.events\n */\n /**\n * Fires when the legend item belonging to the colorAxis is clicked.\n * One parameter, `event`, is passed to the function.\n *\n * **Note:** This option is deprecated in favor of\n * [legend.events.itemClick](#legend.events.itemClick).\n *\n * @deprecated 11.4.4\n * @type {Function}\n * @product highcharts highstock highmaps\n * @apioption colorAxis.events.legendItemClick\n */\n /**\n * The width of the color axis. If it's a number, it is interpreted as\n * pixels.\n *\n * If it's a percentage string, it is interpreted as percentages of the\n * total plot width.\n *\n * @sample highcharts/coloraxis/width-and-height\n * Percentage width and pixel height for color axis\n *\n * @type {number|string}\n * @since 11.3.0\n * @product highcharts highstock highmaps\n * @apioption colorAxis.width\n */\n /**\n * The height of the color axis. If it's a number, it is interpreted as\n * pixels.\n *\n * If it's a percentage string, it is interpreted as percentages of the\n * total plot height.\n *\n * @sample highcharts/coloraxis/width-and-height\n * Percentage width and pixel height for color axis\n *\n * @type {number|string}\n * @since 11.3.0\n * @product highcharts highstock highmaps\n * @apioption colorAxis.height\n */\n /**\n * Whether to display the colorAxis in the legend.\n *\n * @sample highcharts/coloraxis/hidden-coloraxis-with-3d-chart/\n * Hidden color axis with 3d chart\n *\n * @see [heatmap.showInLegend](#series.heatmap.showInLegend)\n *\n * @since 4.2.7\n * @product highcharts highstock highmaps\n */\n showInLegend: true\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var ColorAxisDefaults = (colorAxisDefaults);\n\n;// ./code/es5/es-modules/Core/Axis/Color/ColorAxisLike.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\nvar ColorAxisLike_color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar ColorAxisLike_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n * Namespace\n *\n * */\nvar ColorAxisLike;\n(function (ColorAxisLike) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize defined data classes.\n * @private\n */\n function initDataClasses(userOptions) {\n var axis = this,\n chart = axis.chart,\n legendItem = axis.legendItem = axis.legendItem || {},\n options = axis.options,\n userDataClasses = userOptions.dataClasses || [];\n var dataClass,\n dataClasses,\n colorCount = chart.options.chart.colorCount,\n colorCounter = 0,\n colors;\n axis.dataClasses = dataClasses = [];\n legendItem.labels = [];\n for (var i = 0, iEnd = userDataClasses.length; i < iEnd; ++i) {\n dataClass = userDataClasses[i];\n dataClass = ColorAxisLike_merge(dataClass);\n dataClasses.push(dataClass);\n if (!chart.styledMode && dataClass.color) {\n continue;\n }\n if (options.dataClassColor === 'category') {\n if (!chart.styledMode) {\n colors = chart.options.colors || [];\n colorCount = colors.length;\n dataClass.color = colors[colorCounter];\n }\n dataClass.colorIndex = colorCounter;\n // Loop back to zero\n colorCounter++;\n if (colorCounter === colorCount) {\n colorCounter = 0;\n }\n }\n else {\n dataClass.color = ColorAxisLike_color(options.minColor).tweenTo(ColorAxisLike_color(options.maxColor), iEnd < 2 ? 0.5 : i / (iEnd - 1) // #3219\n );\n }\n }\n }\n ColorAxisLike.initDataClasses = initDataClasses;\n /**\n * Create initial color stops.\n * @private\n */\n function initStops() {\n var axis = this,\n options = axis.options,\n stops = axis.stops = options.stops || [\n [0,\n options.minColor || ''],\n [1,\n options.maxColor || '']\n ];\n for (var i = 0, iEnd = stops.length; i < iEnd; ++i) {\n stops[i].color = ColorAxisLike_color(stops[i][1]);\n }\n }\n ColorAxisLike.initStops = initStops;\n /**\n * Normalize logarithmic values.\n * @private\n */\n function normalizedValue(value) {\n var axis = this,\n max = axis.max || 0,\n min = axis.min || 0;\n if (axis.logarithmic) {\n value = axis.logarithmic.log2lin(value);\n }\n return 1 - ((max - value) /\n ((max - min) || 1));\n }\n ColorAxisLike.normalizedValue = normalizedValue;\n /**\n * Translate from a value to a color.\n * @private\n */\n function toColor(value, point) {\n var axis = this;\n var dataClasses = axis.dataClasses;\n var stops = axis.stops;\n var pos,\n from,\n to,\n color,\n dataClass,\n i;\n if (dataClasses) {\n i = dataClasses.length;\n while (i--) {\n dataClass = dataClasses[i];\n from = dataClass.from;\n to = dataClass.to;\n if ((typeof from === 'undefined' || value >= from) &&\n (typeof to === 'undefined' || value <= to)) {\n color = dataClass.color;\n if (point) {\n point.dataClass = i;\n point.colorIndex = dataClass.colorIndex;\n }\n break;\n }\n }\n }\n else {\n pos = axis.normalizedValue(value);\n i = stops.length;\n while (i--) {\n if (pos > stops[i][0]) {\n break;\n }\n }\n from = stops[i] || stops[i + 1];\n to = stops[i + 1] || from;\n // The position within the gradient\n pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);\n color = from.color.tweenTo(to.color, pos);\n }\n return color;\n }\n ColorAxisLike.toColor = toColor;\n})(ColorAxisLike || (ColorAxisLike = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Color_ColorAxisLike = (ColorAxisLike);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"LegendSymbol\"],\"commonjs\":[\"highcharts\",\"LegendSymbol\"],\"commonjs2\":[\"highcharts\",\"LegendSymbol\"],\"root\":[\"Highcharts\",\"LegendSymbol\"]}\nvar highcharts_LegendSymbol_commonjs_highcharts_LegendSymbol_commonjs2_highcharts_LegendSymbol_root_Highcharts_LegendSymbol_ = __webpack_require__(500);\nvar highcharts_LegendSymbol_commonjs_highcharts_LegendSymbol_commonjs2_highcharts_LegendSymbol_root_Highcharts_LegendSymbol_default = /*#__PURE__*/__webpack_require__.n(highcharts_LegendSymbol_commonjs_highcharts_LegendSymbol_commonjs2_highcharts_LegendSymbol_root_Highcharts_LegendSymbol_);\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;// ./code/es5/es-modules/Core/Axis/Color/ColorAxis.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\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\nvar defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\n\nvar Series = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series;\n\nvar defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, ColorAxis_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, ColorAxis_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, ColorAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\ndefaultOptions.colorAxis = ColorAxis_merge(defaultOptions.xAxis, ColorAxisDefaults);\n/* *\n *\n * Class\n *\n * */\n/**\n * The ColorAxis object for inclusion in gradient legends.\n *\n * @class\n * @name Highcharts.ColorAxis\n * @augments Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The related chart of the color axis.\n *\n * @param {Highcharts.ColorAxisOptions} userOptions\n * The color axis options for initialization.\n */\nvar ColorAxis = /** @class */ (function (_super) {\n __extends(ColorAxis, _super);\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function ColorAxis(chart, userOptions) {\n var _this = _super.call(this,\n chart,\n userOptions) || this;\n _this.coll = 'colorAxis';\n _this.visible = true;\n _this.init(chart, userOptions);\n return _this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n ColorAxis.compose = function (ChartClass, FxClass, LegendClass, SeriesClass) {\n Color_ColorAxisComposition.compose(ColorAxis, ChartClass, FxClass, LegendClass, SeriesClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initializes the color axis.\n *\n * @function Highcharts.ColorAxis#init\n *\n * @param {Highcharts.Chart} chart\n * The related chart of the color axis.\n *\n * @param {Highcharts.ColorAxisOptions} userOptions\n * The color axis options for initialization.\n */\n ColorAxis.prototype.init = function (chart, userOptions) {\n var axis = this;\n var legend = chart.options.legend || {},\n horiz = userOptions.layout ?\n userOptions.layout !== 'vertical' :\n legend.layout !== 'vertical';\n axis.side = userOptions.side || horiz ? 2 : 1;\n axis.reversed = userOptions.reversed || !horiz;\n axis.opposite = !horiz;\n _super.prototype.init.call(this, chart, userOptions, 'colorAxis');\n // `super.init` saves the extended user options, now replace it with the\n // originals\n this.userOptions = userOptions;\n if (isArray(chart.userOptions.colorAxis)) {\n chart.userOptions.colorAxis[this.index] = userOptions;\n }\n // Prepare data classes\n if (userOptions.dataClasses) {\n axis.initDataClasses(userOptions);\n }\n axis.initStops();\n // Override original axis properties\n axis.horiz = horiz;\n axis.zoomEnabled = false;\n };\n /**\n * Returns true if the series has points at all.\n *\n * @function Highcharts.ColorAxis#hasData\n *\n * @return {boolean}\n * True, if the series has points, otherwise false.\n */\n ColorAxis.prototype.hasData = function () {\n return !!(this.tickPositions || []).length;\n };\n /**\n * Override so that ticks are not added in data class axes (#6914)\n * @private\n */\n ColorAxis.prototype.setTickPositions = function () {\n if (!this.dataClasses) {\n return _super.prototype.setTickPositions.call(this);\n }\n };\n /**\n * Extend the setOptions method to process extreme colors and color stops.\n * @private\n */\n ColorAxis.prototype.setOptions = function (userOptions) {\n var options = ColorAxis_merge(defaultOptions.colorAxis,\n userOptions, \n // Forced options\n {\n showEmpty: false,\n title: null,\n visible: this.chart.options.legend.enabled &&\n userOptions.visible !== false\n });\n _super.prototype.setOptions.call(this, options);\n this.options.crosshair = this.options.marker;\n };\n /**\n * @private\n */\n ColorAxis.prototype.setAxisSize = function () {\n var _a;\n var axis = this,\n chart = axis.chart,\n symbol = (_a = axis.legendItem) === null || _a === void 0 ? void 0 : _a.symbol;\n var _b = axis.getSize(),\n width = _b.width,\n height = _b.height;\n if (symbol) {\n this.left = +symbol.attr('x');\n this.top = +symbol.attr('y');\n this.width = width = +symbol.attr('width');\n this.height = height = +symbol.attr('height');\n this.right = chart.chartWidth - this.left - width;\n this.bottom = chart.chartHeight - this.top - height;\n this.pos = this.horiz ? this.left : this.top;\n }\n // Fake length for disabled legend to avoid tick issues\n // and such (#5205)\n this.len = (this.horiz ? width : height) ||\n ColorAxis.defaultLegendLength;\n };\n /**\n * Override the getOffset method to add the whole axis groups inside the\n * legend.\n * @private\n */\n ColorAxis.prototype.getOffset = function () {\n var _a;\n var axis = this;\n var group = (_a = axis.legendItem) === null || _a === void 0 ? void 0 : _a.group;\n var sideOffset = axis.chart.axisOffset[axis.side];\n if (group) {\n // Hook for the getOffset method to add groups to this parent\n // group\n axis.axisParent = group;\n // Call the base\n _super.prototype.getOffset.call(this);\n var legend_1 = this.chart.legend;\n // Adds `maxLabelLength` needed for label padding corrections done\n // by `render()` and `getMargins()` (#15551).\n legend_1.allItems.forEach(function (item) {\n if (item instanceof ColorAxis) {\n item.drawLegendSymbol(legend_1, item);\n }\n });\n legend_1.render();\n this.chart.getMargins(true);\n // If not drilling down/up\n if (!this.chart.series.some(function (series) {\n return series.isDrilling;\n })) {\n axis.isDirty = true; // Flag to fire drawChartBox\n }\n // First time only\n if (!axis.added) {\n axis.added = true;\n axis.labelLeft = 0;\n axis.labelRight = axis.width;\n }\n // Reset it to avoid color axis reserving space\n axis.chart.axisOffset[axis.side] = sideOffset;\n }\n };\n /**\n * Create the color gradient.\n * @private\n */\n ColorAxis.prototype.setLegendColor = function () {\n var axis = this;\n var horiz = axis.horiz;\n var reversed = axis.reversed;\n var one = reversed ? 1 : 0;\n var zero = reversed ? 0 : 1;\n var grad = horiz ? [one, 0,\n zero, 0] : [0,\n zero, 0,\n one]; // #3190\n axis.legendColor = {\n linearGradient: {\n x1: grad[0],\n y1: grad[1],\n x2: grad[2],\n y2: grad[3]\n },\n stops: axis.stops\n };\n };\n /**\n * The color axis appears inside the legend and has its own legend symbol.\n * @private\n */\n ColorAxis.prototype.drawLegendSymbol = function (legend, item) {\n var _a;\n var axis = this,\n legendItem = item.legendItem || {},\n padding = legend.padding,\n legendOptions = legend.options,\n labelOptions = axis.options.labels,\n itemDistance = ColorAxis_pick(legendOptions.itemDistance, 10),\n horiz = axis.horiz,\n _b = axis.getSize(),\n width = _b.width,\n height = _b.height,\n labelPadding = ColorAxis_pick(\n // @todo: This option is not documented, nor implemented when\n // vertical\n legendOptions.labelPadding,\n horiz ? 16 : 30);\n this.setLegendColor();\n // Create the gradient\n if (!legendItem.symbol) {\n legendItem.symbol = this.chart.renderer.symbol('roundedRect')\n .attr({\n r: (_a = legendOptions.symbolRadius) !== null && _a !== void 0 ? _a : 3,\n zIndex: 1\n }).add(legendItem.group);\n }\n legendItem.symbol.attr({\n x: 0,\n y: (legend.baseline || 0) - 11,\n width: width,\n height: height\n });\n // Set how much space this legend item takes up\n legendItem.labelWidth = (width +\n padding +\n (horiz ?\n itemDistance :\n ColorAxis_pick(labelOptions.x, labelOptions.distance) +\n (this.maxLabelLength || 0)));\n legendItem.labelHeight = height + padding + (horiz ? labelPadding : 0);\n };\n /**\n * Fool the legend.\n * @private\n */\n ColorAxis.prototype.setState = function (state) {\n this.series.forEach(function (series) {\n series.setState(state);\n });\n };\n /**\n * @private\n */\n ColorAxis.prototype.setVisible = function () {\n };\n /**\n * @private\n */\n ColorAxis.prototype.getSeriesExtremes = function () {\n var axis = this;\n var series = axis.series;\n var colorValArray,\n colorKey,\n calculatedExtremes,\n cSeries,\n i = series.length;\n this.dataMin = Infinity;\n this.dataMax = -Infinity;\n while (i--) { // X, y, value, other\n cSeries = series[i];\n colorKey = cSeries.colorKey = ColorAxis_pick(cSeries.options.colorKey, cSeries.colorKey, cSeries.pointValKey, cSeries.zoneAxis, 'y');\n calculatedExtremes = cSeries[colorKey + 'Min'] &&\n cSeries[colorKey + 'Max'];\n // Find the first column that has values\n for (var _i = 0, _a = [colorKey, 'value', 'y']; _i < _a.length; _i++) {\n var key = _a[_i];\n colorValArray = cSeries.getColumn(key);\n if (colorValArray.length) {\n break;\n }\n }\n // If color key extremes are already calculated, use them.\n if (calculatedExtremes) {\n cSeries.minColorValue = cSeries[colorKey + 'Min'];\n cSeries.maxColorValue = cSeries[colorKey + 'Max'];\n }\n else {\n var cExtremes = Series.prototype.getExtremes.call(cSeries,\n colorValArray);\n cSeries.minColorValue = cExtremes.dataMin;\n cSeries.maxColorValue = cExtremes.dataMax;\n }\n if (defined(cSeries.minColorValue) &&\n defined(cSeries.maxColorValue)) {\n this.dataMin =\n Math.min(this.dataMin, cSeries.minColorValue);\n this.dataMax =\n Math.max(this.dataMax, cSeries.maxColorValue);\n }\n if (!calculatedExtremes) {\n Series.prototype.applyExtremes.call(cSeries);\n }\n }\n };\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.ColorAxis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.ColorAxis#event:afterDrawCrosshair\n * @emits Highcharts.ColorAxis#event:drawCrosshair\n */\n ColorAxis.prototype.drawCrosshair = function (e, point) {\n var axis = this,\n legendItem = axis.legendItem || {},\n plotX = point && point.plotX,\n plotY = point && point.plotY,\n axisPos = axis.pos,\n axisLen = axis.len;\n var crossPos;\n if (point) {\n crossPos = axis.toPixels(point.getNestedProperty(point.series.colorKey));\n if (crossPos < axisPos) {\n crossPos = axisPos - 2;\n }\n else if (crossPos > axisPos + axisLen) {\n crossPos = axisPos + axisLen + 2;\n }\n point.plotX = crossPos;\n point.plotY = axis.len - crossPos;\n _super.prototype.drawCrosshair.call(this, e, point);\n point.plotX = plotX;\n point.plotY = plotY;\n if (axis.cross &&\n !axis.cross.addedToColorAxis &&\n legendItem.group) {\n axis.cross\n .addClass('highcharts-coloraxis-marker')\n .add(legendItem.group);\n axis.cross.addedToColorAxis = true;\n if (!axis.chart.styledMode &&\n typeof axis.crosshair === 'object') {\n axis.cross.attr({\n fill: axis.crosshair.color\n });\n }\n }\n }\n };\n /**\n * @private\n */\n ColorAxis.prototype.getPlotLinePath = function (options) {\n var axis = this,\n left = axis.left,\n pos = options.translatedValue,\n top = axis.top;\n // Crosshairs only\n return isNumber(pos) ? // `pos` can be 0 (#3969)\n (axis.horiz ? [\n ['M', pos - 4, top - 6],\n ['L', pos + 4, top - 6],\n ['L', pos, top],\n ['Z']\n ] : [\n ['M', left, pos],\n ['L', left - 6, pos + 6],\n ['L', left - 6, pos - 6],\n ['Z']\n ]) :\n _super.prototype.getPlotLinePath.call(this, options);\n };\n /**\n * Updates a color axis instance with a new set of options. The options are\n * merged with the existing options, so only new or altered options need to\n * be specified.\n *\n * @function Highcharts.ColorAxis#update\n *\n * @param {Highcharts.ColorAxisOptions} newOptions\n * The new options that will be merged in with existing options on the color\n * axis.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart after the color axis is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to `false`\n * and call {@link Highcharts.Chart#redraw} after.\n */\n ColorAxis.prototype.update = function (newOptions, redraw) {\n var axis = this,\n chart = axis.chart,\n legend = chart.legend;\n this.series.forEach(function (series) {\n // Needed for Axis.update when choropleth colors change\n series.isDirtyData = true;\n });\n // When updating data classes, destroy old items and make sure new\n // ones are created (#3207)\n if (newOptions.dataClasses && legend.allItems || axis.dataClasses) {\n axis.destroyItems();\n }\n _super.prototype.update.call(this, newOptions, redraw);\n if (axis.legendItem && axis.legendItem.label) {\n axis.setLegendColor();\n legend.colorizeItem(this, true);\n }\n };\n /**\n * Destroy color axis legend items.\n * @private\n */\n ColorAxis.prototype.destroyItems = function () {\n var axis = this,\n chart = axis.chart,\n legendItem = axis.legendItem || {};\n if (legendItem.label) {\n chart.legend.destroyItem(axis);\n }\n else if (legendItem.labels) {\n for (var _i = 0, _a = legendItem.labels; _i < _a.length; _i++) {\n var item = _a[_i];\n chart.legend.destroyItem(item);\n }\n }\n chart.isDirtyLegend = true;\n };\n // Removing the whole axis (#14283)\n ColorAxis.prototype.destroy = function () {\n this.chart.isDirtyLegend = true;\n this.destroyItems();\n _super.prototype.destroy.apply(this, [].slice.call(arguments));\n };\n /**\n * Removes the color axis and the related legend item.\n *\n * @function Highcharts.ColorAxis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n ColorAxis.prototype.remove = function (redraw) {\n this.destroyItems();\n _super.prototype.remove.call(this, redraw);\n };\n /**\n * Get the legend item symbols for data classes.\n * @private\n */\n ColorAxis.prototype.getDataClassLegendSymbols = function () {\n var axis = this,\n chart = axis.chart,\n legendItems = (axis.legendItem &&\n axis.legendItem.labels ||\n []),\n legendOptions = chart.options.legend,\n valueDecimals = ColorAxis_pick(legendOptions.valueDecimals, -1),\n valueSuffix = ColorAxis_pick(legendOptions.valueSuffix, '');\n var getPointsInDataClass = function (i) {\n return axis.series.reduce(function (points,\n s) {\n points.push.apply(points,\n s.points.filter(function (point) {\n return point.dataClass === i;\n }));\n return points;\n }, []);\n };\n var name;\n if (!legendItems.length) {\n axis.dataClasses.forEach(function (dataClass, i) {\n var from = dataClass.from,\n to = dataClass.to,\n numberFormatter = chart.numberFormatter;\n var vis = true;\n // Assemble the default name. This can be overridden\n // by legend.options.labelFormatter\n name = '';\n if (typeof from === 'undefined') {\n name = '< ';\n }\n else if (typeof to === 'undefined') {\n name = '> ';\n }\n if (typeof from !== 'undefined') {\n name += numberFormatter(from, valueDecimals) + valueSuffix;\n }\n if (typeof from !== 'undefined' && typeof to !== 'undefined') {\n name += ' - ';\n }\n if (typeof to !== 'undefined') {\n name += numberFormatter(to, valueDecimals) + valueSuffix;\n }\n // Add a mock object to the legend items\n legendItems.push(ColorAxis_extend({\n chart: chart,\n name: name,\n options: {},\n drawLegendSymbol: (highcharts_LegendSymbol_commonjs_highcharts_LegendSymbol_commonjs2_highcharts_LegendSymbol_root_Highcharts_LegendSymbol_default()).rectangle,\n visible: true,\n isDataClass: true,\n // Override setState to set either normal or inactive\n // state to all points in this data class\n setState: function (state) {\n for (var _i = 0, _a = getPointsInDataClass(i); _i < _a.length; _i++) {\n var point = _a[_i];\n point.setState(state);\n }\n },\n // Override setState to show or hide all points in this\n // data class\n setVisible: function () {\n this.visible = vis = axis.visible = !vis;\n var affectedSeries = [];\n for (var _i = 0, _a = getPointsInDataClass(i); _i < _a.length; _i++) {\n var point = _a[_i];\n point.setVisible(vis);\n point.hiddenInDataClass = !vis; // #20441\n if (affectedSeries.indexOf(point.series) === -1) {\n affectedSeries.push(point.series);\n }\n }\n chart.legend.colorizeItem(this, vis);\n affectedSeries.forEach(function (series) {\n fireEvent(series, 'afterDataClassLegendClick');\n });\n }\n }, dataClass));\n });\n }\n return legendItems;\n };\n /**\n * Get size of color axis symbol.\n * @private\n */\n ColorAxis.prototype.getSize = function () {\n var axis = this,\n chart = axis.chart,\n horiz = axis.horiz,\n _a = axis.options,\n colorAxisHeight = _a.height,\n colorAxisWidth = _a.width,\n legendOptions = chart.options.legend,\n width = ColorAxis_pick(defined(colorAxisWidth) ?\n relativeLength(colorAxisWidth,\n chart.chartWidth) : void 0,\n legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.symbolWidth,\n horiz ? ColorAxis.defaultLegendLength : 12),\n height = ColorAxis_pick(defined(colorAxisHeight) ?\n relativeLength(colorAxisHeight,\n chart.chartHeight) : void 0,\n legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.symbolHeight,\n horiz ? 12 : ColorAxis.defaultLegendLength);\n return {\n width: width,\n height: height\n };\n };\n /* *\n *\n * Static Properties\n *\n * */\n ColorAxis.defaultLegendLength = 200;\n /**\n * @private\n */\n ColorAxis.keepProps = [\n 'legendItem'\n ];\n return ColorAxis;\n}((highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())));\nColorAxis_extend(ColorAxis.prototype, Color_ColorAxisLike);\n/* *\n *\n * Registry\n *\n * */\n// Properties to preserve after destroy, for Axis.update (#5881, #6025).\nArray.prototype.push.apply((highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default()).keepProps, ColorAxis.keepProps);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Color_ColorAxis = (ColorAxis);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * Color axis types\n *\n * @typedef {\"linear\"|\"logarithmic\"} Highcharts.ColorAxisTypeValue\n */\n''; // Detach doclet above\n\n;// ./code/es5/es-modules/masters/modules/coloraxis.src.js\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.ColorAxis = G.ColorAxis || Color_ColorAxis;\nG.ColorAxis.compose(G.Chart, G.Fx, G.Legend, G.Series);\n/* harmony default export */ var coloraxis_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/Maps/MapNavigationDefaults.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 * Constants\n *\n * */\nvar lang = {\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out'\n};\n/**\n * The `mapNavigation` option handles buttons for navigation in addition to\n * `mousewheel` and `doubleclick` handlers for map zooming.\n *\n * @product highmaps\n * @optionparent mapNavigation\n */\nvar mapNavigation = {\n /**\n * General options for the map navigation buttons. Individual options\n * can be given from the [mapNavigation.buttons](#mapNavigation.buttons)\n * option set.\n *\n * @sample {highmaps} maps/mapnavigation/button-theme/\n * Theming the navigation buttons\n */\n buttonOptions: {\n /**\n * What box to align the buttons to. Possible values are `plotBox`\n * and `spacingBox`.\n *\n * @type {Highcharts.ButtonRelativeToValue}\n */\n alignTo: 'plotBox',\n /**\n * The alignment of the navigation buttons.\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the buttons. Individual alignment can\n * be adjusted by each button's `y` offset.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'top',\n /**\n * The X offset of the buttons relative to its `align` setting.\n */\n x: 0,\n /**\n * The width of the map navigation buttons.\n */\n width: 18,\n /**\n * The pixel height of the map navigation buttons.\n */\n height: 18,\n /**\n * Padding for the navigation buttons.\n *\n * @since 5.0.0\n */\n padding: 5,\n /**\n * Text styles for the map navigation buttons.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontSize\": \"1em\", \"fontWeight\": \"bold\"}\n */\n style: {\n /** @ignore */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @ignore */\n fontSize: '1em',\n /** @ignore */\n fontWeight: 'bold'\n },\n /**\n * A configuration object for the button theme. The object accepts\n * SVG properties like `stroke-width`, `stroke` and `fill`. Tri-state\n * button styles are supported by the `states.hover` and `states.select`\n * objects.\n *\n * @sample {highmaps} maps/mapnavigation/button-theme/\n * Themed navigation buttons\n *\n * @type {Highcharts.SVGAttributes}\n * @default {\"stroke-width\": 1, \"text-align\": \"center\"}\n */\n theme: {\n /** @ignore */\n fill: \"#ffffff\" /* Palette.backgroundColor */,\n /** @ignore */\n stroke: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /** @ignore */\n 'stroke-width': 1,\n /** @ignore */\n 'text-align': 'center'\n }\n },\n /**\n * The individual buttons for the map navigation. This usually includes\n * the zoom in and zoom out buttons. Properties for each button is\n * inherited from\n * [mapNavigation.buttonOptions](#mapNavigation.buttonOptions), while\n * individual options can be overridden. But default, the `onclick`, `text`\n * and `y` options are individual.\n */\n buttons: {\n /**\n * Options for the zoom in button. Properties for the zoom in and zoom\n * out buttons are inherited from\n * [mapNavigation.buttonOptions](#mapNavigation.buttonOptions), while\n * individual options can be overridden. By default, the `onclick`,\n * `text` and `y` options are individual.\n *\n * @extends mapNavigation.buttonOptions\n */\n zoomIn: {\n // eslint-disable-next-line valid-jsdoc\n /**\n * Click handler for the button.\n *\n * @type {Function}\n * @default function () { this.mapZoom(0.5); }\n */\n onclick: function () {\n this.mapZoom(0.5);\n },\n /**\n * The text for the button. The tooltip (title) is a language option\n * given by [lang.zoomIn](#lang.zoomIn).\n */\n text: '+',\n /**\n * The position of the zoomIn button relative to the vertical\n * alignment.\n */\n y: 0\n },\n /**\n * Options for the zoom out button. Properties for the zoom in and\n * zoom out buttons are inherited from\n * [mapNavigation.buttonOptions](#mapNavigation.buttonOptions), while\n * individual options can be overridden. By default, the `onclick`,\n * `text` and `y` options are individual.\n *\n * @extends mapNavigation.buttonOptions\n */\n zoomOut: {\n // eslint-disable-next-line valid-jsdoc\n /**\n * Click handler for the button.\n *\n * @type {Function}\n * @default function () { this.mapZoom(2); }\n */\n onclick: function () {\n this.mapZoom(2);\n },\n /**\n * The text for the button. The tooltip (title) is a language option\n * given by [lang.zoomOut](#lang.zoomIn).\n */\n text: '-',\n /**\n * The position of the zoomOut button relative to the vertical\n * alignment.\n */\n y: 28\n }\n },\n /**\n * Whether to enable navigation buttons. By default it inherits the\n * [enabled](#mapNavigation.enabled) setting.\n *\n * @type {boolean}\n * @apioption mapNavigation.enableButtons\n */\n /**\n * Whether to enable map navigation. The default is not to enable\n * navigation, as many choropleth maps are simple and don't need it.\n * Additionally, when touch zoom and mouse wheel zoom is enabled, it breaks\n * the default behaviour of these interactions in the website, and the\n * implementer should be aware of this.\n *\n * Individual interactions can be enabled separately, namely buttons,\n * multitouch zoom, double click zoom, double click zoom to element and\n * mouse wheel zoom.\n *\n * @type {boolean}\n * @default false\n * @apioption mapNavigation.enabled\n */\n /**\n * Enables zooming in on an area on double clicking in the map. By default\n * it inherits the [enabled](#mapNavigation.enabled) setting.\n *\n * @type {boolean}\n * @apioption mapNavigation.enableDoubleClickZoom\n */\n /**\n * Whether to zoom in on an area when that area is double clicked.\n *\n * @sample {highmaps} maps/mapnavigation/doubleclickzoomto/\n * Enable double click zoom to\n *\n * @type {boolean}\n * @default false\n * @apioption mapNavigation.enableDoubleClickZoomTo\n */\n /**\n * Enables zooming by mouse wheel. By default it inherits the [enabled](\n * #mapNavigation.enabled) setting.\n *\n * @type {boolean}\n * @apioption mapNavigation.enableMouseWheelZoom\n */\n /**\n * Whether to enable multitouch zooming. Note that if the chart covers the\n * viewport, this prevents the user from using multitouch and touchdrag on\n * the web page, so you should make sure the user is not trapped inside the\n * chart. By default it inherits the [enabled](#mapNavigation.enabled)\n * setting.\n *\n * @type {boolean}\n * @apioption mapNavigation.enableTouchZoom\n */\n /**\n * Sensitivity of mouse wheel or trackpad scrolling. 1 is no sensitivity,\n * while with 2, one mouse wheel delta will zoom in 50%.\n *\n * @since 4.2.4\n */\n mouseWheelSensitivity: 1.1\n // Enabled: false,\n // enableButtons: null, // inherit from enabled\n // enableTouchZoom: null, // inherit from enabled\n // enableDoubleClickZoom: null, // inherit from enabled\n // enableDoubleClickZoomTo: false\n // enableMouseWheelZoom: null, // inherit from enabled\n};\n/* *\n *\n * Default Export\n *\n * */\nvar mapNavigationDefaults = {\n lang: lang,\n mapNavigation: mapNavigation\n};\n/* harmony default export */ var MapNavigationDefaults = (mapNavigationDefaults);\n\n;// ./code/es5/es-modules/Maps/MapPointer.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\nvar MapPointer_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, MapPointer_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, MapPointer_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n * Composition\n *\n * */\nvar MapPointer;\n(function (MapPointer) {\n /* *\n *\n * Variables\n *\n * */\n var totalWheelDelta = 0;\n var totalWheelDeltaTimer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extend the Pointer.\n * @private\n */\n function compose(PointerClass) {\n var pointerProto = PointerClass.prototype;\n if (!pointerProto.onContainerDblClick) {\n MapPointer_extend(pointerProto, {\n onContainerDblClick: onContainerDblClick,\n onContainerMouseWheel: onContainerMouseWheel\n });\n wrap(pointerProto, 'normalize', wrapNormalize);\n wrap(pointerProto, 'zoomOption', wrapZoomOption);\n }\n }\n MapPointer.compose = compose;\n /**\n * The event handler for the doubleclick event.\n * @private\n */\n function onContainerDblClick(e) {\n var chart = this.chart;\n e = this.normalize(e);\n if (chart.options.mapNavigation.enableDoubleClickZoomTo) {\n if (chart.pointer.inClass(e.target, 'highcharts-tracker') &&\n chart.hoverPoint) {\n chart.hoverPoint.zoomTo();\n }\n }\n else if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {\n chart.mapZoom(0.5, void 0, void 0, e.chartX, e.chartY);\n }\n }\n /**\n * The event handler for the mouse scroll event.\n * @private\n */\n function onContainerMouseWheel(e) {\n var chart = this.chart;\n e = this.normalize(e);\n // Firefox uses e.deltaY or e.detail, WebKit and IE uses wheelDelta\n // try wheelDelta first #15656\n var delta = (MapPointer_defined(e.wheelDelta) && -e.wheelDelta / 120) ||\n e.deltaY || e.detail;\n // Wheel zooming on trackpads have different behaviours in Firefox vs\n // WebKit. In Firefox the delta increments in steps by 1, so it is not\n // distinguishable from true mouse wheel. Therefore we use this timer\n // to avoid trackpad zooming going too fast and out of control. In\n // WebKit however, the delta is < 1, so we simply disable animation in\n // the `chart.mapZoom` call below.\n if (Math.abs(delta) >= 1) {\n totalWheelDelta += Math.abs(delta);\n if (totalWheelDeltaTimer) {\n clearTimeout(totalWheelDeltaTimer);\n }\n totalWheelDeltaTimer = setTimeout(function () {\n totalWheelDelta = 0;\n }, 50);\n }\n if (totalWheelDelta < 10 && chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop) && chart.mapView) {\n chart.mapView.zoomBy((chart.options.mapNavigation.mouseWheelSensitivity -\n 1) * -delta, void 0, [e.chartX, e.chartY], \n // Delta less than 1 indicates stepless/trackpad zooming, avoid\n // animation delaying the zoom\n Math.abs(delta) < 1 ? false : void 0);\n }\n }\n /**\n * Add lon and lat information to pointer events\n * @private\n */\n function wrapNormalize(proceed, e, chartPosition) {\n var chart = this.chart;\n e = proceed.call(this, e, chartPosition);\n if (chart && chart.mapView) {\n var lonLat = chart.mapView.pixelsToLonLat({\n x: e.chartX - chart.plotLeft,\n y: e.chartY - chart.plotTop\n });\n if (lonLat) {\n MapPointer_extend(e, lonLat);\n }\n }\n return e;\n }\n /**\n * The pinchType is inferred from mapNavigation options.\n * @private\n */\n function wrapZoomOption(proceed) {\n var mapNavigation = this.chart.options.mapNavigation;\n // Pinch status\n if (mapNavigation &&\n MapPointer_pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {\n this.chart.zooming.pinchType = 'xy';\n }\n proceed.apply(this, [].slice.call(arguments, 1));\n }\n})(MapPointer || (MapPointer = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Maps_MapPointer = (MapPointer);\n\n;// ./code/es5/es-modules/Maps/MapSymbols.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 * Variables\n *\n * */\nvar symbols;\n/* *\n *\n * Functions\n *\n * */\n/**\n *\n */\nfunction bottomButton(x, y, w, h, options) {\n if (options) {\n var r = (options === null || options === void 0 ? void 0 : options.r) || 0;\n options.brBoxY = y - r;\n options.brBoxHeight = h + r;\n }\n return symbols.roundedRect(x, y, w, h, options);\n}\n/**\n *\n */\nfunction compose(SVGRendererClass) {\n symbols = SVGRendererClass.prototype.symbols;\n symbols.bottombutton = bottomButton;\n symbols.topbutton = topButton;\n}\n/**\n *\n */\nfunction topButton(x, y, w, h, options) {\n if (options) {\n var r = (options === null || options === void 0 ? void 0 : options.r) || 0;\n options.brBoxHeight = h + r;\n }\n return symbols.roundedRect(x, y, w, h, options);\n}\n/* *\n *\n * Default Export\n *\n * */\nvar MapSymbols = {\n compose: compose\n};\n/* harmony default export */ var Maps_MapSymbols = (MapSymbols);\n\n;// ./code/es5/es-modules/Maps/MapNavigation.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\nvar setOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setOptions;\n\nvar composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\n\n\nvar MapNavigation_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, MapNavigation_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, MapNavigation_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, MapNavigation_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction stopEvent(e) {\n var _a,\n _b;\n if (e) {\n (_a = e.preventDefault) === null || _a === void 0 ? void 0 : _a.call(e);\n (_b = e.stopPropagation) === null || _b === void 0 ? void 0 : _b.call(e);\n e.cancelBubble = true;\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * The MapNavigation handles buttons for navigation in addition to mousewheel\n * and doubleclick handlers for chart zooming.\n *\n * @private\n * @class\n * @name MapNavigation\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n */\nvar MapNavigation = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function MapNavigation(chart) {\n this.chart = chart;\n this.navButtons = [];\n }\n /* *\n *\n * Static Functions\n *\n * */\n MapNavigation.compose = function (MapChartClass, PointerClass, SVGRendererClass) {\n Maps_MapPointer.compose(PointerClass);\n Maps_MapSymbols.compose(SVGRendererClass);\n if (pushUnique(composed, 'Map.Navigation')) {\n // Extend the Chart.render method to add zooming and panning\n MapNavigation_addEvent(MapChartClass, 'beforeRender', function () {\n // Render the plus and minus buttons. Doing this before the\n // shapes makes getBBox much quicker, at least in Chrome.\n this.mapNavigation = new MapNavigation(this);\n this.mapNavigation.update();\n });\n setOptions(MapNavigationDefaults);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Update the map navigation with new options. Calling this is the same as\n * calling `chart.update({ mapNavigation: {} })`.\n *\n * @function MapNavigation#update\n *\n * @param {Partial<Highcharts.MapNavigationOptions>} [options]\n * New options for the map navigation.\n */\n MapNavigation.prototype.update = function (options) {\n var _a;\n var mapNav = this,\n chart = mapNav.chart,\n navButtons = mapNav.navButtons,\n outerHandler = function (e) {\n this.handler.call(chart,\n e);\n stopEvent(e); // Stop default click event (#4444)\n };\n var navOptions = chart.options.mapNavigation;\n // Merge in new options in case of update, and register back to chart\n // options.\n if (options) {\n navOptions = chart.options.mapNavigation =\n MapNavigation_merge(chart.options.mapNavigation, options);\n }\n // Destroy buttons in case of dynamic update\n while (navButtons.length) {\n (_a = navButtons.pop()) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n if (!chart.renderer.forExport &&\n MapNavigation_pick(navOptions.enableButtons, navOptions.enabled)) {\n if (!mapNav.navButtonsGroup) {\n mapNav.navButtonsGroup = chart.renderer.g()\n .attr({\n zIndex: 7 // #4955, #8392, #20476\n })\n .add();\n }\n objectEach(navOptions.buttons, function (buttonOptions, n) {\n var _a;\n buttonOptions = MapNavigation_merge(navOptions.buttonOptions, buttonOptions);\n var attr = {\n padding: buttonOptions.padding\n };\n // Presentational\n if (!chart.styledMode && buttonOptions.theme) {\n MapNavigation_extend(attr, buttonOptions.theme);\n attr.style = MapNavigation_merge(buttonOptions.theme.style, buttonOptions.style // #3203\n );\n }\n var text = buttonOptions.text,\n _b = buttonOptions.width,\n width = _b === void 0 ? 0 : _b,\n _c = buttonOptions.height,\n height = _c === void 0 ? 0 : _c,\n _d = buttonOptions.padding,\n padding = _d === void 0 ? 0 : _d;\n var button = chart.renderer\n .button(\n // Display the text from options only if it is not plus\n // or minus\n (text !== '+' && text !== '-' && text) || '', 0, 0, outerHandler, attr, void 0, void 0, void 0, n === 'zoomIn' ? 'topbutton' : 'bottombutton')\n .addClass('highcharts-map-navigation highcharts-' + {\n zoomIn: 'zoom-in',\n zoomOut: 'zoom-out'\n }[n])\n .attr({\n width: width,\n height: height,\n title: chart.options.lang[n],\n zIndex: 5\n })\n .add(mapNav.navButtonsGroup);\n // Add SVG paths for the default symbols, because the text\n // representation of + and - is not sharp and position is not\n // easy to control.\n if (text === '+' || text === '-') {\n // Mysterious +1 to achieve centering\n var w = width + 1,\n d = [\n ['M',\n padding + 3,\n padding + height / 2],\n ['L',\n padding + w - 3,\n padding + height / 2]\n ];\n if (text === '+') {\n d.push(['M', padding + w / 2, padding + 3], ['L', padding + w / 2, padding + height - 3]);\n }\n chart.renderer\n .path(d)\n .addClass('highcharts-button-symbol')\n .attr(chart.styledMode ? {} : {\n stroke: (_a = buttonOptions.style) === null || _a === void 0 ? void 0 : _a.color,\n 'stroke-width': 3,\n 'stroke-linecap': 'round'\n })\n .add(button);\n }\n button.handler = buttonOptions.onclick;\n // Stop double click event (#4444)\n MapNavigation_addEvent(button.element, 'dblclick', stopEvent);\n navButtons.push(button);\n MapNavigation_extend(buttonOptions, {\n width: button.width,\n height: 2 * (button.height || 0)\n });\n if (!chart.hasLoaded) {\n // Align it after the plotBox is known (#12776)\n var unbind_1 = MapNavigation_addEvent(chart, 'load',\n function () {\n // #15406: Make sure button hasnt been destroyed\n if (button.element) {\n button.align(buttonOptions,\n false,\n buttonOptions.alignTo);\n }\n unbind_1();\n });\n }\n else {\n button.align(buttonOptions, false, buttonOptions.alignTo);\n }\n });\n // Borrowed from overlapping-datalabels. Consider a shared module.\n var isIntersectRect_1 = function (box1,\n box2) { return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y); };\n // Check the mapNavigation buttons collision with exporting button\n // and translate the mapNavigation button if they overlap.\n var adjustMapNavBtn = function () {\n var _a;\n var expBtnBBox = (_a = chart.exportingGroup) === null || _a === void 0 ? void 0 : _a.getBBox();\n if (expBtnBBox) {\n var navBtnsBBox = mapNav.navButtonsGroup.getBBox();\n // If buttons overlap\n if (isIntersectRect_1(expBtnBBox, navBtnsBBox)) {\n // Adjust the mapNav buttons' position by translating\n // them above or below the exporting button\n var aboveExpBtn = -navBtnsBBox.y -\n navBtnsBBox.height + expBtnBBox.y - 5,\n belowExpBtn = expBtnBBox.y + expBtnBBox.height -\n navBtnsBBox.y + 5,\n mapNavVerticalAlign = (navOptions.buttonOptions &&\n navOptions.buttonOptions.verticalAlign);\n // If bottom aligned and adjusting the mapNav button\n // would translate it out of the plotBox, translate it\n // up instead of down\n mapNav.navButtonsGroup.attr({\n translateY: mapNavVerticalAlign === 'bottom' ?\n aboveExpBtn :\n belowExpBtn\n });\n }\n }\n };\n if (!chart.hasLoaded) {\n // Align it after the plotBox is known (#12776) and after the\n // hamburger button's position is known so they don't overlap\n // (#15782)\n MapNavigation_addEvent(chart, 'render', adjustMapNavBtn);\n }\n }\n this.updateEvents(navOptions);\n };\n /**\n * Update events, called internally from the update function. Add new event\n * handlers, or unbinds events if disabled.\n *\n * @function MapNavigation#updateEvents\n *\n * @param {Partial<Highcharts.MapNavigationOptions>} options\n * Options for map navigation.\n */\n MapNavigation.prototype.updateEvents = function (options) {\n var chart = this.chart;\n // Add the double click event\n if (MapNavigation_pick(options.enableDoubleClickZoom, options.enabled) ||\n options.enableDoubleClickZoomTo) {\n this.unbindDblClick = this.unbindDblClick || MapNavigation_addEvent(chart.container, 'dblclick', function (e) {\n chart.pointer.onContainerDblClick(e);\n });\n }\n else if (this.unbindDblClick) {\n // Unbind and set unbinder to undefined\n this.unbindDblClick = this.unbindDblClick();\n }\n // Add the mousewheel event\n if (MapNavigation_pick(options.enableMouseWheelZoom, options.enabled)) {\n this.unbindMouseWheel = this.unbindMouseWheel || MapNavigation_addEvent(chart.container, 'wheel', function (e) {\n var _a,\n _b;\n // Prevent scrolling when the pointer is over the element\n // with that class, for example anotation popup #12100.\n if (!chart.pointer.inClass(e.target, 'highcharts-no-mousewheel')) {\n var initialZoom = (_a = chart.mapView) === null || _a === void 0 ? void 0 : _a.zoom;\n chart.pointer.onContainerMouseWheel(e);\n // If the zoom level changed, prevent the default action\n // which is to scroll the page\n if (initialZoom !== ((_b = chart.mapView) === null || _b === void 0 ? void 0 : _b.zoom)) {\n stopEvent(e);\n }\n }\n return false;\n });\n }\n else if (this.unbindMouseWheel) {\n // Unbind and set unbinder to undefined\n this.unbindMouseWheel = this.unbindMouseWheel();\n }\n };\n return MapNavigation;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Maps_MapNavigation = (MapNavigation);\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/es5/es-modules/Series/ColorMapComposition.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\nvar columnProto = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column.prototype;\n\n\nvar ColorMapComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, ColorMapComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n/* *\n *\n * Composition\n *\n * */\nvar ColorMapComposition;\n(function (ColorMapComposition) {\n /* *\n *\n * Constants\n *\n * */\n ColorMapComposition.pointMembers = {\n dataLabelOnNull: true,\n moveToTopOnHover: true,\n isValid: pointIsValid\n };\n ColorMapComposition.seriesMembers = {\n colorKey: 'value',\n axisTypes: ['xAxis', 'yAxis', 'colorAxis'],\n parallelArrays: ['x', 'y', 'value'],\n pointArrayMap: ['value'],\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n colorAttribs: seriesColorAttribs,\n pointAttribs: columnProto.pointAttribs\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(SeriesClass) {\n var PointClass = SeriesClass.prototype.pointClass;\n ColorMapComposition_addEvent(PointClass, 'afterSetState', onPointAfterSetState);\n return SeriesClass;\n }\n ColorMapComposition.compose = compose;\n /**\n * Move points to the top of the z-index order when hovered.\n * @private\n */\n function onPointAfterSetState(e) {\n var point = this,\n series = point.series,\n renderer = series.chart.renderer;\n if (point.moveToTopOnHover && point.graphic) {\n if (!series.stateMarkerGraphic) {\n // Create a `use` element and add it to the end of the group,\n // which would make it appear on top of the other elements. This\n // deals with z-index without reordering DOM elements (#13049).\n series.stateMarkerGraphic = new (highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default())(renderer, 'use')\n .css({\n pointerEvents: 'none'\n })\n .add(point.graphic.parentGroup);\n }\n if ((e === null || e === void 0 ? void 0 : e.state) === 'hover') {\n // Give the graphic DOM element the same id as the Point\n // instance\n point.graphic.attr({\n id: this.id\n });\n series.stateMarkerGraphic.attr({\n href: \"\" + renderer.url + \"#\".concat(this.id),\n visibility: 'visible'\n });\n }\n else {\n series.stateMarkerGraphic.attr({\n href: ''\n });\n }\n }\n }\n /**\n * Color points have a value option that determines whether or not it is\n * a null point\n * @private\n */\n function pointIsValid() {\n return (this.value !== null &&\n this.value !== Infinity &&\n this.value !== -Infinity &&\n // Undefined is allowed, but NaN is not (#17279)\n (this.value === void 0 || !isNaN(this.value)));\n }\n /**\n * Get the color attributes to apply on the graphic\n * @private\n * @function Highcharts.colorMapSeriesMixin.colorAttribs\n * @param {Highcharts.Point} point\n * @return {Highcharts.SVGAttributes}\n * The SVG attributes\n */\n function seriesColorAttribs(point) {\n var ret = {};\n if (ColorMapComposition_defined(point.color) &&\n (!point.state || point.state === 'normal') // #15746\n ) {\n ret[this.colorProp || 'fill'] = point.color;\n }\n return ret;\n }\n})(ColorMapComposition || (ColorMapComposition = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Series_ColorMapComposition = (ColorMapComposition);\n\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/es5/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\nvar deg2rad = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).deg2rad;\n\n\nvar CenteredUtilities_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, CenteredUtilities_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, CenteredUtilities_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, CenteredUtilities_relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\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 var options = this.options,\n chart = this.chart,\n slicingRoom = 2 * (options.slicedOffset || 0),\n plotWidth = chart.plotWidth - 2 * slicingRoom,\n plotHeight = chart.plotHeight - 2 * slicingRoom,\n centerOption = options.center,\n smallestSize = Math.min(plotWidth,\n plotHeight),\n thickness = options.thickness;\n var handleSlicingRoom,\n size = options.size,\n innerSize = options.innerSize || 0,\n i,\n value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n var positions = [\n CenteredUtilities_pick(centerOption === null || centerOption === void 0 ? void 0 : centerOption[0], '50%'),\n CenteredUtilities_pick(centerOption === null || centerOption === void 0 ? void 0 : centerOption[1], '50%'),\n // Prevent from negative values\n CenteredUtilities_pick(size && size < 0 ? void 0 : options.size, '100%'),\n CenteredUtilities_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] = CenteredUtilities_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 (CenteredUtilities_isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n CenteredUtilities_fireEvent(this, 'afterGetCenter', { positions: 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 var startAngle = CenteredUtilities_isNumber(start) ? start : 0, // Must be a number\n endAngle = ((CenteredUtilities_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),\n 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 */ var 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// 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// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGRenderer\"],\"commonjs\":[\"highcharts\",\"SVGRenderer\"],\"commonjs2\":[\"highcharts\",\"SVGRenderer\"],\"root\":[\"Highcharts\",\"SVGRenderer\"]}\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_ = __webpack_require__(540);\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_);\n;// ./code/es5/es-modules/Core/Chart/MapChart.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\nvar MapChart_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\nvar getOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getOptions;\n\n\nvar MapChart_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, MapChart_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, MapChart_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n\n/* *\n *\n * Class\n *\n * */\n/**\n * Map-optimized chart. Use {@link Highcharts.Chart|Chart} for common charts.\n *\n * @requires modules/map\n *\n * @class\n * @name Highcharts.MapChart\n * @extends Highcharts.Chart\n */\nvar MapChart = /** @class */ (function (_super) {\n MapChart_extends(MapChart, _super);\n function MapChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initializes the chart. The constructor's arguments are passed on\n * directly.\n *\n * @function Highcharts.MapChart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.MapChart#event:init\n * @emits Highcharts.MapChart#event:afterInit\n */\n MapChart.prototype.init = function (userOptions, callback) {\n var defaultCreditsOptions = getOptions().credits;\n var options = MapChart_merge({\n chart: {\n panning: {\n enabled: true,\n type: 'xy'\n },\n type: 'map'\n },\n credits: {\n mapText: MapChart_pick(defaultCreditsOptions.mapText, ' \\u00a9 <a href=\"{geojson.copyrightUrl}\">' +\n '{geojson.copyrightShort}</a>'),\n mapTextFull: MapChart_pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')\n },\n mapView: {}, // Required to enable Chart.mapView\n tooltip: {\n followTouchMove: false\n }\n },\n userOptions // User's options\n );\n _super.prototype.init.call(this, options, callback);\n };\n /**\n * Highcharts Maps only. Zoom in or out of the map. See also\n * {@link Point#zoomTo}. See {@link Chart#fromLatLonToPoint} for how to get\n * the `centerX` and `centerY` parameters for a geographic location.\n *\n * Deprecated as of v9.3 in favor of [MapView.zoomBy](https://api.highcharts.com/class-reference/Highcharts.MapView#zoomBy).\n *\n * @deprecated\n * @function Highcharts.Chart#mapZoom\n *\n * @param {number} [howMuch]\n * How much to zoom the map. Values less than 1 zooms in. 0.5 zooms\n * in to half the current view. 2 zooms to twice the current view. If\n * omitted, the zoom is reset.\n *\n * @param {number} [xProjected]\n * The projected x position to keep stationary when zooming, if\n * available space.\n *\n * @param {number} [yProjected]\n * The projected y position to keep stationary when zooming, if\n * available space.\n *\n * @param {number} [chartX]\n * Keep this chart position stationary if possible. This is used for\n * example in `mousewheel` events, where the area under the mouse\n * should be fixed as we zoom in.\n *\n * @param {number} [chartY]\n * Keep this chart position stationary if possible.\n */\n MapChart.prototype.mapZoom = function (howMuch, xProjected, yProjected, chartX, chartY) {\n if (this.mapView) {\n if (MapChart_isNumber(howMuch)) {\n // Compliance, mapView.zoomBy uses different values\n howMuch = Math.log(howMuch) / Math.log(0.5);\n }\n this.mapView.zoomBy(howMuch, MapChart_isNumber(xProjected) && MapChart_isNumber(yProjected) ?\n this.mapView.projection.inverse([xProjected, yProjected]) :\n void 0, MapChart_isNumber(chartX) && MapChart_isNumber(chartY) ?\n [chartX, chartY] :\n void 0);\n }\n };\n MapChart.prototype.update = function (options) {\n var _a;\n // Calculate and set the recommended map view if map option is set\n if (options.chart && 'map' in options.chart) {\n (_a = this.mapView) === null || _a === void 0 ? void 0 : _a.recommendMapView(this, __spreadArray([\n options.chart.map\n ], (this.options.series || []).map(function (s) { return s.mapData; }), true), true);\n }\n _super.prototype.update.apply(this, arguments);\n };\n return MapChart;\n}((highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default())));\n/* *\n *\n * Class Namespace\n *\n * */\n(function (MapChart) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * Contains all loaded map data for Highmaps.\n *\n * @requires modules/map\n *\n * @name Highcharts.maps\n * @type {Record<string,*>}\n */\n MapChart.maps = {};\n /* *\n *\n * Functions\n *\n * */\n /**\n * The factory function for creating new map charts. Creates a new {@link\n * Highcharts.MapChart|MapChart} object with different default options than\n * the basic Chart.\n *\n * @requires modules/map\n *\n * @function Highcharts.mapChart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure as described in the\n * [options reference](https://api.highcharts.com/highstock).\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * A function to execute when the chart object is finished\n * rendering and all external image files (`chart.backgroundImage`,\n * `chart.plotBackgroundImage` etc) are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highstock/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.MapChart}\n * The chart object.\n */\n function mapChart(a, b, c) {\n return new MapChart(a, b, c);\n }\n MapChart.mapChart = mapChart;\n /**\n * Utility for reading SVG paths directly.\n *\n * @requires modules/map\n *\n * @function Highcharts.splitPath\n *\n * @param {string|Array<(string|number)>} path\n * Path to split.\n *\n * @return {Highcharts.SVGPathArray}\n * Splitted SVG path\n */\n function splitPath(path) {\n var arr;\n if (typeof path === 'string') {\n path = path\n // Move letters apart\n .replace(/([A-Z])/gi, ' $1 ')\n // Trim\n .replace(/^\\s*/, '').replace(/\\s*$/, '');\n // Split on spaces and commas. The semicolon is bogus, designed to\n // circumvent string replacement in the pre-v7 assembler that built\n // specific styled mode files.\n var split = path.split(/[ ,;]+/);\n arr = split.map(function (item) {\n if (!/[A-Z]/i.test(item)) {\n return parseFloat(item);\n }\n return item;\n });\n }\n else {\n arr = path;\n }\n return highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default().prototype.pathToSegments(arr);\n }\n MapChart.splitPath = splitPath;\n})(MapChart || (MapChart = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Chart_MapChart = (MapChart);\n\n;// ./code/es5/es-modules/Maps/MapUtilities.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// Compute bounds from a path element\nvar boundsFromPath = function (path) {\n var x2 = -Number.MAX_VALUE,\n x1 = Number.MAX_VALUE,\n y2 = -Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n validBounds;\n path.forEach(function (seg) {\n var x = seg[seg.length - 2],\n y = seg[seg.length - 1];\n if (typeof x === 'number' &&\n typeof y === 'number') {\n x1 = Math.min(x1, x);\n x2 = Math.max(x2, x);\n y1 = Math.min(y1, y);\n y2 = Math.max(y2, y);\n validBounds = true;\n }\n });\n if (validBounds) {\n return { x1: x1, y1: y1, x2: x2, y2: y2 };\n }\n};\n/* *\n *\n * Default Export\n *\n * */\nvar MapUtilities = {\n boundsFromPath: boundsFromPath\n};\n/* harmony default export */ var Maps_MapUtilities = (MapUtilities);\n\n;// ./code/es5/es-modules/Series/Map/MapPoint.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\nvar MapPoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\nvar MapPoint_boundsFromPath = Maps_MapUtilities.boundsFromPath;\n\nvar ScatterPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.scatter.prototype.pointClass;\n\nvar MapPoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, MapPoint_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, MapPoint_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Class\n *\n * */\nvar MapPoint = /** @class */ (function (_super) {\n MapPoint_extends(MapPoint, _super);\n function MapPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Get the projected path based on the geometry. May also be called on\n * mapData options (not point instances), hence static.\n * @private\n */\n MapPoint.getProjectedPath = function (point, projection) {\n if (!point.projectedPath) {\n if (projection && point.geometry) {\n // Always true when given GeoJSON coordinates\n projection.hasCoordinates = true;\n point.projectedPath = projection.path(point.geometry);\n // SVG path given directly in point options\n }\n else {\n point.projectedPath = point.path;\n }\n }\n return point.projectedPath || [];\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extend the Point object to split paths.\n * @private\n */\n MapPoint.prototype.applyOptions = function (options, x) {\n var _a;\n var series = this.series,\n point = _super.prototype.applyOptions.call(this,\n options,\n x),\n joinBy = series.joinBy;\n if (series.mapData && series.mapMap) {\n var joinKey = joinBy[1],\n mapKey = _super.prototype.getNestedProperty.call(this,\n joinKey),\n mapPoint = typeof mapKey !== 'undefined' &&\n series.mapMap[mapKey];\n if (mapPoint) {\n // Copy over properties; #20231 prioritize point.name\n MapPoint_extend(point, __assign(__assign({}, mapPoint), { name: (_a = point.name) !== null && _a !== void 0 ? _a : mapPoint.name }));\n }\n else if (series.pointArrayMap.indexOf('value') !== -1) {\n point.value = point.value || null;\n }\n }\n return point;\n };\n /**\n * Get the bounds in terms of projected units\n * @private\n */\n MapPoint.prototype.getProjectedBounds = function (projection) {\n var path = MapPoint.getProjectedPath(this,\n projection),\n bounds = MapPoint_boundsFromPath(path),\n properties = this.properties,\n mapView = this.series.chart.mapView;\n if (bounds) {\n // Cache point bounding box for use to position data labels, bubbles\n // etc\n var propMiddleLon = properties && properties['hc-middle-lon'], propMiddleLat = properties && properties['hc-middle-lat'];\n if (mapView && MapPoint_isNumber(propMiddleLon) && MapPoint_isNumber(propMiddleLat)) {\n var projectedPoint = projection.forward([propMiddleLon,\n propMiddleLat]);\n bounds.midX = projectedPoint[0];\n bounds.midY = projectedPoint[1];\n }\n else {\n var propMiddleX = properties && properties['hc-middle-x'], propMiddleY = properties && properties['hc-middle-y'];\n bounds.midX = (bounds.x1 + (bounds.x2 - bounds.x1) * MapPoint_pick(this.middleX, MapPoint_isNumber(propMiddleX) ? propMiddleX : 0.5));\n var middleYFraction = MapPoint_pick(this.middleY,\n MapPoint_isNumber(propMiddleY) ? propMiddleY : 0.5);\n // No geographic geometry, only path given => flip\n if (!this.geometry) {\n middleYFraction = 1 - middleYFraction;\n }\n bounds.midY =\n bounds.y2 - (bounds.y2 - bounds.y1) * middleYFraction;\n }\n return bounds;\n }\n };\n /**\n * Stop the fade-out\n * @private\n */\n MapPoint.prototype.onMouseOver = function (e) {\n highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(this.colorInterval);\n if (\n // Valid...\n (!this.isNull && this.visible) ||\n // ... or interact anyway\n this.series.options.nullInteraction) {\n _super.prototype.onMouseOver.call(this, e);\n }\n else {\n // #3401 Tooltip doesn't hide when hovering over null points\n this.series.onMouseOut();\n }\n };\n MapPoint.prototype.setVisible = function (vis) {\n var method = vis ? 'show' : 'hide';\n this.visible = this.options.visible = !!vis;\n // Show and hide associated elements\n if (this.dataLabel) {\n this.dataLabel[method]();\n }\n // For invisible map points, render them as null points rather than\n // fully removing them. Makes more sense for color axes with data\n // classes.\n if (this.graphic) {\n this.graphic.attr(this.series.pointAttribs(this));\n }\n };\n /**\n * Highmaps only. Zoom in on the point using the global animation.\n *\n * @sample maps/members/point-zoomto/\n * Zoom to points from buttons\n *\n * @requires modules/map\n *\n * @function Highcharts.Point#zoomTo\n */\n MapPoint.prototype.zoomTo = function (animOptions) {\n var point = this,\n chart = point.series.chart,\n mapView = chart.mapView;\n var bounds = point.bounds;\n if (mapView && bounds) {\n var inset = MapPoint_isNumber(point.insetIndex) &&\n mapView.insets[point.insetIndex];\n if (inset) {\n // If in an inset, translate the bounds to pixels ...\n var px1 = inset.projectedUnitsToPixels({\n x: bounds.x1,\n y: bounds.y1\n }),\n px2 = inset.projectedUnitsToPixels({\n x: bounds.x2,\n y: bounds.y2\n }), \n // ... then back to projected units in the main mapView\n proj1 = mapView.pixelsToProjectedUnits({\n x: px1.x,\n y: px1.y\n }),\n proj2 = mapView.pixelsToProjectedUnits({\n x: px2.x,\n y: px2.y\n });\n bounds = {\n x1: proj1.x,\n y1: proj1.y,\n x2: proj2.x,\n y2: proj2.y\n };\n }\n mapView.fitToBounds(bounds, void 0, false);\n point.series.isDirty = true;\n chart.redraw(animOptions);\n }\n };\n return MapPoint;\n}(ScatterPoint));\nMapPoint_extend(MapPoint.prototype, {\n dataLabelOnNull: Series_ColorMapComposition.pointMembers.dataLabelOnNull,\n moveToTopOnHover: Series_ColorMapComposition.pointMembers.moveToTopOnHover,\n isValid: Series_ColorMapComposition.pointMembers.isValid\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Map_MapPoint = (MapPoint);\n\n;// ./code/es5/es-modules/Series/Map/MapSeriesDefaults.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\nvar MapSeriesDefaults_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n * API Options\n *\n * */\n/**\n * The map series is used for basic choropleth maps, where each map area has\n * a color based on its value.\n *\n * @sample maps/demo/all-maps/\n * Choropleth map\n *\n * @extends plotOptions.scatter\n * @excluding boostBlending, boostThreshold, dragDrop, cluster, marker\n * @product highmaps\n * @optionparent plotOptions.map\n *\n * @private\n */\nvar MapSeriesDefaults = {\n /**\n * Whether the MapView takes this series into account when computing the\n * default zoom and center of the map.\n *\n * @sample maps/series/affectsmapview/\n * US map with world map backdrop\n *\n * @since 10.0.0\n *\n * @private\n */\n affectsMapView: true,\n animation: false, // Makes the complex shapes slow\n dataLabels: {\n crop: false,\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n var value = this.point.value;\n return MapSeriesDefaults_isNumber(value) ?\n numberFormatter(value, -1) :\n (this.point.name || ''); // #20231\n },\n inside: true, // For the color\n overflow: false,\n padding: 0,\n verticalAlign: 'middle'\n },\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of\n * the map borders. Round means that borders are rounded in the ends and\n * bends.\n *\n * @sample maps/demo/mappoint-mapmarker/\n * Backdrop coastline with round linecap\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @since 10.3.3\n */\n linecap: 'round',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The color to apply to null points.\n *\n * In styled mode, the null point fill is set in the\n * `.highcharts-null-point` class.\n *\n * @sample maps/demo/all-areas-as-null/\n * Null color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n *\n * @private\n */\n nullColor: \"#f7f7f7\" /* Palette.neutralColor3 */,\n /**\n * Whether to allow pointer interaction like tooltips and mouse events\n * on null points.\n *\n * @type {boolean}\n * @since 4.2.7\n * @apioption plotOptions.map.nullInteraction\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true,\n pointFormat: '{point.name}: {point.value}<br/>'\n },\n /**\n * @ignore-option\n *\n * @private\n */\n turboThreshold: 0,\n /**\n * Whether all areas of the map defined in `mapData` should be rendered.\n * If `true`, areas which don't correspond to a data point, are rendered\n * as `null` points. If `false`, those areas are skipped.\n *\n * @sample maps/plotoptions/series-allareas-false/\n * All areas set to false\n *\n * @type {boolean}\n * @default true\n * @product highmaps\n * @apioption plotOptions.series.allAreas\n *\n * @private\n */\n allAreas: true,\n /**\n * The border color of the map areas.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highmaps} maps/plotoptions/series-border/\n * Borders demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highmaps\n * @apioption plotOptions.series.borderColor\n *\n * @private\n */\n borderColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The border width of each map area.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample maps/plotoptions/series-border/\n * Borders demo\n *\n * @type {number}\n * @default 1\n * @product highmaps\n * @apioption plotOptions.series.borderWidth\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @type {string}\n * @default value\n * @apioption plotOptions.map.colorKey\n */\n /**\n * What property to join the `mapData` to the value data. For example,\n * if joinBy is \"code\", the mapData items with a specific code is merged\n * into the data with the same code. For maps loaded from GeoJSON, the\n * keys may be held in each point's `properties` object.\n *\n * The joinBy option can also be an array of two values, where the first\n * points to a key in the `mapData`, and the second points to another\n * key in the `data`.\n *\n * When joinBy is `null`, the map items are joined by their position in\n * the array, which performs much better in maps with many data points.\n * This is the recommended option if you are printing more than a\n * thousand data points and have a backend that can preprocess the data\n * into a parallel array of the mapData.\n *\n * @sample maps/plotoptions/series-border/\n * Joined by \"code\"\n * @sample maps/demo/geojson/\n * GeoJSON joined by an array\n * @sample maps/series/joinby-null/\n * Simple data joined by null\n *\n * @type {string|Array<string>}\n * @default hc-key\n * @product highmaps\n * @apioption plotOptions.series.joinBy\n *\n * @private\n */\n joinBy: 'hc-key',\n /**\n * Define the z index of the series.\n *\n * @type {number}\n * @product highmaps\n * @apioption plotOptions.series.zIndex\n */\n /**\n * @apioption plotOptions.series.states\n *\n * @private\n */\n states: {\n /**\n * @apioption plotOptions.series.states.hover\n */\n hover: {\n /** @ignore-option */\n halo: void 0,\n /**\n * The color of the shape in this state.\n *\n * @sample maps/plotoptions/series-states-hover/\n * Hover options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highmaps\n * @apioption plotOptions.series.states.hover.color\n */\n /**\n * The border color of the point in this state.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highmaps\n * @apioption plotOptions.series.states.hover.borderColor\n */\n borderColor: \"#666666\" /* Palette.neutralColor60 */,\n /**\n * The border width of the point in this state\n *\n * @type {number}\n * @product highmaps\n * @apioption plotOptions.series.states.hover.borderWidth\n */\n borderWidth: 2\n /**\n * The relative brightness of the point when hovered, relative\n * to the normal point color.\n *\n * @type {number}\n * @product highmaps\n * @default 0\n * @apioption plotOptions.series.states.hover.brightness\n */\n },\n /**\n * @apioption plotOptions.series.states.normal\n */\n normal: {\n /**\n * @productdesc {highmaps}\n * The animation adds some latency in order to reduce the effect\n * of flickering when hovering in and out of for example an\n * uneven coastline.\n *\n * @sample {highmaps} maps/plotoptions/series-states-animation-false/\n * No animation of fill color\n *\n * @apioption plotOptions.series.states.normal.animation\n */\n animation: true\n },\n /**\n * @apioption plotOptions.series.states.select\n */\n select: {\n /**\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default ${palette.neutralColor20}\n * @product highmaps\n * @apioption plotOptions.series.states.select.color\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */\n }\n },\n legendSymbol: 'rectangle'\n};\n/**\n * An array of objects containing a `geometry` or `path` definition and\n * optionally additional properties to join in the `data` as per the `joinBy`\n * option. GeoJSON and TopoJSON structures can also be passed directly into\n * `mapData`.\n *\n * @sample maps/demo/category-map/\n * Map data and joinBy\n * @sample maps/series/mapdata-multiple/\n * Multiple map sources\n *\n * @type {Array<Highcharts.SeriesMapDataOptions>|Highcharts.GeoJSON|Highcharts.TopoJSON}\n * @product highmaps\n * @apioption series.mapData\n */\n/**\n * A `map` series. If the [type](#series.map.type) option is not specified, it\n * is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.map\n * @excluding dataParser, dataURL, dragDrop, marker\n * @product highmaps\n * @apioption series.map\n */\n/**\n * An array of data points for the series. For the `map` series type, points can\n * 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 `value` options. 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 * `[hc-key, value]`. Example:\n * ```js\n * data: [\n * ['us-ny', 0],\n * ['us-mi', 5],\n * ['us-tx', 3],\n * ['us-ak', 5]\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.map.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * value: 6,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * value: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array<number|Array<string,(number|null)>|null|*>}\n * @product highmaps\n * @apioption series.map.data\n */\n/**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.map.colors](series.colors) collections, this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode, the `colors` or `series.colors` arrays are not\n * supported, and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.map.colors)\n *\n * @sample {highmaps} maps/plotoptions/mapline-colorbypoint-false/\n * Mapline colorByPoint set to false by default\n * @sample {highmaps} maps/plotoptions/mapline-colorbypoint-true/\n * Mapline colorByPoint set to true\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highmaps\n * @apioption plotOptions.map.colorByPoint\n */\n/**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.map.colorByPoint) is true.\n *\n * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n * @since 3.0\n * @product highmaps\n * @apioption plotOptions.map.colors\n */\n/**\n * Individual color for the point. By default the color is either used\n * to denote the value, or pulled from the global `colors` array.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highmaps\n * @apioption series.map.data.color\n */\n/**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample maps/series/data-datalabels/\n * Disable data labels for individual areas\n *\n * @type {Highcharts.DataLabelsOptions}\n * @product highmaps\n * @apioption series.map.data.dataLabels\n */\n/**\n * The `id` of a series in the [drilldown.series](#drilldown.series)\n * array to use for a drilldown for this point.\n *\n * @sample maps/demo/map-drilldown/\n * Basic drilldown\n *\n * @type {string}\n * @product highmaps\n * @apioption series.map.data.drilldown\n */\n/**\n * For map and mapline series types, the geometry of a point.\n *\n * To achieve a better separation between the structure and the data,\n * it is recommended to use `mapData` to define the geometry instead\n * of defining it on the data points themselves.\n *\n * The geometry object is compatible to that of a `feature` in GeoJSON, so\n * features of GeoJSON can be passed directly into the `data`, optionally\n * after first filtering and processing it.\n *\n * For pre-projected maps (like GeoJSON maps from our\n * [map collection](https://code.highcharts.com/mapdata/)), user has to specify\n * coordinates in `projectedUnits` for geometry type other than `Point`,\n * instead of `[longitude, latitude]`.\n *\n * @sample maps/series/mappoint-line-geometry/\n * Map point and line geometry\n * @sample maps/series/geometry-types/\n * Geometry types\n *\n * @type {Object}\n * @since 9.3.0\n * @product highmaps\n * @apioption series.map.data.geometry\n */\n/**\n * The geometry type. Can be one of `LineString`, `Polygon`, `MultiLineString`\n * or `MultiPolygon`.\n *\n * @sample maps/series/geometry-types/\n * Geometry types\n *\n * @declare Highcharts.MapGeometryTypeValue\n * @type {string}\n * @since 9.3.0\n * @product highmaps\n * @validvalue [\"LineString\", \"Polygon\", \"MultiLineString\", \"MultiPolygon\"]\n * @apioption series.map.data.geometry.type\n */\n/**\n * The geometry coordinates in terms of arrays of `[longitude, latitude]`, or\n * a two dimensional array of the same. The dimensionality must comply with the\n * `type`.\n *\n * @type {Array<LonLatArray>|Array<Array<LonLatArray>>}\n * @since 9.3.0\n * @product highmaps\n * @apioption series.map.data.geometry.coordinates\n */\n/**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample maps/series/data-id/\n * Highlight a point by id\n *\n * @type {string}\n * @product highmaps\n * @apioption series.map.data.id\n */\n/**\n * When data labels are laid out on a map, Highmaps runs a simplified\n * algorithm to detect collision. When two labels collide, the one with\n * the lowest rank is hidden. By default the rank is computed from the\n * area.\n *\n * @type {number}\n * @product highmaps\n * @apioption series.map.data.labelrank\n */\n/**\n * The relative mid point of an area, used to place the data label.\n * Ranges from 0 to 1\\. When `mapData` is used, middleX can be defined\n * there.\n *\n * @type {number}\n * @default 0.5\n * @product highmaps\n * @apioption series.map.data.middleX\n */\n/**\n * The relative mid point of an area, used to place the data label.\n * Ranges from 0 to 1\\. When `mapData` is used, middleY can be defined\n * there.\n *\n * @type {number}\n * @default 0.5\n * @product highmaps\n * @apioption series.map.data.middleY\n */\n/**\n * The name of the point as shown in the legend, tooltip, dataLabel\n * etc.\n *\n * @sample maps/series/data-datalabels/\n * Point names\n *\n * @type {string}\n * @product highmaps\n * @apioption series.map.data.name\n */\n/**\n * For map and mapline series types, the SVG path for the shape. For\n * compatibility with old IE, not all SVG path definitions are supported,\n * but M, L and C operators are safe.\n *\n * To achieve a better separation between the structure and the data,\n * it is recommended to use `mapData` to define that paths instead\n * of defining them on the data points themselves.\n *\n * For providing true geographical shapes based on longitude and latitude, use\n * the `geometry` option instead.\n *\n * @sample maps/series/data-path/\n * Paths defined in data\n *\n * @type {string}\n * @product highmaps\n * @apioption series.map.data.path\n */\n/**\n * The numeric value of the data point.\n *\n * @type {number|null}\n * @product highmaps\n * @apioption series.map.data.value\n */\n/**\n * Individual point events\n *\n * @extends plotOptions.series.point.events\n * @product highmaps\n * @apioption series.map.data.events\n */\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Map_MapSeriesDefaults = (MapSeriesDefaults);\n\n;// ./code/es5/es-modules/Maps/MapViewDefaults.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 * The `mapView` options control the initial view of the chart, and how\n * projection is set up for raw geoJSON maps (beta as of v9.3).\n *\n * To set the view dynamically after chart generation, see\n * [mapView.setView](/class-reference/Highcharts.MapView#setView).\n *\n * @since 9.3.0\n * @product highmaps\n * @optionparent mapView\n */\nvar MapViewDefaults = {\n /**\n * The center of the map in terms of longitude and latitude. For\n * preprojected maps (like the GeoJSON files in Map Collection v1.x),\n * the units are projected x and y units.\n *\n * @sample {highmaps} maps/mapview/center-zoom\n * Custom view of a world map\n * @sample {highmaps} maps/mapview/get-view\n * Report the current view of a preprojected map\n *\n * @type {Highcharts.LonLatArray}\n * @default [0, 0]\n */\n center: [0, 0],\n /**\n * Fit the map to a geometry object consisting of individual points or\n * polygons. This is practical for responsive maps where we want to\n * focus on a specific area regardless of map size - unlike setting\n * `center` and `zoom`, where the view doesn't scale with different map\n * sizes.\n *\n * The geometry can be combined with the [padding](#mapView.padding)\n * option to avoid touching the edges of the chart.\n *\n * @sample maps/mapview/fittogeometry\n * Fitting the view to geometries\n *\n * @type {object}\n * @since 10.3.3\n */\n fitToGeometry: void 0,\n /**\n * Prevents the end user from zooming too far in on the map. See\n * [zoom](#mapView.zoom).\n *\n * @sample {highmaps} maps/mapview/maxzoom\n * Prevent zooming in too far\n *\n * @type {number|undefined}\n */\n maxZoom: void 0,\n /**\n * The padding inside the plot area when auto fitting to the map bounds.\n * A number signifies pixels, and a percentage is relative to the plot\n * area size.\n *\n * An array sets individual padding for the sides in the order [top,\n * right, bottom, left].\n *\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color\n * Visible plot area and percentage padding\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Padding for individual sides\n *\n * @type {number|string|Array<number|string>}\n */\n padding: 0,\n /**\n * The projection options allow applying client side projection to a map\n * given in geographic coordinates, typically from TopoJSON or GeoJSON.\n *\n * @sample maps/demo/projection-explorer\n * Projection explorer\n * @sample maps/demo/topojson-projection\n * Orthographic projection\n * @sample maps/mapview/projection-custom-proj4js\n * Custom UTM projection definition\n * @sample maps/mapview/projection-custom-d3geo\n * Custom Robinson projection definition\n *\n * @type {object}\n */\n projection: {\n /**\n * Projection name. Built-in projections are `EqualEarth`,\n * `LambertConformalConic`, `Miller`, `Orthographic` and `WebMercator`.\n *\n * @sample maps/demo/projection-explorer\n * Projection explorer\n * @sample maps/mapview/projection-custom-proj4js\n * Custom UTM projection definition\n * @sample maps/mapview/projection-custom-d3geo\n * Custom Robinson projection definition\n * @sample maps/demo/topojson-projection\n * Orthographic projection\n *\n * @type {string}\n */\n name: void 0,\n /**\n * The two standard parallels that define the map layout in conic\n * projections, like the LambertConformalConic projection. If only\n * one number is given, the second parallel will be the same as the\n * first.\n *\n * @sample maps/mapview/projection-parallels\n * LCC projection with parallels\n * @sample maps/demo/projection-explorer\n * Projection explorer\n *\n * @type {Array<number>}\n */\n parallels: void 0,\n /**\n * Rotation of the projection in terms of degrees `[lambda, phi,\n * gamma]`. When given, a three-axis spherical rotation is be applied\n * to the globe prior to the projection.\n *\n * * `lambda` shifts the longitudes by the given value.\n * * `phi` shifts the latitudes by the given value. Can be omitted.\n * * `gamma` applies a _roll_. Can be omitted.\n *\n * @sample maps/demo/projection-explorer\n * Projection explorer\n * @sample maps/mapview/projection-america-centric\n * America-centric world map\n */\n rotation: void 0\n },\n /**\n * The zoom level of a map. Higher zoom levels means more zoomed in. An\n * increase of 1 zooms in to a quarter of the viewed area (half the\n * width and height). Defaults to fitting to the map bounds.\n *\n * In a `WebMercator` projection, a zoom level of 0 represents\n * the world in a 256x256 pixel square. This is a common concept for WMS\n * tiling software.\n *\n * @sample {highmaps} maps/mapview/center-zoom\n * Custom view of a world map\n * @sample {highmaps} maps/mapview/get-view\n * Report the current view of a preprojected map\n *\n * @type {number}\n */\n zoom: void 0,\n /**\n * Generic options for the placement and appearance of map insets like\n * non-contiguous territories.\n *\n * @since 10.0.0\n * @product highmaps\n * @optionparent mapView.insetOptions\n */\n insetOptions: {\n /**\n * The border color of the insets.\n *\n * @sample maps/mapview/insetoptions-border\n * Inset border options\n *\n * @type {Highcharts.ColorType}\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The pixel border width of the insets.\n *\n * @sample maps/mapview/insetoptions-border\n * Inset border options\n */\n borderWidth: 1,\n /**\n * The padding of the insets. Can be either a number of pixels, a\n * percentage string, or an array of either. If an array is given, it\n * sets the top, right, bottom, left paddings respectively.\n *\n * @type {number|string|Array<number|string>}\n */\n padding: '10%',\n /**\n * What coordinate system the `field` and `borderPath` should relate to.\n * If `plotBox`, they will be fixed to the plot box and responsively\n * move in relation to the main map. If `mapBoundingBox`, they will be\n * fixed to the map bounding box, which is constant and centered in\n * different chart sizes and ratios.\n *\n * @validvalue [\"plotBox\", \"mapBoundingBox\"]\n */\n relativeTo: 'mapBoundingBox',\n /**\n * The individual MapView insets, typically used for non-contiguous\n * areas of a country. Each item inherits from the generic\n * `insetOptions`.\n *\n * Some of the TopoJSON files of the [Highcharts Map\n * Collection](https://code.highcharts.com/mapdata/) include a property\n * called `hc-recommended-mapview`, and some of these include insets. In\n * order to override the recommended inset options, an inset option with\n * a matching id can be applied, and it will be merged into the embedded\n * settings.\n *\n * @sample maps/mapview/insets-extended\n * Extending the embedded insets\n * @sample maps/mapview/insets-complete\n * Complete inset config from scratch\n *\n * @extends mapView.insetOptions\n * @type Array<Object>\n * @product highmaps\n * @apioption mapView.insets\n */\n /**\n * A geometry object of type `MultiLineString` defining the border path\n * of the inset in terms of `units`. If undefined, a border is rendered\n * around the `field` geometry. It is recommended that the `borderPath`\n * partly follows the outline of the `field` in order to make pointer\n * positioning consistent.\n *\n * @sample maps/mapview/insets-complete\n * Complete inset config with `borderPath`\n *\n * @product highmaps\n * @type {Object|undefined}\n * @apioption mapView.insets.borderPath\n */\n /**\n * A geometry object of type `Polygon` defining where in the chart the\n * inset should be rendered, in terms of `units` and relative to the\n * `relativeTo` setting. If a `borderPath` is omitted, a border is\n * rendered around the field. If undefined, the inset is rendered in the\n * full plot area.\n *\n * @sample maps/mapview/insets-extended\n * Border path emitted, field is rendered\n *\n * @product highmaps\n * @type {object|undefined}\n * @apioption mapView.insets.field\n */\n /**\n * A geometry object of type `Polygon` encircling the shapes that should\n * be rendered in the inset, in terms of geographic coordinates.\n * Geometries within this geometry are removed from the default map view\n * and rendered in the inset.\n *\n * @sample maps/mapview/insets-complete\n * Complete inset config with `geoBounds`\n *\n * @product highmaps\n * @type {object}\n * @apioption mapView.insets.geoBounds\n */\n /**\n * The id of the inset, used for internal reference.\n *\n * @sample maps/mapview/insets-extended\n * Extending recommended insets by id\n *\n * @product highmaps\n * @type {string}\n * @apioption mapView.insets.id\n */\n /**\n * The projection options for the inset.\n *\n * @product highmaps\n * @type {Object}\n * @extends mapView.projection\n * @apioption mapView.insets.projection\n */\n /**\n * What units to use for the `field` and `borderPath` geometries. If\n * `percent` (default), they relate to the box given in `relativeTo`. If\n * `pixels`, they are absolute values.\n *\n * @validvalue [\"percent\", \"pixels\"]\n */\n units: 'percent'\n }\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Maps_MapViewDefaults = (MapViewDefaults);\n\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/es5/es-modules/Maps/GeoJSONComposition.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\nvar win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\nvar format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, GeoJSONComposition_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, GeoJSONComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, GeoJSONComposition_wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n * Composition\n *\n * */\nvar GeoJSONComposition;\n(function (GeoJSONComposition) {\n /* *\n *\n * Functions\n *\n * */\n /**\n * Deprecated. Use `MapView.lonLatToProjectedUnits` instead.\n *\n * @deprecated\n *\n * @requires modules/map\n *\n * @function Highcharts.Chart#fromLatLonToPoint\n *\n * @param {Highcharts.MapLonLatObject} lonLat\n * Coordinates.\n *\n * @return {Highcharts.ProjectedXY}\n * X and Y coordinates in terms of projected values\n */\n function chartFromLatLonToPoint(lonLat) {\n return this.mapView && this.mapView.lonLatToProjectedUnits(lonLat);\n }\n /**\n * Deprecated. Use `MapView.projectedUnitsToLonLat` instead.\n *\n * @deprecated\n *\n * @requires modules/map\n *\n * @function Highcharts.Chart#fromPointToLatLon\n *\n * @param {Highcharts.Point|Highcharts.ProjectedXY} point\n * A `Point` instance or anything containing `x` and `y` properties\n * with numeric values.\n *\n * @return {Highcharts.MapLonLatObject|undefined}\n * An object with `lat` and `lon` properties.\n */\n function chartFromPointToLatLon(point) {\n return this.mapView && this.mapView.projectedUnitsToLonLat(point);\n }\n /**\n * Highcharts Maps only. Get point from latitude and longitude using\n * specified transform definition.\n *\n * @requires modules/map\n *\n * @sample maps/series/latlon-transform/\n * Use specific transformation for lat/lon\n *\n * @function Highcharts.Chart#transformFromLatLon\n *\n * @param {Highcharts.MapLonLatObject} latLon\n * A latitude/longitude object.\n *\n * @param {*} transform\n * The transform definition to use as explained in the\n * {@link https://www.highcharts.com/docs/maps/latlon|documentation}.\n *\n * @return {ProjectedXY}\n * An object with `x` and `y` properties.\n */\n function chartTransformFromLatLon(latLon, transform) {\n /**\n * Allows to manually load the proj4 library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @product highmaps\n * @apioption chart.proj4\n */\n var proj4 = this.options.chart.proj4 || win.proj4;\n if (!proj4) {\n error(21, false, this);\n return;\n }\n var _a = transform.jsonmarginX,\n jsonmarginX = _a === void 0 ? 0 : _a,\n _b = transform.jsonmarginY,\n jsonmarginY = _b === void 0 ? 0 : _b,\n _c = transform.jsonres,\n jsonres = _c === void 0 ? 1 : _c,\n _d = transform.scale,\n scale = _d === void 0 ? 1 : _d,\n _e = transform.xoffset,\n xoffset = _e === void 0 ? 0 : _e,\n _f = transform.xpan,\n xpan = _f === void 0 ? 0 : _f,\n _g = transform.yoffset,\n yoffset = _g === void 0 ? 0 : _g,\n _h = transform.ypan,\n ypan = _h === void 0 ? 0 : _h;\n var projected = proj4(transform.crs,\n [latLon.lon,\n latLon.lat]),\n cosAngle = transform.cosAngle ||\n (transform.rotation && Math.cos(transform.rotation)),\n sinAngle = transform.sinAngle ||\n (transform.rotation && Math.sin(transform.rotation)),\n rotated = transform.rotation ? [\n projected[0] * cosAngle + projected[1] * sinAngle,\n -projected[0] * sinAngle + projected[1] * cosAngle\n ] : projected;\n return {\n x: ((rotated[0] - xoffset) * scale + xpan) * jsonres + jsonmarginX,\n y: -(((yoffset - rotated[1]) * scale + ypan) * jsonres - jsonmarginY)\n };\n }\n /**\n * Highcharts Maps only. Get latLon from point using specified transform\n * definition. The method returns an object with the numeric properties\n * `lat` and `lon`.\n *\n * @requires modules/map\n *\n * @sample maps/series/latlon-transform/\n * Use specific transformation for lat/lon\n *\n * @function Highcharts.Chart#transformToLatLon\n *\n * @param {Highcharts.Point|Highcharts.ProjectedXY} point\n * A `Point` instance, or any object containing the properties `x`\n * and `y` with numeric values.\n *\n * @param {*} transform\n * The transform definition to use as explained in the\n * {@link https://www.highcharts.com/docs/maps/latlon|documentation}.\n *\n * @return {Highcharts.MapLonLatObject|undefined}\n * An object with `lat` and `lon` properties.\n */\n function chartTransformToLatLon(point, transform) {\n var proj4 = this.options.chart.proj4 || win.proj4;\n if (!proj4) {\n error(21, false, this);\n return;\n }\n if (point.y === null) {\n return;\n }\n var _a = transform.jsonmarginX,\n jsonmarginX = _a === void 0 ? 0 : _a,\n _b = transform.jsonmarginY,\n jsonmarginY = _b === void 0 ? 0 : _b,\n _c = transform.jsonres,\n jsonres = _c === void 0 ? 1 : _c,\n _d = transform.scale,\n scale = _d === void 0 ? 1 : _d,\n _e = transform.xoffset,\n xoffset = _e === void 0 ? 0 : _e,\n _f = transform.xpan,\n xpan = _f === void 0 ? 0 : _f,\n _g = transform.yoffset,\n yoffset = _g === void 0 ? 0 : _g,\n _h = transform.ypan,\n ypan = _h === void 0 ? 0 : _h;\n var normalized = {\n x: ((point.x - jsonmarginX) / jsonres - xpan) / scale + xoffset,\n y: ((point.y - jsonmarginY) / jsonres + ypan) / scale + yoffset\n }, cosAngle = transform.cosAngle ||\n (transform.rotation && Math.cos(transform.rotation)), sinAngle = transform.sinAngle ||\n (transform.rotation && Math.sin(transform.rotation)), \n // Note: Inverted sinAngle to reverse rotation direction\n projected = proj4(transform.crs, 'WGS84', transform.rotation ? {\n x: normalized.x * cosAngle + normalized.y * -sinAngle,\n y: normalized.x * sinAngle + normalized.y * cosAngle\n } : normalized);\n return { lat: projected.y, lon: projected.x };\n }\n /** @private */\n function compose(ChartClass) {\n var chartProto = ChartClass.prototype;\n if (!chartProto.transformFromLatLon) {\n chartProto.fromLatLonToPoint = chartFromLatLonToPoint;\n chartProto.fromPointToLatLon = chartFromPointToLatLon;\n chartProto.transformFromLatLon = chartTransformFromLatLon;\n chartProto.transformToLatLon = chartTransformToLatLon;\n GeoJSONComposition_wrap(chartProto, 'addCredits', wrapChartAddCredit);\n }\n }\n GeoJSONComposition.compose = compose;\n /**\n * Highcharts Maps only. Restructure a GeoJSON or TopoJSON object in\n * preparation to be read directly by the\n * {@link https://api.highcharts.com/highmaps/plotOptions.series.mapData|series.mapData}\n * option. The object will be broken down to fit a specific Highcharts type,\n * either `map`, `mapline` or `mappoint`. Meta data in GeoJSON's properties\n * object will be copied directly over to {@link Point.properties} in\n * Highcharts Maps.\n *\n * @requires modules/map\n *\n * @sample maps/demo/geojson/ Simple areas\n * @sample maps/demo/mapline-mappoint/ Multiple types\n * @sample maps/series/mapdata-multiple/ Multiple map sources\n *\n * @function Highcharts.geojson\n *\n * @param {Highcharts.GeoJSON|Highcharts.TopoJSON} json\n * The GeoJSON or TopoJSON structure to parse, represented as a\n * JavaScript object.\n *\n * @param {string} [hType=map]\n * The Highcharts Maps series type to prepare for. Setting \"map\" will\n * return GeoJSON polygons and multipolygons. Setting \"mapline\" will\n * return GeoJSON linestrings and multilinestrings. Setting\n * \"mappoint\" will return GeoJSON points and multipoints.\n *\n *\n * @return {Array<*>} An object ready for the `mapData` option.\n */\n function geojson(json, hType, series) {\n var _a,\n _b;\n if (hType === void 0) { hType = 'map'; }\n var mapData = [];\n var geojson = json.type === 'Topology' ? topo2geo(json) : json,\n features = geojson.features;\n for (var i = 0, iEnd = features.length; i < iEnd; ++i) {\n var feature = features[i],\n geometry = feature.geometry || {},\n type = geometry.type,\n coordinates = geometry.coordinates,\n properties = feature.properties;\n var pointOptions = void 0;\n if ((hType === 'map' || hType === 'mapbubble') &&\n (type === 'Polygon' || type === 'MultiPolygon')) {\n if (coordinates.length) {\n pointOptions = { geometry: { coordinates: coordinates, type: type } };\n }\n }\n else if (hType === 'mapline' &&\n (type === 'LineString' ||\n type === 'MultiLineString')) {\n if (coordinates.length) {\n pointOptions = { geometry: { coordinates: coordinates, type: type } };\n }\n }\n else if (hType === 'mappoint' && type === 'Point') {\n if (coordinates.length) {\n pointOptions = { geometry: { coordinates: coordinates, type: type } };\n }\n }\n if (pointOptions) {\n var name_1 = properties && (properties.name || properties.NAME),\n lon = properties && properties.lon,\n lat = properties && properties.lat;\n mapData.push(GeoJSONComposition_extend(pointOptions, {\n lat: typeof lat === 'number' ? lat : void 0,\n lon: typeof lon === 'number' ? lon : void 0,\n name: typeof name_1 === 'string' ? name_1 : void 0,\n /**\n * In Highcharts Maps, when data is loaded from GeoJSON, the\n * GeoJSON item's properies are copied over here.\n *\n * @requires modules/map\n * @name Highcharts.Point#properties\n * @type {*}\n */\n properties: properties\n }));\n }\n }\n // Create a credits text that includes map source, to be picked up in\n // Chart.addCredits\n if (series && geojson.copyrightShort) {\n series.chart.mapCredits = format((_a = series.chart.options.credits) === null || _a === void 0 ? void 0 : _a.mapText, { geojson: geojson });\n series.chart.mapCreditsFull = format((_b = series.chart.options.credits) === null || _b === void 0 ? void 0 : _b.mapTextFull, { geojson: geojson });\n }\n return mapData;\n }\n GeoJSONComposition.geojson = geojson;\n /**\n * Convert a TopoJSON topology to GeoJSON. By default the first object is\n * handled.\n * Based on https://github.com/topojson/topojson-specification\n */\n function topo2geo(topology, objectName) {\n // Decode first object/feature as default\n if (!objectName) {\n objectName = Object.keys(topology.objects)[0];\n }\n var obj = topology.objects[objectName];\n // Already decoded with the same title => return cache\n if (obj['hc-decoded-geojson'] &&\n obj['hc-decoded-geojson'].title === topology.title) {\n return obj['hc-decoded-geojson'];\n }\n // Do the initial transform\n var arcsArray = topology.arcs;\n if (topology.transform) {\n var arcs = topology.arcs,\n _a = topology.transform,\n scale = _a.scale,\n translate = _a.translate;\n var positionArray = void 0,\n x = void 0,\n y = void 0;\n arcsArray = [];\n for (var i = 0, iEnd = arcs.length; i < iEnd; ++i) {\n var positions = arcs[i];\n arcsArray.push(positionArray = []);\n x = 0;\n y = 0;\n for (var j = 0, jEnd = positions.length; j < jEnd; ++j) {\n positionArray.push([\n (x += positions[j][0]) * scale[0] + translate[0],\n (y += positions[j][1]) * scale[1] + translate[1]\n ]);\n }\n }\n }\n // Recurse down any depth of multi-dimensional arrays of arcs and insert\n // the coordinates\n var arcsToCoordinates = function (arcs) {\n if (typeof arcs[0] === 'number') {\n return arcs.reduce(function (coordinates,\n arcNo,\n i) {\n var arc = arcNo < 0 ? arcsArray[~arcNo] : arcsArray[arcNo];\n // The first point of an arc is always identical to the last\n // point of the previes arc, so slice it off to save further\n // processing.\n if (arcNo < 0) {\n arc = arc.slice(0, i === 0 ? arc.length : arc.length - 1);\n arc.reverse();\n }\n else if (i) {\n arc = arc.slice(1);\n }\n return coordinates.concat(arc);\n }, []);\n }\n return arcs.map(arcsToCoordinates);\n };\n var geometries = obj.geometries,\n features = [];\n for (var i = 0, iEnd = geometries.length; i < iEnd; ++i) {\n features.push({\n type: 'Feature',\n properties: geometries[i].properties,\n geometry: {\n type: geometries[i].type,\n coordinates: geometries[i].coordinates ||\n arcsToCoordinates(geometries[i].arcs)\n }\n });\n }\n var geojson = {\n type: 'FeatureCollection',\n copyright: topology.copyright,\n copyrightShort: topology.copyrightShort,\n copyrightUrl: topology.copyrightUrl,\n features: features,\n 'hc-recommended-mapview': obj['hc-recommended-mapview'],\n bbox: topology.bbox,\n title: topology.title\n };\n obj['hc-decoded-geojson'] = geojson;\n return geojson;\n }\n GeoJSONComposition.topo2geo = topo2geo;\n /**\n * Override addCredits to include map source by default.\n * @private\n */\n function wrapChartAddCredit(proceed, credits) {\n credits = GeoJSONComposition_merge(true, this.options.credits, credits);\n proceed.call(this, credits);\n // Add full map credits to hover\n if (this.credits && this.mapCreditsFull) {\n this.credits.attr({\n title: this.mapCreditsFull\n });\n }\n }\n})(GeoJSONComposition || (GeoJSONComposition = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Maps_GeoJSONComposition = (GeoJSONComposition);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * Represents the loose structure of a geographic JSON file.\n *\n * @interface Highcharts.GeoJSON\n */ /**\n* Full copyright note of the geographic data.\n* @name Highcharts.GeoJSON#copyright\n* @type {string|undefined}\n*/ /**\n* Short copyright note of the geographic data suitable for watermarks.\n* @name Highcharts.GeoJSON#copyrightShort\n* @type {string|undefined}\n*/ /**\n* Additional meta information based on the coordinate reference system.\n* @name Highcharts.GeoJSON#crs\n* @type {Highcharts.Dictionary<any>|undefined}\n*/ /**\n* Data sets of geographic features.\n* @name Highcharts.GeoJSON#features\n* @type {Array<Highcharts.GeoJSONFeature>}\n*/ /**\n* Map projections and transformations to be used when calculating between\n* lat/lon and chart values. Required for lat/lon support on maps. Allows\n* resizing, rotating, and moving portions of a map within its projected\n* coordinate system while still retaining lat/lon support. If using lat/lon\n* on a portion of the map that does not match a `hitZone`, the definition with\n* the key `default` is used.\n* @name Highcharts.GeoJSON#hc-transform\n* @type {Highcharts.Dictionary<Highcharts.GeoJSONTranslation>|undefined}\n*/ /**\n* Title of the geographic data.\n* @name Highcharts.GeoJSON#title\n* @type {string|undefined}\n*/ /**\n* Type of the geographic data. Type of an optimized map collection is\n* `FeatureCollection`.\n* @name Highcharts.GeoJSON#type\n* @type {string|undefined}\n*/ /**\n* Version of the geographic data.\n* @name Highcharts.GeoJSON#version\n* @type {string|undefined}\n*/\n/**\n * Data set of a geographic feature.\n * @interface Highcharts.GeoJSONFeature\n * @extends Highcharts.Dictionary<*>\n */ /**\n* Data type of the geographic feature.\n* @name Highcharts.GeoJSONFeature#type\n* @type {string}\n*/\n/**\n * Describes the map projection and transformations applied to a portion of\n * a map.\n * @interface Highcharts.GeoJSONTranslation\n */ /**\n* The coordinate reference system used to generate this portion of the map.\n* @name Highcharts.GeoJSONTranslation#crs\n* @type {string}\n*/ /**\n* Define the portion of the map that this definition applies to. Defined as a\n* GeoJSON polygon feature object, with `type` and `coordinates` properties.\n* @name Highcharts.GeoJSONTranslation#hitZone\n* @type {Highcharts.Dictionary<*>|undefined}\n*/ /**\n* Property for internal use for maps generated by Highsoft.\n* @name Highcharts.GeoJSONTranslation#jsonmarginX\n* @type {number|undefined}\n*/ /**\n* Property for internal use for maps generated by Highsoft.\n* @name Highcharts.GeoJSONTranslation#jsonmarginY\n* @type {number|undefined}\n*/ /**\n* Property for internal use for maps generated by Highsoft.\n* @name Highcharts.GeoJSONTranslation#jsonres\n* @type {number|undefined}\n*/ /**\n* Specifies clockwise rotation of the coordinates after the projection, but\n* before scaling and panning. Defined in radians, relative to the coordinate\n* system origin.\n* @name Highcharts.GeoJSONTranslation#rotation\n* @type {number|undefined}\n*/ /**\n* The scaling factor applied to the projected coordinates.\n* @name Highcharts.GeoJSONTranslation#scale\n* @type {number|undefined}\n*/ /**\n* Property for internal use for maps generated by Highsoft.\n* @name Highcharts.GeoJSONTranslation#xoffset\n* @type {number|undefined}\n*/ /**\n* X offset of projected coordinates after scaling.\n* @name Highcharts.GeoJSONTranslation#xpan\n* @type {number|undefined}\n*/ /**\n* Property for internal use for maps generated by Highsoft.\n* @name Highcharts.GeoJSONTranslation#yoffset\n* @type {number|undefined}\n*/ /**\n* Y offset of projected coordinates after scaling.\n* @name Highcharts.GeoJSONTranslation#ypan\n* @type {number|undefined}\n*/\n/**\n * Result object of a map transformation.\n *\n * @interface Highcharts.ProjectedXY\n */ /**\n* X coordinate in projected units.\n* @name Highcharts.ProjectedXY#x\n* @type {number}\n*/ /**\n* Y coordinate in projected units\n* @name Highcharts.ProjectedXY#y\n* @type {number}\n*/\n/**\n * A latitude/longitude object.\n *\n * @interface Highcharts.MapLonLatObject\n */ /**\n* The latitude.\n* @name Highcharts.MapLonLatObject#lat\n* @type {number}\n*/ /**\n* The longitude.\n* @name Highcharts.MapLonLatObject#lon\n* @type {number}\n*/\n/**\n * An array of longitude, latitude.\n *\n * @typedef {Array<number>} Highcharts.LonLatArray\n */\n/**\n * An array of GeoJSON or TopoJSON objects or strings used as map data for\n * series.\n *\n * @typedef {Array<*>|GeoJSON|TopoJSON|string} Highcharts.MapDataType\n */\n/**\n * A TopoJSON object, see description on the\n * [project's GitHub page](https://github.com/topojson/topojson).\n *\n * @typedef {Object} Highcharts.TopoJSON\n */\n''; // Detach doclets above\n\n;// ./code/es5/es-modules/Core/Geometry/GeometryUtilities.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Namespace\n *\n * */\nvar GeometryUtilities;\n(function (GeometryUtilities) {\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculates the center between a list of points.\n *\n * @private\n *\n * @param {Array<Highcharts.PositionObject>} points\n * A list of points to calculate the center of.\n *\n * @return {Highcharts.PositionObject}\n * Calculated center\n */\n function getCenterOfPoints(points) {\n var sum = points.reduce(function (sum,\n point) {\n sum.x += point.x;\n sum.y += point.y;\n return sum;\n }, { x: 0, y: 0 });\n return {\n x: sum.x / points.length,\n y: sum.y / points.length\n };\n }\n GeometryUtilities.getCenterOfPoints = getCenterOfPoints;\n /**\n * Calculates the distance between two points based on their x and y\n * coordinates.\n *\n * @private\n *\n * @param {Highcharts.PositionObject} p1\n * The x and y coordinates of the first point.\n *\n * @param {Highcharts.PositionObject} p2\n * The x and y coordinates of the second point.\n *\n * @return {number}\n * Returns the distance between the points.\n */\n function getDistanceBetweenPoints(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n }\n GeometryUtilities.getDistanceBetweenPoints = getDistanceBetweenPoints;\n /**\n * Calculates the angle between two points.\n * @todo add unit tests.\n * @private\n * @param {Highcharts.PositionObject} p1 The first point.\n * @param {Highcharts.PositionObject} p2 The second point.\n * @return {number} Returns the angle in radians.\n */\n function getAngleBetweenPoints(p1, p2) {\n return Math.atan2(p2.x - p1.x, p2.y - p1.y);\n }\n GeometryUtilities.getAngleBetweenPoints = getAngleBetweenPoints;\n /**\n * Test for point in polygon. Polygon defined as array of [x,y] points.\n * @private\n * @param {PositionObject} point The point potentially within a polygon.\n * @param {Array<Array<number>>} polygon The polygon potentially containing the point.\n */\n function pointInPolygon(_a, polygon) {\n var x = _a.x,\n y = _a.y;\n var len = polygon.length;\n var i,\n j,\n inside = false;\n for (i = 0, j = len - 1; i < len; j = i++) {\n var _b = polygon[i],\n x1 = _b[0],\n y1 = _b[1],\n _c = polygon[j],\n x2 = _c[0],\n y2 = _c[1];\n if (y1 > y !== y2 > y &&\n (x < (x2 - x1) *\n (y - y1) /\n (y2 - y1) +\n x1)) {\n inside = !inside;\n }\n }\n return inside;\n }\n GeometryUtilities.pointInPolygon = pointInPolygon;\n})(GeometryUtilities || (GeometryUtilities = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Geometry_GeometryUtilities = (GeometryUtilities);\n\n;// ./code/es5/es-modules/Core/Geometry/PolygonClip.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\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 * Simple line string clipping. Clip to bounds and insert intersection points.\n * @private\n */\nfunction clipLineString(line, boundsPolygon) {\n var ret = [],\n l = clipPolygon(line,\n boundsPolygon,\n false);\n for (var i = 1; i < l.length; i++) {\n // Insert gap where two intersections follow each other\n if (l[i].isIntersection && l[i - 1].isIntersection) {\n ret.push(l.splice(0, i));\n i = 0;\n }\n // Push the rest\n if (i === l.length - 1) {\n ret.push(l);\n }\n }\n return ret;\n}\n/**\n * Clip a polygon to another polygon using the Sutherland/Hodgman algorithm.\n * @private\n */\nfunction clipPolygon(subjectPolygon, boundsPolygon, closed) {\n if (closed === void 0) { closed = true; }\n var clipEdge1 = boundsPolygon[boundsPolygon.length - 1],\n clipEdge2,\n prevPoint,\n currentPoint,\n outputList = subjectPolygon;\n for (var j = 0; j < boundsPolygon.length; j++) {\n var inputList = outputList;\n clipEdge2 = boundsPolygon[j];\n outputList = [];\n prevPoint = closed ?\n // Polygon, wrap around\n inputList[inputList.length - 1] :\n // Open line string, don't wrap\n inputList[0];\n for (var i = 0; i < inputList.length; i++) {\n currentPoint = inputList[i];\n if (isInside(clipEdge1, clipEdge2, currentPoint)) {\n if (!isInside(clipEdge1, clipEdge2, prevPoint)) {\n outputList.push(intersection(clipEdge1, clipEdge2, prevPoint, currentPoint));\n }\n outputList.push(currentPoint);\n }\n else if (isInside(clipEdge1, clipEdge2, prevPoint)) {\n outputList.push(intersection(clipEdge1, clipEdge2, prevPoint, currentPoint));\n }\n prevPoint = currentPoint;\n }\n clipEdge1 = clipEdge2;\n }\n return outputList;\n}\n/** @private */\nfunction isInside(clipEdge1, clipEdge2, p) {\n return ((clipEdge2[0] - clipEdge1[0]) * (p[1] - clipEdge1[1]) >\n (clipEdge2[1] - clipEdge1[1]) * (p[0] - clipEdge1[0]));\n}\n/** @private */\nfunction intersection(clipEdge1, clipEdge2, prevPoint, currentPoint) {\n var dc = [\n clipEdge1[0] - clipEdge2[0],\n clipEdge1[1] - clipEdge2[1]\n ],\n dp = [\n prevPoint[0] - currentPoint[0],\n prevPoint[1] - currentPoint[1]\n ],\n n1 = clipEdge1[0] * clipEdge2[1] - clipEdge1[1] * clipEdge2[0],\n n2 = prevPoint[0] * currentPoint[1] - prevPoint[1] * currentPoint[0],\n n3 = 1 / (dc[0] * dp[1] - dc[1] * dp[0]),\n intersection = [\n (n1 * dp[0] - n2 * dc[0]) * n3,\n (n1 * dp[1] - n2 * dc[1]) * n3\n ];\n intersection.isIntersection = true;\n return intersection;\n}\n/* *\n *\n * Default Export\n *\n * */\nvar PolygonClip = {\n clipLineString: clipLineString,\n clipPolygon: clipPolygon\n};\n/* harmony default export */ var Geometry_PolygonClip = (PolygonClip);\n\n;// ./code/es5/es-modules/Maps/Projections/LambertConformalConic.js\n/* *\n * Lambert Conformal Conic projection\n * */\n\n/* *\n *\n * Constants\n *\n * */\nvar sign = Math.sign ||\n (function (n) { return (n === 0 ? 0 : n > 0 ? 1 : -1); }), scale = 63.78137, LambertConformalConic_deg2rad = Math.PI / 180, halfPI = Math.PI / 2, eps10 = 1e-6, tany = function (y) { return Math.tan((halfPI + y) / 2); };\n/* *\n *\n * Class\n *\n * */\nvar LambertConformalConic = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function LambertConformalConic(options) {\n var _a;\n var parallels = (options.parallels || [])\n .map(function (n) { return n * LambertConformalConic_deg2rad; }),\n lat1 = parallels[0] || 0,\n lat2 = (_a = parallels[1]) !== null && _a !== void 0 ? _a : lat1,\n cosLat1 = Math.cos(lat1);\n if (typeof options.projectedBounds === 'object') {\n this.projectedBounds = options.projectedBounds;\n }\n // Apply the global variables\n var n = lat1 === lat2 ?\n Math.sin(lat1) :\n Math.log(cosLat1 / Math.cos(lat2)) / Math.log(tany(lat2) / tany(lat1));\n if (Math.abs(n) < 1e-10) {\n n = (sign(n) || 1) * 1e-10;\n }\n this.n = n;\n this.c = cosLat1 * Math.pow(tany(lat1), n) / n;\n }\n /* *\n *\n * Functions\n *\n * */\n LambertConformalConic.prototype.forward = function (lonLat) {\n var _a = this,\n c = _a.c,\n n = _a.n,\n projectedBounds = _a.projectedBounds,\n lon = lonLat[0] * LambertConformalConic_deg2rad;\n var lat = lonLat[1] * LambertConformalConic_deg2rad;\n if (c > 0) {\n if (lat < -halfPI + eps10) {\n lat = -halfPI + eps10;\n }\n }\n else {\n if (lat > halfPI - eps10) {\n lat = halfPI - eps10;\n }\n }\n var r = c / Math.pow(tany(lat),\n n),\n x = r * Math.sin(n * lon) * scale,\n y = (c - r * Math.cos(n * lon)) * scale,\n xy = [x,\n y];\n if (projectedBounds && (x < projectedBounds.x1 ||\n x > projectedBounds.x2 ||\n y < projectedBounds.y1 ||\n y > projectedBounds.y2)) {\n xy.outside = true;\n }\n return xy;\n };\n LambertConformalConic.prototype.inverse = function (xy) {\n var _a = this, c = _a.c, n = _a.n, x = xy[0] / scale, y = xy[1] / scale, cy = c - y, rho = sign(n) * Math.sqrt(x * x + cy * cy);\n var l = Math.atan2(x,\n Math.abs(cy)) * sign(cy);\n if (cy * n < 0) {\n l -= Math.PI * sign(x) * sign(cy);\n }\n return [\n (l / n) / LambertConformalConic_deg2rad,\n (2 * Math.atan(Math.pow(c / rho, 1 / n)) - halfPI) / LambertConformalConic_deg2rad\n ];\n };\n return LambertConformalConic;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Projections_LambertConformalConic = (LambertConformalConic);\n\n;// ./code/es5/es-modules/Maps/Projections/EqualEarth.js\n/* *\n *\n * Equal Earth projection, an equal-area projection designed to minimize\n * distortion and remain pleasing to the eye.\n *\n * Invented by Bojan Šavrič, Bernhard Jenny, and Tom Patterson in 2018. It is\n * inspired by the widely used Robinson projection.\n *\n * */\n\n/* *\n *\n * Constants\n *\n * */\nvar A1 = 1.340264, A2 = -0.081106, A3 = 0.000893, A4 = 0.003796, M = Math.sqrt(3) / 2.0, EqualEarth_scale = 74.03120656864502;\n/* *\n *\n * Class\n *\n * */\nvar EqualEarth = /** @class */ (function () {\n function EqualEarth() {\n /* *\n *\n * Properties\n *\n * */\n this.bounds = {\n x1: -200.37508342789243,\n x2: 200.37508342789243,\n y1: -97.52595454902263,\n y2: 97.52595454902263\n };\n }\n /* *\n *\n * Functions\n *\n * */\n EqualEarth.prototype.forward = function (lonLat) {\n var d = Math.PI / 180,\n paramLat = Math.asin(M * Math.sin(lonLat[1] * d)),\n paramLatSq = paramLat * paramLat,\n paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n var x = lonLat[0] * d * Math.cos(paramLat) * EqualEarth_scale /\n (M * (A1 +\n 3 * A2 * paramLatSq +\n paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq))),\n y = paramLat * EqualEarth_scale * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq));\n return [x, y];\n };\n EqualEarth.prototype.inverse = function (xy) {\n var x = xy[0] / EqualEarth_scale, y = xy[1] / EqualEarth_scale, d = 180 / Math.PI, epsilon = 1e-9;\n var paramLat = y,\n paramLatSq,\n paramLatPow6,\n fy,\n fpy,\n dlat;\n for (var i = 0; i < 12; ++i) {\n paramLatSq = paramLat * paramLat;\n paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n fy = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq)) - y;\n fpy = A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq);\n paramLat -= dlat = fy / fpy;\n if (Math.abs(dlat) < epsilon) {\n break;\n }\n }\n paramLatSq = paramLat * paramLat;\n paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n var lon = d * M * x * (A1 + 3 * A2 * paramLatSq + paramLatPow6 *\n (7 * A3 + 9 * A4 * paramLatSq)) / Math.cos(paramLat), lat = d * Math.asin(Math.sin(paramLat) / M);\n // If lons are beyond the border of a map -> resolve via break\n if (Math.abs(lon) > 180) {\n return [NaN, NaN];\n }\n return [lon, lat];\n };\n return EqualEarth;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Projections_EqualEarth = (EqualEarth);\n\n;// ./code/es5/es-modules/Maps/Projections/Miller.js\n/* *\n * Miller projection\n * */\n\n/* *\n *\n * Constants\n *\n * */\nvar quarterPI = Math.PI / 4, Miller_deg2rad = Math.PI / 180, Miller_scale = 63.78137;\n/* *\n *\n * Class\n *\n * */\nvar Miller = /** @class */ (function () {\n function Miller() {\n /* *\n *\n * Properties\n *\n * */\n this.bounds = {\n x1: -200.37508342789243,\n x2: 200.37508342789243,\n y1: -146.91480769173063,\n y2: 146.91480769173063\n };\n }\n /* *\n *\n * Functions\n *\n * */\n Miller.prototype.forward = function (lonLat) {\n return [\n lonLat[0] * Miller_deg2rad * Miller_scale,\n 1.25 * Miller_scale * Math.log(Math.tan(quarterPI + 0.4 * lonLat[1] * Miller_deg2rad))\n ];\n };\n Miller.prototype.inverse = function (xy) {\n return [\n (xy[0] / Miller_scale) / Miller_deg2rad,\n 2.5 * (Math.atan(Math.exp(0.8 * (xy[1] / Miller_scale))) - quarterPI) / Miller_deg2rad\n ];\n };\n return Miller;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Projections_Miller = (Miller);\n\n;// ./code/es5/es-modules/Maps/Projections/Orthographic.js\n/* *\n * Orthographic projection\n * */\n\n/* *\n *\n * Constants\n *\n * */\nvar Orthographic_deg2rad = Math.PI / 180, Orthographic_scale = 63.78460826781007;\n/* *\n *\n * Class\n *\n * */\nvar Orthographic = /** @class */ (function () {\n function Orthographic() {\n /* *\n *\n * Properties\n *\n * */\n this.antimeridianCutting = false;\n this.bounds = {\n x1: -Orthographic_scale,\n x2: Orthographic_scale,\n y1: -Orthographic_scale,\n y2: Orthographic_scale\n };\n }\n /* *\n *\n * Functions\n *\n * */\n Orthographic.prototype.forward = function (lonLat) {\n var lonDeg = lonLat[0],\n latDeg = lonLat[1],\n lat = latDeg * Orthographic_deg2rad,\n xy = [\n Math.cos(lat) * Math.sin(lonDeg * Orthographic_deg2rad) * Orthographic_scale,\n Math.sin(lat) * Orthographic_scale\n ];\n if (lonDeg < -90 || lonDeg > 90) {\n xy.outside = true;\n }\n return xy;\n };\n Orthographic.prototype.inverse = function (xy) {\n var x = xy[0] / Orthographic_scale, y = xy[1] / Orthographic_scale, z = Math.sqrt(x * x + y * y), c = Math.asin(z), cSin = Math.sin(c), cCos = Math.cos(c);\n return [\n Math.atan2(x * cSin, z * cCos) / Orthographic_deg2rad,\n Math.asin(z && y * cSin / z) / Orthographic_deg2rad\n ];\n };\n return Orthographic;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Projections_Orthographic = (Orthographic);\n\n;// ./code/es5/es-modules/Maps/Projections/WebMercator.js\n/* *\n * Web Mercator projection, used for most online map tile services\n * */\n\n/* *\n *\n * Constants\n *\n * */\nvar r = 63.78137, WebMercator_deg2rad = Math.PI / 180;\n/* *\n *\n * Class\n *\n * */\nvar WebMercator = /** @class */ (function () {\n function WebMercator() {\n /* *\n *\n * Properties\n *\n * */\n this.bounds = {\n x1: -200.37508342789243,\n x2: 200.37508342789243,\n y1: -200.3750834278071,\n y2: 200.3750834278071\n };\n this.maxLatitude = 85.0511287798; // The latitude that defines a square\n }\n /* *\n *\n * Functions\n *\n * */\n WebMercator.prototype.forward = function (lonLat) {\n var sinLat = Math.sin(lonLat[1] * WebMercator_deg2rad), xy = [\n r * lonLat[0] * WebMercator_deg2rad,\n r * Math.log((1 + sinLat) / (1 - sinLat)) / 2\n ];\n if (Math.abs(lonLat[1]) > this.maxLatitude) {\n xy.outside = true;\n }\n return xy;\n };\n WebMercator.prototype.inverse = function (xy) {\n return [\n xy[0] / (r * WebMercator_deg2rad),\n (2 * Math.atan(Math.exp(xy[1] / r)) - (Math.PI / 2)) / WebMercator_deg2rad\n ];\n };\n return WebMercator;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Projections_WebMercator = (WebMercator);\n\n;// ./code/es5/es-modules/Maps/Projections/ProjectionRegistry.js\n/* *\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Imports\n *\n * */\n\n\n\n\n\n/* *\n *\n * Constants\n *\n * */\nvar projectionRegistry = {\n EqualEarth: Projections_EqualEarth,\n LambertConformalConic: Projections_LambertConformalConic,\n Miller: Projections_Miller,\n Orthographic: Projections_Orthographic,\n WebMercator: Projections_WebMercator\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var ProjectionRegistry = (projectionRegistry);\n\n;// ./code/es5/es-modules/Maps/Projection.js\n/* *\n *\n * (c) 2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar Projection_spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar Projection_clipLineString = Geometry_PolygonClip.clipLineString, Projection_clipPolygon = Geometry_PolygonClip.clipPolygon;\n\n\nvar clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, erase = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).erase;\n/* *\n *\n * Constants\n *\n * */\nvar Projection_deg2rad = Math.PI * 2 / 360, \n// Safe padding on either side of the antimeridian to avoid points being\n// projected to the wrong side of the plane\nfloatCorrection = 0.000001;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Keep longitude within -180 and 180. This is faster than using the modulo\n * operator, and preserves the distinction between -180 and 180.\n * @private\n */\nvar wrapLon = function (lon) {\n // Replacing the if's with while would increase the range, but make it prone\n // to crashes on bad data\n if (lon < -180) {\n lon += 360;\n }\n if (lon > 180) {\n lon -= 360;\n }\n return lon;\n};\n/**\n * Calculate the haversine of an angle.\n * @private\n */\nvar hav = function (radians) { return (1 - Math.cos(radians)) / 2; };\n/**\n* Calculate the haversine of an angle from two coordinates.\n* @private\n*/\nvar havFromCoords = function (point1, point2) {\n var cos = Math.cos,\n lat1 = point1[1] * Projection_deg2rad,\n lon1 = point1[0] * Projection_deg2rad,\n lat2 = point2[1] * Projection_deg2rad,\n lon2 = point2[0] * Projection_deg2rad,\n deltaLat = lat2 - lat1,\n deltaLon = lon2 - lon1,\n havFromCoords = hav(deltaLat) + cos(lat1) * cos(lat2) * hav(deltaLon);\n return havFromCoords;\n};\n/* *\n *\n * Class\n *\n * */\nvar Projection = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Projection(options) {\n if (options === void 0) { options = {}; }\n // Whether the chart has points, lines or polygons given as coordinates\n // with positive up, as opposed to paths in the SVG plane with positive\n // down.\n this.hasCoordinates = false;\n // Whether the chart has true projection as opposed to pre-projected geojson\n // as in the legacy map collection.\n this.hasGeoProjection = false;\n this.maxLatitude = 90;\n this.options = options;\n var name = options.name,\n projectedBounds = options.projectedBounds,\n rotation = options.rotation;\n this.rotator = rotation ? this.getRotator(rotation) : void 0;\n var ProjectionDefinition = name ? Projection.registry[name] : void 0;\n if (ProjectionDefinition) {\n this.def = new ProjectionDefinition(options);\n }\n var _a = this,\n def = _a.def,\n rotator = _a.rotator;\n if (def) {\n this.maxLatitude = def.maxLatitude || 90;\n this.hasGeoProjection = true;\n }\n if (rotator && def) {\n this.forward = function (lonLat) {\n return def.forward(rotator.forward(lonLat));\n };\n this.inverse = function (xy) {\n return rotator.inverse(def.inverse(xy));\n };\n }\n else if (def) {\n this.forward = function (lonLat) { return def.forward(lonLat); };\n this.inverse = function (xy) { return def.inverse(xy); };\n }\n else if (rotator) {\n this.forward = rotator.forward;\n this.inverse = rotator.inverse;\n }\n // Projected bounds/clipping\n this.bounds = projectedBounds === 'world' ?\n def && def.bounds :\n projectedBounds;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Add a projection definition to the registry, accessible by its `name`.\n * @private\n */\n Projection.add = function (name, definition) {\n Projection.registry[name] = definition;\n };\n /**\n * Calculate the distance in meters between two given coordinates.\n * @private\n */\n Projection.distance = function (point1, point2) {\n var atan2 = Math.atan2,\n sqrt = Math.sqrt,\n hav = havFromCoords(point1,\n point2),\n angularDistance = 2 * atan2(sqrt(hav),\n sqrt(1 - hav)),\n distance = angularDistance * 6371e3;\n return distance;\n };\n /**\n * Calculate the geodesic line string between two given coordinates.\n * @private\n */\n Projection.geodesic = function (point1, point2, inclusive, stepDistance) {\n if (stepDistance === void 0) { stepDistance = 500000; }\n var atan2 = Math.atan2, cos = Math.cos, sin = Math.sin, sqrt = Math.sqrt, distance = Projection.distance, lat1 = point1[1] * Projection_deg2rad, lon1 = point1[0] * Projection_deg2rad, lat2 = point2[1] * Projection_deg2rad, lon2 = point2[0] * Projection_deg2rad, cosLat1CosLon1 = cos(lat1) * cos(lon1), cosLat2CosLon2 = cos(lat2) * cos(lon2), cosLat1SinLon1 = cos(lat1) * sin(lon1), cosLat2SinLon2 = cos(lat2) * sin(lon2), sinLat1 = sin(lat1), sinLat2 = sin(lat2), pointDistance = distance(point1, point2), angDistance = pointDistance / 6371e3, sinAng = sin(angDistance), jumps = Math.round(pointDistance / stepDistance), lineString = [];\n if (inclusive) {\n lineString.push(point1);\n }\n if (jumps > 1) {\n var step = 1 / jumps;\n for (var fraction = step; fraction < 0.999; // Account for float errors\n fraction += step) {\n // Add intermediate point to lineString\n var A = sin((1 - fraction) * angDistance) / sinAng, B = sin(fraction * angDistance) / sinAng, x = A * cosLat1CosLon1 + B * cosLat2CosLon2, y = A * cosLat1SinLon1 + B * cosLat2SinLon2, z = A * sinLat1 + B * sinLat2, lat3 = atan2(z, sqrt(x * x + y * y)), lon3 = atan2(y, x);\n lineString.push([lon3 / Projection_deg2rad, lat3 / Projection_deg2rad]);\n }\n }\n if (inclusive) {\n lineString.push(point2);\n }\n return lineString;\n };\n Projection.insertGeodesics = function (poly) {\n var i = poly.length - 1;\n while (i--) {\n // Distance in degrees, either in lon or lat. Avoid heavy\n // calculation of true distance.\n var roughDistance = Math.max(Math.abs(poly[i][0] - poly[i + 1][0]),\n Math.abs(poly[i][1] - poly[i + 1][1]));\n if (roughDistance > 10) {\n var geodesic = Projection.geodesic(poly[i],\n poly[i + 1]);\n if (geodesic.length) {\n poly.splice.apply(poly, Projection_spreadArray([i + 1, 0], geodesic, false));\n }\n }\n }\n };\n Projection.toString = function (options) {\n var _a = options || {},\n name = _a.name,\n rotation = _a.rotation;\n return [name, rotation && rotation.join(',')].join(';');\n };\n /* *\n *\n * Functions\n *\n * */\n Projection.prototype.lineIntersectsBounds = function (line) {\n var _a = this.bounds || {},\n x1 = _a.x1,\n x2 = _a.x2,\n y1 = _a.y1,\n y2 = _a.y2;\n var getIntersect = function (line,\n dim,\n val) {\n var p1 = line[0],\n p2 = line[1],\n otherDim = dim ? 0 : 1;\n // Check if points are on either side of the line\n if (typeof val === 'number' && p1[dim] >= val !== p2[dim] >= val) {\n var fraction = ((val - p1[dim]) / (p2[dim] - p1[dim])),\n crossingVal = p1[otherDim] +\n fraction * (p2[otherDim] - p1[otherDim]);\n return dim ? [crossingVal, val] : [val, crossingVal];\n }\n };\n var intersection,\n ret = line[0];\n if ((intersection = getIntersect(line, 0, x1))) {\n ret = intersection;\n // Assuming line[1] was originally outside, replace it with the\n // intersection point so that the horizontal intersection will\n // be correct.\n line[1] = intersection;\n }\n else if ((intersection = getIntersect(line, 0, x2))) {\n ret = intersection;\n line[1] = intersection;\n }\n if ((intersection = getIntersect(line, 1, y1))) {\n ret = intersection;\n }\n else if ((intersection = getIntersect(line, 1, y2))) {\n ret = intersection;\n }\n return ret;\n };\n /**\n * Take the rotation options and returns the appropriate projection\n * functions.\n * @private\n */\n Projection.prototype.getRotator = function (rotation) {\n var deltaLambda = rotation[0] * Projection_deg2rad,\n deltaPhi = (rotation[1] || 0) * Projection_deg2rad,\n deltaGamma = (rotation[2] || 0) * Projection_deg2rad;\n var cosDeltaPhi = Math.cos(deltaPhi),\n sinDeltaPhi = Math.sin(deltaPhi),\n cosDeltaGamma = Math.cos(deltaGamma),\n sinDeltaGamma = Math.sin(deltaGamma);\n if (deltaLambda === 0 && deltaPhi === 0 && deltaGamma === 0) {\n // Don't waste processing time\n return;\n }\n return {\n forward: function (lonLat) {\n // Lambda (lon) rotation\n var lon = lonLat[0] * Projection_deg2rad + deltaLambda;\n // Phi (lat) and gamma rotation\n var lat = lonLat[1] * Projection_deg2rad,\n cosLat = Math.cos(lat),\n x = Math.cos(lon) * cosLat,\n y = Math.sin(lon) * cosLat,\n sinLat = Math.sin(lat),\n k = sinLat * cosDeltaPhi + x * sinDeltaPhi;\n return [\n Math.atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - sinLat * sinDeltaPhi) / Projection_deg2rad,\n Math.asin(k * cosDeltaGamma + y * sinDeltaGamma) / Projection_deg2rad\n ];\n },\n inverse: function (rLonLat) {\n // Lambda (lon) unrotation\n var lon = rLonLat[0] * Projection_deg2rad;\n // Phi (lat) and gamma unrotation\n var lat = rLonLat[1] * Projection_deg2rad,\n cosLat = Math.cos(lat),\n x = Math.cos(lon) * cosLat,\n y = Math.sin(lon) * cosLat,\n sinLat = Math.sin(lat),\n k = sinLat * cosDeltaGamma - y * sinDeltaGamma;\n return [\n (Math.atan2(y * cosDeltaGamma + sinLat * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi) - deltaLambda) / Projection_deg2rad,\n Math.asin(k * cosDeltaPhi - x * sinDeltaPhi) / Projection_deg2rad\n ];\n }\n };\n };\n /**\n * Project a lonlat coordinate position to xy. Dynamically overridden when\n * projection is set.\n * @private\n */\n Projection.prototype.forward = function (lonLat) {\n return lonLat;\n };\n /**\n * Unproject an xy chart coordinate position to lonlat. Dynamically\n * overridden when projection is set.\n * @private\n */\n Projection.prototype.inverse = function (xy) {\n return xy;\n };\n Projection.prototype.cutOnAntimeridian = function (poly, isPolygon) {\n var antimeridian = 180,\n intersections = [];\n var polygons = [poly];\n for (var i = 0, iEnd = poly.length; i < iEnd; ++i) {\n var lonLat = poly[i];\n var previousLonLat = poly[i - 1];\n if (!i) {\n if (!isPolygon) {\n continue;\n }\n // Else, wrap to beginning\n previousLonLat = poly[poly.length - 1];\n }\n var lon1 = previousLonLat[0],\n lon2 = lonLat[0];\n if (\n // Both points, after rotating for antimeridian, are on the far\n // side of the Earth\n (lon1 < -90 || lon1 > 90) &&\n (lon2 < -90 || lon2 > 90) &&\n // ... and on either side of the plane\n (lon1 > 0) !== (lon2 > 0)) {\n // Interpolate to the intersection latitude\n var fraction = clamp((antimeridian - (lon1 + 360) % 360) /\n ((lon2 + 360) % 360 - (lon1 + 360) % 360), 0, 1),\n lat = (previousLonLat[1] +\n fraction * (lonLat[1] - previousLonLat[1]));\n intersections.push({\n i: i,\n lat: lat,\n direction: lon1 < 0 ? 1 : -1,\n previousLonLat: previousLonLat,\n lonLat: lonLat\n });\n }\n }\n var polarIntersection;\n if (intersections.length) {\n if (isPolygon) {\n // Simplified use of the even-odd rule, if there is an odd\n // amount of intersections between the polygon and the\n // antimeridian, the pole is inside the polygon. Applies\n // primarily to Antarctica.\n if (intersections.length % 2 === 1) {\n polarIntersection = intersections.slice().sort(function (a, b) { return Math.abs(b.lat) - Math.abs(a.lat); })[0];\n erase(intersections, polarIntersection);\n }\n // Pull out slices of the polygon that is on the opposite side\n // of the antimeridian compared to the starting point\n var i = intersections.length - 2;\n while (i >= 0) {\n var index = intersections[i].i;\n var lonPlus = wrapLon(antimeridian +\n intersections[i].direction * floatCorrection);\n var lonMinus = wrapLon(antimeridian -\n intersections[i].direction * floatCorrection);\n var slice = poly.splice.apply(poly,\n Projection_spreadArray([index,\n intersections[i + 1].i - index],\n Projection.geodesic([lonPlus,\n intersections[i].lat],\n [lonPlus,\n intersections[i + 1].lat],\n true),\n false));\n // Add interpolated points close to the cut\n slice.push.apply(slice, Projection.geodesic([lonMinus, intersections[i + 1].lat], [lonMinus, intersections[i].lat], true));\n polygons.push(slice);\n i -= 2;\n }\n // Insert dummy points close to the pole\n if (polarIntersection) {\n for (var i_1 = 0; i_1 < polygons.length; i_1++) {\n var direction = polarIntersection.direction,\n lat = polarIntersection.lat,\n poly_1 = polygons[i_1],\n indexOf = poly_1.indexOf(polarIntersection.lonLat);\n if (indexOf > -1) {\n var polarLatitude = (lat < 0 ? -1 : 1) *\n this.maxLatitude;\n var lon1 = wrapLon(antimeridian +\n direction * floatCorrection);\n var lon2 = wrapLon(antimeridian -\n direction * floatCorrection);\n var polarSegment = Projection.geodesic([lon1,\n lat],\n [lon1,\n polarLatitude],\n true);\n // Circle around the pole point in order to make\n // polygon clipping right. Without this, Antarctica\n // would wrap the wrong way in an LLC projection\n // with parallels [30, 40].\n for (var lon = lon1 + 120 * direction; lon > -180 && lon < 180; lon += 120 * direction) {\n polarSegment.push([lon, polarLatitude]);\n }\n polarSegment.push.apply(polarSegment, Projection.geodesic([lon2, polarLatitude], [lon2, polarIntersection.lat], true));\n poly_1.splice.apply(poly_1, Projection_spreadArray([indexOf,\n 0], polarSegment, false));\n break;\n }\n }\n }\n // Map lines, not closed\n }\n else {\n var i = intersections.length;\n while (i--) {\n var index = intersections[i].i;\n var slice = poly.splice(index,\n poly.length, \n // Add interpolated point close to the cut\n [\n wrapLon(antimeridian +\n intersections[i].direction * floatCorrection),\n intersections[i].lat\n ]);\n // Add interpolated point close to the cut\n slice.unshift([\n wrapLon(antimeridian -\n intersections[i].direction * floatCorrection),\n intersections[i].lat\n ]);\n polygons.push(slice);\n }\n }\n }\n return polygons;\n };\n /**\n * Take a GeoJSON geometry and return a translated SVGPath.\n * @private\n */\n Projection.prototype.path = function (geometry) {\n var _this = this;\n var _a = this,\n bounds = _a.bounds,\n def = _a.def,\n rotator = _a.rotator;\n var antimeridian = 180;\n var path = [];\n var isPolygon = geometry.type === 'Polygon' ||\n geometry.type === 'MultiPolygon';\n // @todo: It doesn't really have to do with whether north is\n // positive. It depends on whether the coordinates are\n // pre-projected.\n var hasGeoProjection = this.hasGeoProjection;\n // Detect whether we need to do antimeridian cutting and clipping to\n // bounds. The alternative (currently for Orthographic) is to apply a\n // clip angle.\n var projectingToPlane = !def || def.antimeridianCutting !== false;\n // We need to rotate in a separate step before applying antimeridian\n // cutting\n var preclip = projectingToPlane ? rotator : void 0;\n var postclip = projectingToPlane ? (def || this) : this;\n var boundsPolygon;\n if (bounds) {\n boundsPolygon = [\n [bounds.x1, bounds.y1],\n [bounds.x2, bounds.y1],\n [bounds.x2, bounds.y2],\n [bounds.x1, bounds.y2]\n ];\n }\n var addToPath = function (polygon) {\n // Create a copy of the original coordinates. The copy applies a\n // correction of points close to the antimeridian in order to\n // prevent the points to be projected to the wrong side of the\n // plane. Float errors in topojson or in the projection may cause\n // that.\n var poly = polygon.map(function (lonLat) {\n if (projectingToPlane) {\n if (preclip) {\n lonLat = preclip.forward(lonLat);\n }\n var lon = lonLat[0];\n if (Math.abs(lon - antimeridian) < floatCorrection) {\n if (lon < antimeridian) {\n lon = antimeridian - floatCorrection;\n }\n else {\n lon = antimeridian + floatCorrection;\n }\n }\n lonLat = [lon, lonLat[1]];\n }\n return lonLat;\n });\n var polygons = [poly];\n if (hasGeoProjection) {\n // Insert great circles into long straight lines\n Projection.insertGeodesics(poly);\n if (projectingToPlane) {\n polygons = _this.cutOnAntimeridian(poly, isPolygon);\n }\n }\n polygons.forEach(function (poly) {\n if (poly.length < 2) {\n return;\n }\n var movedTo = false;\n var firstValidLonLat;\n var lastValidLonLat;\n var gap = false;\n var pushToPath = function (point) {\n if (!movedTo) {\n path.push(['M',\n point[0],\n point[1]]);\n movedTo = true;\n }\n else {\n path.push(['L', point[0], point[1]]);\n }\n };\n var someOutside = false,\n someInside = false;\n var points = poly.map(function (lonLat) {\n var xy = postclip.forward(lonLat);\n if (xy.outside) {\n someOutside = true;\n }\n else {\n someInside = true;\n }\n // Mercator projects pole points to Infinity, and\n // clipPolygon is not able to handle it.\n if (xy[1] === Infinity) {\n xy[1] = 10e9;\n }\n else if (xy[1] === -Infinity) {\n xy[1] = -10e9;\n }\n return xy;\n });\n if (projectingToPlane) {\n // Wrap around in order for pointInPolygon to work\n if (isPolygon) {\n points.push(points[0]);\n }\n if (someOutside) {\n // All points are outside\n if (!someInside) {\n return;\n }\n // Some inside, some outside. Clip to the bounds.\n if (boundsPolygon) {\n // Polygons\n if (isPolygon) {\n points = Projection_clipPolygon(points, boundsPolygon);\n // Linestrings\n }\n else if (bounds) {\n Projection_clipLineString(points, boundsPolygon)\n .forEach(function (points) {\n movedTo = false;\n points.forEach(pushToPath);\n });\n return;\n }\n }\n }\n points.forEach(pushToPath);\n // For orthographic projection, or when a clipAngle applies\n }\n else {\n for (var i = 0; i < points.length; i++) {\n var lonLat = poly[i],\n point = points[i];\n if (!point.outside) {\n // In order to be able to interpolate if the first\n // or last point is invalid (on the far side of the\n // globe in an orthographic projection), we need to\n // push the first valid point to the end of the\n // polygon.\n if (isPolygon && !firstValidLonLat) {\n firstValidLonLat = lonLat;\n poly.push(lonLat);\n points.push(point);\n }\n // When entering the first valid point after a gap\n // of invalid points, typically on the far side of\n // the globe in an orthographic projection.\n if (gap && lastValidLonLat) {\n // For areas, in an orthographic projection, the\n // great circle between two visible points will\n // be close to the horizon. A possible exception\n // may be when the two points are on opposite\n // sides of the globe. It that poses a problem,\n // we may have to rewrite this to use the small\n // circle related to the current lon0 and lat0.\n if (isPolygon && hasGeoProjection) {\n var geodesic = Projection.geodesic(lastValidLonLat,\n lonLat);\n geodesic.forEach(function (lonLat) {\n return pushToPath(postclip.forward(lonLat));\n });\n // For lines, just jump over the gap\n }\n else {\n movedTo = false;\n }\n }\n pushToPath(point);\n lastValidLonLat = lonLat;\n gap = false;\n }\n else {\n gap = true;\n }\n }\n }\n });\n };\n if (geometry.type === 'LineString') {\n addToPath(geometry.coordinates);\n }\n else if (geometry.type === 'MultiLineString') {\n geometry.coordinates.forEach(function (c) { return addToPath(c); });\n }\n else if (geometry.type === 'Polygon') {\n geometry.coordinates.forEach(function (c) { return addToPath(c); });\n if (path.length) {\n path.push(['Z']);\n }\n }\n else if (geometry.type === 'MultiPolygon') {\n geometry.coordinates.forEach(function (polygons) {\n polygons.forEach(function (c) { return addToPath(c); });\n });\n if (path.length) {\n path.push(['Z']);\n }\n }\n return path;\n };\n /* *\n *\n * Static Properties\n *\n * */\n Projection.registry = ProjectionRegistry;\n return Projection;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Maps_Projection = (Projection);\n\n;// ./code/es5/es-modules/Maps/MapView.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\nvar MapView_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MapView_spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar MapView_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\n\nvar pointInPolygon = Geometry_GeometryUtilities.pointInPolygon;\nvar topo2geo = Maps_GeoJSONComposition.topo2geo;\n\nvar MapView_boundsFromPath = Maps_MapUtilities.boundsFromPath;\n\n\nvar MapView_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, MapView_clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, MapView_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, MapView_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, MapView_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, MapView_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, MapView_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, MapView_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, MapView_relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n * Constants\n *\n * */\nvar tileSize = 256;\n/**\n * The world size in terms of 10k meters in the Web Mercator projection, to\n * match a 256 square tile to zoom level 0.\n * @private\n */\nvar worldSize = 400.979322;\n/* *\n *\n * Variables\n *\n * */\nvar maps = {};\n/* *\n *\n * Functions\n *\n * */\n/**\n * Compute the zoom from given bounds and the size of the playing field. Used in\n * two places, hence the local function.\n * @private\n */\nfunction zoomFromBounds(b, playingField) {\n var width = playingField.width, height = playingField.height, scaleToField = Math.max((b.x2 - b.x1) / (width / tileSize), (b.y2 - b.y1) / (height / tileSize));\n return Math.log(worldSize / scaleToField) / Math.log(2);\n}\n/**\n * Calculate and set the recommended map view drilldown or drillup if mapData\n * is set for the series.\n * @private\n */\nfunction recommendedMapViewAfterDrill(e) {\n var _a,\n _b;\n if (e.seriesOptions.mapData) {\n (_a = this.mapView) === null || _a === void 0 ? void 0 : _a.recommendMapView(this, [\n this.options.chart.map,\n e.seriesOptions.mapData\n ], (_b = this.options.drilldown) === null || _b === void 0 ? void 0 : _b.mapZooming);\n }\n}\n/*\nConst mergeCollections = <\n T extends Array<AnyRecord|undefined>\n>(a: T, b: T): T => {\n b.forEach((newer, i): void => {\n // Only merge by id supported for now. We may consider later to support\n // more complex rules like those of `Chart.update` with `oneToOne`, but\n // it is probably not needed. Existing insets can be disabled by\n // overwriting the `geoBounds` with empty data.\n if (newer && isString(newer.id)) {\n const older = U.find(\n a,\n (aItem): boolean => (aItem && aItem.id) === newer.id\n );\n if (older) {\n const aIndex = a.indexOf(older);\n a[aIndex] = merge(older, newer);\n }\n }\n });\n return a;\n};\n*/\n/* *\n *\n * Classes\n *\n * */\n/**\n * The map view handles zooming and centering on the map, and various\n * client-side projection capabilities.\n *\n * On a chart instance of `MapChart`, the map view is available as `chart.mapView`.\n *\n * @class\n * @name Highcharts.MapView\n *\n * @param {Highcharts.MapChart} chart\n * The MapChart instance\n * @param {Highcharts.MapViewOptions} options\n * MapView options\n */\nvar MapView = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function MapView(chart, options) {\n var _this = this;\n var _a;\n /* *\n *\n * Properties\n *\n * */\n this.allowTransformAnimation = true;\n this.eventsToUnbind = [];\n this.insets = [];\n this.padding = [0, 0, 0, 0];\n this.recommendedMapView = {};\n if (!(this instanceof MapViewInset)) {\n this.recommendMapView(chart, MapView_spreadArray([\n chart.options.chart.map\n ], (chart.options.series || []).map(function (s) { return s.mapData; }), true));\n }\n this.userOptions = options || {};\n var o = MapView_merge(Maps_MapViewDefaults,\n this.recommendedMapView,\n options);\n // Merge the inset collections by id, or index if id missing\n var recInsets = (_a = this.recommendedMapView) === null || _a === void 0 ? void 0 : _a.insets,\n optInsets = options && options.insets;\n if (recInsets && optInsets) {\n o.insets = MapView.mergeInsets(recInsets, optInsets);\n }\n this.chart = chart;\n /**\n * The current center of the view in terms of `[longitude, latitude]`.\n * @name Highcharts.MapView#center\n * @readonly\n * @type {LonLatArray}\n */\n this.center = o.center;\n this.options = o;\n this.projection = new Maps_Projection(o.projection);\n // Initialize with full plot box so we don't have to check for undefined\n // every time we use it\n this.playingField = chart.plotBox;\n /**\n * The current zoom level of the view.\n * @name Highcharts.MapView#zoom\n * @readonly\n * @type {number}\n */\n this.zoom = o.zoom || 0;\n this.minZoom = o.minZoom;\n // Create the insets\n this.createInsets();\n // Initialize and respond to chart size changes\n this.eventsToUnbind.push(MapView_addEvent(chart, 'afterSetChartSize', function () {\n _this.playingField = _this.getField();\n if (_this.minZoom === void 0 || // When initializing the chart\n _this.minZoom === _this.zoom // When resizing the chart\n ) {\n _this.fitToBounds(void 0, void 0, false);\n if (\n // Set zoom only when initializing the chart\n // (do not overwrite when zooming in/out, #17082)\n !_this.chart.hasRendered &&\n MapView_isNumber(_this.userOptions.zoom)) {\n _this.zoom = _this.userOptions.zoom;\n }\n if (_this.userOptions.center) {\n MapView_merge(true, _this.center, _this.userOptions.center);\n }\n }\n }));\n this.setUpEvents();\n }\n /* *\n *\n * Static Functions\n *\n * */\n MapView.compose = function (MapChartClass) {\n if (MapView_pushUnique(MapView_composed, 'MapView')) {\n maps = MapChartClass.maps;\n // Initialize MapView after initialization, but before firstRender\n MapView_addEvent(MapChartClass, 'afterInit', function () {\n /**\n * The map view handles zooming and centering on the map, and\n * various client-side projection capabilities.\n *\n * @name Highcharts.MapChart#mapView\n * @type {Highcharts.MapView|undefined}\n */\n this.mapView = new MapView(this, this.options.mapView);\n }, { order: 0 });\n MapView_addEvent(MapChartClass, 'addSeriesAsDrilldown', recommendedMapViewAfterDrill);\n MapView_addEvent(MapChartClass, 'afterDrillUp', recommendedMapViewAfterDrill);\n }\n };\n /**\n * Return the composite bounding box of a collection of bounding boxes\n * @private\n */\n MapView.compositeBounds = function (arrayOfBounds) {\n if (arrayOfBounds.length) {\n return arrayOfBounds\n .slice(1)\n .reduce(function (acc, cur) {\n acc.x1 = Math.min(acc.x1, cur.x1);\n acc.y1 = Math.min(acc.y1, cur.y1);\n acc.x2 = Math.max(acc.x2, cur.x2);\n acc.y2 = Math.max(acc.y2, cur.y2);\n return acc;\n }, MapView_merge(arrayOfBounds[0]));\n }\n return;\n };\n /**\n * Merge two collections of insets by the id.\n * @private\n */\n MapView.mergeInsets = function (a, b) {\n var toObject = function (insets) {\n var ob = {};\n insets.forEach(function (inset, i) {\n ob[inset && inset.id || \"i\".concat(i)] = inset;\n });\n return ob;\n };\n var insetsObj = MapView_merge(toObject(a),\n toObject(b)),\n insets = Object\n .keys(insetsObj)\n .map(function (key) { return insetsObj[key]; });\n return insets;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create MapViewInset instances from insets options\n * @private\n */\n MapView.prototype.createInsets = function () {\n var _this = this;\n var options = this.options,\n insets = options.insets;\n if (insets) {\n insets.forEach(function (item) {\n var inset = new MapViewInset(_this,\n MapView_merge(options.insetOptions,\n item));\n _this.insets.push(inset);\n });\n }\n };\n /**\n * Fit the view to given bounds\n *\n * @function Highcharts.MapView#fitToBounds\n * @param {Object} bounds\n * Bounds in terms of projected units given as `{ x1, y1, x2, y2 }`.\n * If not set, fit to the bounds of the current data set\n * @param {number|string} [padding=0]\n * Padding inside the bounds. A number signifies pixels, while a\n * percentage string (like `5%`) can be used as a fraction of the\n * plot area size.\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart immediately\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * What animation to use for redraw\n */\n MapView.prototype.fitToBounds = function (bounds, padding, redraw, animation) {\n if (redraw === void 0) { redraw = true; }\n var b = bounds || this.getProjectedBounds();\n if (b) {\n var pad = MapView_pick(padding,\n bounds ? 0 : this.options.padding),\n fullField = this.getField(false),\n padArr = MapView_isArray(pad) ? pad : [pad,\n pad,\n pad,\n pad];\n this.padding = [\n MapView_relativeLength(padArr[0], fullField.height),\n MapView_relativeLength(padArr[1], fullField.width),\n MapView_relativeLength(padArr[2], fullField.height),\n MapView_relativeLength(padArr[3], fullField.width)\n ];\n // Apply the playing field, corrected with padding\n this.playingField = this.getField();\n var zoom = zoomFromBounds(b,\n this.playingField);\n // Reset minZoom when fitting to natural bounds\n if (!bounds) {\n this.minZoom = zoom;\n }\n var center = this.projection.inverse([\n (b.x2 + b.x1) / 2,\n (b.y2 + b.y1) / 2\n ]);\n this.setView(center, zoom, redraw, animation);\n }\n };\n MapView.prototype.getField = function (padded) {\n if (padded === void 0) { padded = true; }\n var padding = padded ? this.padding : [0, 0, 0, 0];\n return {\n x: padding[3],\n y: padding[0],\n width: this.chart.plotWidth - padding[1] - padding[3],\n height: this.chart.plotHeight - padding[0] - padding[2]\n };\n };\n MapView.prototype.getGeoMap = function (map) {\n if (isString(map)) {\n if (maps[map] && maps[map].type === 'Topology') {\n return topo2geo(maps[map]);\n }\n return maps[map];\n }\n if (isObject(map, true)) {\n if (map.type === 'FeatureCollection') {\n return map;\n }\n if (map.type === 'Topology') {\n return topo2geo(map);\n }\n }\n };\n MapView.prototype.getMapBBox = function () {\n var bounds = this.getProjectedBounds(),\n scale = this.getScale();\n if (bounds) {\n var padding = this.padding,\n p1 = this.projectedUnitsToPixels({\n x: bounds.x1,\n y: bounds.y2\n }),\n width = ((bounds.x2 - bounds.x1) * scale +\n padding[1] + padding[3]),\n height = ((bounds.y2 - bounds.y1) * scale +\n padding[0] + padding[2]);\n return {\n width: width,\n height: height,\n x: p1.x - padding[3],\n y: p1.y - padding[0]\n };\n }\n };\n MapView.prototype.getProjectedBounds = function () {\n var projection = this.projection;\n var allBounds = this.chart.series.reduce(function (acc,\n s) {\n var bounds = s.getProjectedBounds && s.getProjectedBounds();\n if (bounds &&\n s.options.affectsMapView !== false) {\n acc.push(bounds);\n }\n return acc;\n }, []);\n // The bounds option\n var fitToGeometry = this.options.fitToGeometry;\n if (fitToGeometry) {\n if (!this.fitToGeometryCache) {\n if (fitToGeometry.type === 'MultiPoint') {\n var positions = fitToGeometry.coordinates\n .map(function (lonLat) {\n return projection.forward(lonLat);\n }), xs = positions.map(function (pos) { return pos[0]; }), ys = positions.map(function (pos) { return pos[1]; });\n this.fitToGeometryCache = {\n x1: Math.min.apply(0, xs),\n x2: Math.max.apply(0, xs),\n y1: Math.min.apply(0, ys),\n y2: Math.max.apply(0, ys)\n };\n }\n else {\n this.fitToGeometryCache = MapView_boundsFromPath(projection.path(fitToGeometry));\n }\n }\n return this.fitToGeometryCache;\n }\n return this.projection.bounds || MapView.compositeBounds(allBounds);\n };\n MapView.prototype.getScale = function () {\n // A zoom of 0 means the world (360x360 degrees) fits in a 256x256 px\n // tile\n return (tileSize / worldSize) * Math.pow(2, this.zoom);\n };\n // Calculate the SVG transform to be applied to series groups\n MapView.prototype.getSVGTransform = function () {\n var _a = this.playingField, x = _a.x, y = _a.y, width = _a.width, height = _a.height, projectedCenter = this.projection.forward(this.center), flipFactor = this.projection.hasCoordinates ? -1 : 1, scaleX = this.getScale(), scaleY = scaleX * flipFactor, translateX = x + width / 2 - projectedCenter[0] * scaleX, translateY = y + height / 2 - projectedCenter[1] * scaleY;\n return { scaleX: scaleX, scaleY: scaleY, translateX: translateX, translateY: translateY };\n };\n /**\n * Convert map coordinates in longitude/latitude to pixels\n *\n * @function Highcharts.MapView#lonLatToPixels\n * @since 10.0.0\n * @param {Highcharts.MapLonLatObject} lonLat\n * The map coordinates\n * @return {Highcharts.PositionObject|undefined}\n * The pixel position\n */\n MapView.prototype.lonLatToPixels = function (lonLat) {\n var pos = this.lonLatToProjectedUnits(lonLat);\n if (pos) {\n return this.projectedUnitsToPixels(pos);\n }\n };\n /**\n * Get projected units from longitude/latitude. Insets are accounted for.\n * Returns an object with x and y values corresponding to positions on the\n * projected plane.\n *\n * @requires modules/map\n *\n * @function Highcharts.MapView#lonLatToProjectedUnits\n *\n * @since 10.0.0\n * @sample maps/series/latlon-to-point/ Find a point from lon/lat\n *\n * @param {Highcharts.MapLonLatObject} lonLat Coordinates.\n *\n * @return {Highcharts.ProjectedXY} X and Y coordinates in terms of\n * projected values\n */\n MapView.prototype.lonLatToProjectedUnits = function (lonLat) {\n var chart = this.chart,\n mapTransforms = chart.mapTransforms;\n // Legacy, built-in transforms\n if (mapTransforms) {\n for (var transform in mapTransforms) {\n if (Object.hasOwnProperty.call(mapTransforms, transform) &&\n mapTransforms[transform].hitZone) {\n var coords = chart.transformFromLatLon(lonLat,\n mapTransforms[transform]);\n if (coords && pointInPolygon(coords, mapTransforms[transform].hitZone.coordinates[0])) {\n return coords;\n }\n }\n }\n return chart.transformFromLatLon(lonLat, mapTransforms['default'] // eslint-disable-line dot-notation\n );\n }\n // Handle insets\n for (var _i = 0, _a = this.insets; _i < _a.length; _i++) {\n var inset = _a[_i];\n if (inset.options.geoBounds &&\n pointInPolygon({ x: lonLat.lon, y: lonLat.lat }, inset.options.geoBounds.coordinates[0])) {\n var insetProjectedPoint = inset.projection.forward([lonLat.lon,\n lonLat.lat]),\n pxPoint = inset.projectedUnitsToPixels({ x: insetProjectedPoint[0],\n y: insetProjectedPoint[1] });\n return this.pixelsToProjectedUnits(pxPoint);\n }\n }\n var point = this.projection.forward([lonLat.lon,\n lonLat.lat]);\n if (!point.outside) {\n return { x: point[0], y: point[1] };\n }\n };\n /**\n * Calculate longitude/latitude values for a point or position. Returns an\n * object with the numeric properties `lon` and `lat`.\n *\n * @requires modules/map\n *\n * @function Highcharts.MapView#projectedUnitsToLonLat\n *\n * @since 10.0.0\n *\n * @sample maps/demo/latlon-advanced/ Advanced lat/lon demo\n *\n * @param {Highcharts.Point|Highcharts.ProjectedXY} point\n * A `Point` instance or anything containing `x` and `y` properties\n * with numeric values.\n *\n * @return {Highcharts.MapLonLatObject|undefined} An object with `lat` and\n * `lon` properties.\n */\n MapView.prototype.projectedUnitsToLonLat = function (point) {\n var chart = this.chart,\n mapTransforms = chart.mapTransforms;\n // Legacy, built-in transforms\n if (mapTransforms) {\n for (var transform in mapTransforms) {\n if (Object.hasOwnProperty.call(mapTransforms, transform) &&\n mapTransforms[transform].hitZone &&\n pointInPolygon(point, mapTransforms[transform].hitZone.coordinates[0])) {\n return chart.transformToLatLon(point, mapTransforms[transform]);\n }\n }\n return chart.transformToLatLon(point, mapTransforms['default'] // eslint-disable-line dot-notation\n );\n }\n var pxPoint = this.projectedUnitsToPixels(point);\n for (var _i = 0, _a = this.insets; _i < _a.length; _i++) {\n var inset = _a[_i];\n if (inset.hitZone &&\n pointInPolygon(pxPoint, inset.hitZone.coordinates[0])) {\n var insetProjectedPoint = inset\n .pixelsToProjectedUnits(pxPoint),\n coordinates_1 = inset.projection.inverse([insetProjectedPoint.x,\n insetProjectedPoint.y]);\n return { lon: coordinates_1[0], lat: coordinates_1[1] };\n }\n }\n var coordinates = this.projection.inverse([point.x,\n point.y]);\n return { lon: coordinates[0], lat: coordinates[1] };\n };\n /**\n * Calculate and set the recommended map view based on provided map data\n * from series.\n *\n * @requires modules/map\n *\n * @function Highcharts.MapView#recommendMapView\n *\n * @since 11.4.0\n *\n * @param {Highcharts.Chart} chart\n * Chart object\n *\n * @param {Array<MapDataType | undefined>} mapDataArray\n * Array of map data from all series.\n *\n * @param {boolean} [update=false]\n * Whether to update the chart with recommended map view.\n *\n * @return {Highcharts.MapViewOptions|undefined} Best suitable map view.\n */\n MapView.prototype.recommendMapView = function (chart, mapDataArray, update) {\n var _this = this;\n var _a;\n if (update === void 0) { update = false; }\n // Reset recommended map view\n this.recommendedMapView = {};\n // Handle the global map and series-level mapData\n var geoMaps = mapDataArray.map(function (mapData) {\n return _this.getGeoMap(mapData);\n });\n var allGeoBounds = [];\n geoMaps.forEach(function (geoMap) {\n if (geoMap) {\n // Use the first geo map as main\n if (!Object.keys(_this.recommendedMapView).length) {\n _this.recommendedMapView =\n geoMap['hc-recommended-mapview'] || {};\n }\n // Combine the bounding boxes of all loaded maps\n if (geoMap.bbox) {\n var _a = geoMap.bbox,\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n allGeoBounds.push({ x1: x1, y1: y1, x2: x2, y2: y2 });\n }\n }\n });\n // Get the composite bounds\n var geoBounds = (allGeoBounds.length &&\n MapView.compositeBounds(allGeoBounds));\n // Provide a best-guess recommended projection if not set in\n // the map or in user options\n MapView_fireEvent(this, 'onRecommendMapView', {\n geoBounds: geoBounds,\n chart: chart\n }, function () {\n if (geoBounds &&\n this.recommendedMapView) {\n if (!this.recommendedMapView.projection) {\n var x1 = geoBounds.x1,\n y1 = geoBounds.y1,\n x2 = geoBounds.x2,\n y2 = geoBounds.y2;\n this.recommendedMapView.projection =\n (x2 - x1 > 180 && y2 - y1 > 90) ?\n // Wide angle, go for the world view\n {\n name: 'EqualEarth',\n parallels: [0, 0],\n rotation: [0]\n } :\n // Narrower angle, use a projection better\n // suited for local view\n {\n name: 'LambertConformalConic',\n parallels: [y1, y2],\n rotation: [-(x1 + x2) / 2]\n };\n }\n if (!this.recommendedMapView.insets) {\n this.recommendedMapView.insets = void 0; // Reset insets\n }\n }\n });\n // Register the main geo map (from options.chart.map) if set\n this.geoMap = geoMaps[0];\n if (update &&\n chart.hasRendered &&\n !((_a = chart.userOptions.mapView) === null || _a === void 0 ? void 0 : _a.projection) &&\n this.recommendedMapView) {\n this.update(this.recommendedMapView);\n }\n };\n MapView.prototype.redraw = function (animation) {\n this.chart.series.forEach(function (s) {\n if (s.useMapGeometry) {\n s.isDirty = true;\n }\n });\n this.chart.redraw(animation);\n };\n /**\n * Set the view to given center and zoom values.\n * @function Highcharts.MapView#setView\n * @param {Highcharts.LonLatArray|undefined} center\n * The center point\n * @param {number} zoom\n * The zoom level\n * @param {boolean} [redraw=true]\n * Whether to redraw immediately\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Animation options for the redraw\n *\n * @sample maps/mapview/setview\n * Set the view programmatically\n */\n MapView.prototype.setView = function (center, zoom, redraw, animation) {\n if (redraw === void 0) { redraw = true; }\n if (center) {\n this.center = center;\n }\n if (typeof zoom === 'number') {\n if (typeof this.minZoom === 'number') {\n zoom = Math.max(zoom, this.minZoom);\n }\n if (typeof this.options.maxZoom === 'number') {\n zoom = Math.min(zoom, this.options.maxZoom);\n }\n // Use isNumber to prevent Infinity (#17205)\n if (MapView_isNumber(zoom)) {\n this.zoom = zoom;\n }\n }\n var bounds = this.getProjectedBounds();\n if (bounds) {\n var projectedCenter = this.projection.forward(this.center),\n _a = this.playingField,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n scale = this.getScale(),\n bottomLeft = this.projectedUnitsToPixels({\n x: bounds.x1,\n y: bounds.y1\n }),\n topRight = this.projectedUnitsToPixels({\n x: bounds.x2,\n y: bounds.y2\n }),\n boundsCenterProjected = [\n (bounds.x1 + bounds.x2) / 2,\n (bounds.y1 + bounds.y2) / 2\n ],\n isDrilling = this.chart.series.some(function (series) {\n return series.isDrilling;\n });\n if (!isDrilling) {\n // Constrain to data bounds\n // Pixel coordinate system is reversed vs projected\n var x1 = bottomLeft.x,\n y1 = topRight.y,\n x2 = topRight.x,\n y2 = bottomLeft.y;\n // Map smaller than plot area, center it\n if (x2 - x1 < width) {\n projectedCenter[0] = boundsCenterProjected[0];\n // Off west\n }\n else if (x1 < x && x2 < x + width) {\n // Adjust eastwards\n projectedCenter[0] +=\n Math.max(x1 - x, x2 - width - x) / scale;\n // Off east\n }\n else if (x2 > x + width && x1 > x) {\n // Adjust westwards\n projectedCenter[0] +=\n Math.min(x2 - width - x, x1 - x) / scale;\n }\n // Map smaller than plot area, center it\n if (y2 - y1 < height) {\n projectedCenter[1] = boundsCenterProjected[1];\n // Off north\n }\n else if (y1 < y && y2 < y + height) {\n // Adjust southwards\n projectedCenter[1] -=\n Math.max(y1 - y, y2 - height - y) / scale;\n // Off south\n }\n else if (y2 > y + height && y1 > y) {\n // Adjust northwards\n projectedCenter[1] -=\n Math.min(y2 - height - y, y1 - y) / scale;\n }\n this.center = this.projection.inverse(projectedCenter);\n }\n this.insets.forEach(function (inset) {\n if (inset.options.field) {\n inset.hitZone = inset.getHitZone();\n inset.playingField = inset.getField();\n }\n });\n this.render();\n }\n MapView_fireEvent(this, 'afterSetView');\n if (redraw) {\n this.redraw(animation);\n }\n };\n /**\n * Convert projected units to pixel position\n *\n * @function Highcharts.MapView#projectedUnitsToPixels\n * @param {Highcharts.PositionObject} pos\n * The position in projected units\n * @return {Highcharts.PositionObject} The position in pixels\n */\n MapView.prototype.projectedUnitsToPixels = function (pos) {\n var scale = this.getScale(), projectedCenter = this.projection.forward(this.center), field = this.playingField, centerPxX = field.x + field.width / 2, centerPxY = field.y + field.height / 2;\n var x = centerPxX - scale * (projectedCenter[0] - pos.x);\n var y = centerPxY + scale * (projectedCenter[1] - pos.y);\n return { x: x, y: y };\n };\n /**\n * Convert pixel position to longitude and latitude.\n *\n * @function Highcharts.MapView#pixelsToLonLat\n * @since 10.0.0\n * @param {Highcharts.PositionObject} pos\n * The position in pixels\n * @return {Highcharts.MapLonLatObject|undefined}\n * The map coordinates\n */\n MapView.prototype.pixelsToLonLat = function (pos) {\n return this.projectedUnitsToLonLat(this.pixelsToProjectedUnits(pos));\n };\n /**\n * Convert pixel position to projected units\n *\n * @function Highcharts.MapView#pixelsToProjectedUnits\n * @param {Highcharts.PositionObject} pos\n * The position in pixels\n * @return {Highcharts.PositionObject} The position in projected units\n */\n MapView.prototype.pixelsToProjectedUnits = function (pos) {\n var x = pos.x, y = pos.y, scale = this.getScale(), projectedCenter = this.projection.forward(this.center), field = this.playingField, centerPxX = field.x + field.width / 2, centerPxY = field.y + field.height / 2;\n var projectedX = projectedCenter[0] + (x - centerPxX) / scale;\n var projectedY = projectedCenter[1] - (y - centerPxY) / scale;\n return { x: projectedX, y: projectedY };\n };\n MapView.prototype.setUpEvents = function () {\n var _this = this;\n var chart = this.chart;\n // Set up panning and touch zoom for maps. In orthographic projections\n // the globe will rotate, otherwise adjust the map center and zoom.\n var mouseDownCenterProjected,\n mouseDownKey,\n mouseDownRotation;\n var onPan = function (e) {\n var _a = chart.pointer,\n lastTouches = _a.lastTouches,\n pinchDown = _a.pinchDown,\n projection = _this.projection,\n touches = e.touches;\n var mouseDownX = chart.mouseDownX,\n mouseDownY = chart.mouseDownY,\n howMuch = 0;\n if ((pinchDown === null || pinchDown === void 0 ? void 0 : pinchDown.length) === 1) {\n mouseDownX = pinchDown[0].chartX;\n mouseDownY = pinchDown[0].chartY;\n }\n else if ((pinchDown === null || pinchDown === void 0 ? void 0 : pinchDown.length) === 2) {\n mouseDownX = (pinchDown[0].chartX + pinchDown[1].chartX) / 2;\n mouseDownY = (pinchDown[0].chartY + pinchDown[1].chartY) / 2;\n }\n // How much has the distance between the fingers changed?\n if ((touches === null || touches === void 0 ? void 0 : touches.length) === 2 && lastTouches) {\n var startDistance = Math.sqrt(Math.pow(lastTouches[0].chartX - lastTouches[1].chartX, 2) +\n Math.pow(lastTouches[0].chartY - lastTouches[1].chartY, 2)),\n endDistance = Math.sqrt(Math.pow(touches[0].chartX - touches[1].chartX, 2) +\n Math.pow(touches[0].chartY - touches[1].chartY, 2));\n howMuch = Math.log(startDistance / endDistance) / Math.log(0.5);\n }\n if (MapView_isNumber(mouseDownX) && MapView_isNumber(mouseDownY)) {\n var key = \"\" + mouseDownX + \",\".concat(mouseDownY);\n var _b = e.originalEvent,\n chartX = _b.chartX,\n chartY = _b.chartY;\n if ((touches === null || touches === void 0 ? void 0 : touches.length) === 2) {\n chartX = (touches[0].chartX + touches[1].chartX) / 2;\n chartY = (touches[0].chartY + touches[1].chartY) / 2;\n }\n // Reset starting position\n if (key !== mouseDownKey) {\n mouseDownKey = key;\n mouseDownCenterProjected = _this.projection\n .forward(_this.center);\n mouseDownRotation = (_this.projection.options.rotation || [0, 0]).slice();\n }\n // Get the natural zoom level of the projection itself when\n // zoomed to view the full world\n var worldBounds = projection.def && projection.def.bounds,\n worldZoom = (worldBounds &&\n zoomFromBounds(worldBounds,\n _this.playingField)) || -Infinity;\n // Panning rotates the globe\n if (projection.options.name === 'Orthographic' &&\n ((touches === null || touches === void 0 ? void 0 : touches.length) || 0) < 2 &&\n // ... but don't rotate if we're loading only a part of the\n // world\n (_this.minZoom || Infinity) < worldZoom * 1.3) {\n // Empirical ratio where the globe rotates roughly the same\n // speed as moving the pointer across the center of the\n // projection\n var ratio = 440 / (_this.getScale() * Math.min(chart.plotWidth,\n chart.plotHeight));\n if (mouseDownRotation) {\n var lon = (mouseDownX - chartX) * ratio -\n mouseDownRotation[0],\n lat = MapView_clamp(-mouseDownRotation[1] -\n (mouseDownY - chartY) * ratio, -80, 80),\n zoom = _this.zoom;\n _this.update({\n projection: {\n rotation: [-lon, -lat]\n }\n }, false);\n _this.fitToBounds(void 0, void 0, false);\n _this.zoom = zoom;\n chart.redraw(false);\n }\n // #17925 Skip NaN values\n }\n else if (MapView_isNumber(chartX) && MapView_isNumber(chartY)) {\n // #17238\n var scale = _this.getScale(),\n flipFactor = _this.projection.hasCoordinates ? 1 : -1;\n var newCenter = _this.projection.inverse([\n mouseDownCenterProjected[0] +\n (mouseDownX - chartX) / scale,\n mouseDownCenterProjected[1] -\n (mouseDownY - chartY) / scale * flipFactor\n ]);\n // #19190 Skip NaN coords\n if (!isNaN(newCenter[0] + newCenter[1])) {\n _this.zoomBy(howMuch, newCenter, void 0, false);\n }\n }\n e.preventDefault();\n }\n };\n MapView_addEvent(chart, 'pan', onPan);\n MapView_addEvent(chart, 'touchpan', onPan);\n // Perform the map zoom by selection\n MapView_addEvent(chart, 'selection', function (evt) {\n // Zoom in\n if (!evt.resetSelection) {\n var x = evt.x - chart.plotLeft;\n var y = evt.y - chart.plotTop;\n var _a = _this.pixelsToProjectedUnits({ x: x,\n y: y }),\n y1 = _a.y,\n x1 = _a.x;\n var _b = _this.pixelsToProjectedUnits({ x: x + evt.width,\n y: y + evt.height }),\n y2 = _b.y,\n x2 = _b.x;\n _this.fitToBounds({ x1: x1, y1: y1, x2: x2, y2: y2 }, void 0, true, evt.originalEvent.touches ?\n // On touch zoom, don't animate, since we're already in\n // transformed zoom preview\n false :\n // On mouse zoom, obey the chart-level animation\n void 0);\n // Only for mouse. Touch users can pinch out.\n if (!/^touch/.test((evt.originalEvent.type))) {\n chart.showResetZoom();\n }\n evt.preventDefault();\n // Reset zoom\n }\n else {\n _this.zoomBy();\n }\n });\n };\n MapView.prototype.render = function () {\n // We need a group for the insets\n if (!this.group) {\n this.group = this.chart.renderer.g('map-view')\n .attr({ zIndex: 4 })\n .add();\n }\n };\n /**\n * Update the view with given options\n *\n * @function Highcharts.MapView#update\n *\n * @param {Partial<Highcharts.MapViewOptions>} options\n * The new map view options to apply\n * @param {boolean} [redraw=true]\n * Whether to redraw immediately\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * The animation to apply to a the redraw\n */\n MapView.prototype.update = function (options, redraw, animation) {\n if (redraw === void 0) { redraw = true; }\n var newProjection = options.projection,\n isDirtyProjection = newProjection && ((Maps_Projection.toString(newProjection) !==\n Maps_Projection.toString(this.options.projection)));\n var isDirtyInsets = false;\n MapView_merge(true, this.userOptions, options);\n MapView_merge(true, this.options, options);\n // If anything changed with the insets, destroy them all and create\n // again below\n if ('insets' in options) {\n this.insets.forEach(function (inset) { return inset.destroy(); });\n this.insets.length = 0;\n isDirtyInsets = true;\n }\n if (isDirtyProjection || 'fitToGeometry' in options) {\n delete this.fitToGeometryCache;\n }\n if (isDirtyProjection || isDirtyInsets) {\n this.chart.series.forEach(function (series) {\n var groups = series.transformGroups;\n if (series.clearBounds) {\n series.clearBounds();\n }\n series.isDirty = true;\n series.isDirtyData = true;\n // Destroy inset transform groups\n if (isDirtyInsets && groups) {\n while (groups.length > 1) {\n var group = groups.pop();\n if (group) {\n group.destroy();\n }\n }\n }\n });\n if (isDirtyProjection) {\n this.projection = new Maps_Projection(this.options.projection);\n }\n // Create new insets\n if (isDirtyInsets) {\n this.createInsets();\n }\n // Fit to natural bounds if center/zoom are not explicitly given\n if (!options.center &&\n // Do not fire fitToBounds if user don't want to set zoom\n Object.hasOwnProperty.call(options, 'zoom') &&\n !MapView_isNumber(options.zoom)) {\n this.fitToBounds(void 0, void 0, false);\n }\n }\n if (options.center || MapView_isNumber(options.zoom)) {\n this.setView(this.options.center, options.zoom, false);\n }\n else if ('fitToGeometry' in options) {\n this.fitToBounds(void 0, void 0, false);\n }\n if (redraw) {\n this.chart.redraw(animation);\n }\n };\n /**\n * Zoom the map view by a given number\n *\n * @function Highcharts.MapView#zoomBy\n *\n * @param {number|undefined} [howMuch]\n * The amount of zoom to apply. 1 zooms in on half the current view,\n * -1 zooms out. Pass `undefined` to zoom to the full bounds of the\n * map.\n * @param {Highcharts.LonLatArray} [coords]\n * Optional map coordinates to keep fixed\n * @param {Array<number>} [chartCoords]\n * Optional chart coordinates to keep fixed, in pixels\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * The animation to apply to a the redraw\n */\n MapView.prototype.zoomBy = function (howMuch, coords, chartCoords, animation) {\n var chart = this.chart,\n projectedCenter = this.projection.forward(this.center);\n if (typeof howMuch === 'number') {\n var zoom = this.zoom + howMuch;\n var center = void 0,\n x = void 0,\n y = void 0;\n // Keep chartX and chartY stationary - convert to lat and lng\n if (chartCoords) {\n var chartX = chartCoords[0],\n chartY = chartCoords[1];\n var scale = this.getScale();\n var offsetX = chartX - chart.plotLeft - chart.plotWidth / 2;\n var offsetY = chartY - chart.plotTop - chart.plotHeight / 2;\n x = projectedCenter[0] + offsetX / scale;\n y = projectedCenter[1] + offsetY / scale;\n }\n // Keep lon and lat stationary by adjusting the center\n if (typeof x === 'number' && typeof y === 'number') {\n var scale = 1 - Math.pow(2,\n this.zoom) / Math.pow(2,\n zoom);\n var offsetX = projectedCenter[0] - x;\n var offsetY = projectedCenter[1] - y;\n projectedCenter[0] -= offsetX * scale;\n projectedCenter[1] += offsetY * scale;\n center = this.projection.inverse(projectedCenter);\n }\n this.setView(coords || center, zoom, void 0, animation);\n // Undefined howMuch => reset zoom\n }\n else {\n this.fitToBounds(void 0, void 0, void 0, animation);\n }\n };\n return MapView;\n}());\n// Putting this in the same file due to circular dependency with MapView\nvar MapViewInset = /** @class */ (function (_super) {\n MapView_extends(MapViewInset, _super);\n /* *\n *\n * Constructor\n *\n * */\n function MapViewInset(mapView, options) {\n var _this = _super.call(this,\n mapView.chart,\n options) || this;\n _this.id = options.id;\n _this.mapView = mapView;\n _this.options = MapView_merge({ center: [0, 0] }, mapView.options.insetOptions, options);\n _this.allBounds = [];\n if (_this.options.geoBounds) {\n // The path in projected units in the map view's main projection.\n // This is used for hit testing where the points should render.\n var path = mapView.projection.path(_this.options.geoBounds);\n _this.geoBoundsProjectedBox = MapView_boundsFromPath(path);\n _this.geoBoundsProjectedPolygon = path.map(function (segment) { return [\n segment[1] || 0,\n segment[2] || 0\n ]; });\n }\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the playing field in pixels\n * @private\n */\n MapViewInset.prototype.getField = function (padded) {\n if (padded === void 0) { padded = true; }\n var hitZone = this.hitZone;\n if (hitZone) {\n var padding = padded ? this.padding : [0, 0, 0, 0],\n polygon = hitZone.coordinates[0],\n xs = polygon.map(function (xy) { return xy[0]; }),\n ys = polygon.map(function (xy) { return xy[1]; }),\n x = Math.min.apply(0,\n xs) + padding[3],\n x2 = Math.max.apply(0,\n xs) - padding[1],\n y = Math.min.apply(0,\n ys) + padding[0],\n y2 = Math.max.apply(0,\n ys) - padding[2];\n if (MapView_isNumber(x) && MapView_isNumber(y)) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n }\n // Fall back to plot area\n return _super.prototype.getField.call(this, padded);\n };\n /**\n * Get the hit zone in pixels.\n * @private\n */\n MapViewInset.prototype.getHitZone = function () {\n var _a = this,\n chart = _a.chart,\n mapView = _a.mapView,\n options = _a.options,\n coordinates = (options.field || {}).coordinates;\n if (coordinates) {\n var polygon = coordinates[0];\n if (options.units === 'percent') {\n var relativeTo_1 = options.relativeTo === 'mapBoundingBox' &&\n mapView.getMapBBox() ||\n MapView_merge(chart.plotBox, { x: 0,\n y: 0 });\n polygon = polygon.map(function (xy) { return [\n MapView_relativeLength(\"\" + xy[0] + \"%\", relativeTo_1.width, relativeTo_1.x),\n MapView_relativeLength(\"\" + xy[1] + \"%\", relativeTo_1.height, relativeTo_1.y)\n ]; });\n }\n return {\n type: 'Polygon',\n coordinates: [polygon]\n };\n }\n };\n MapViewInset.prototype.getProjectedBounds = function () {\n return MapView.compositeBounds(this.allBounds);\n };\n /**\n * Determine whether a point on the main projected plane is inside the\n * geoBounds of the inset.\n * @private\n */\n MapViewInset.prototype.isInside = function (point) {\n var _a = this,\n geoBoundsProjectedBox = _a.geoBoundsProjectedBox,\n geoBoundsProjectedPolygon = _a.geoBoundsProjectedPolygon;\n return Boolean(\n // First we do a pre-pass to check whether the test point is inside\n // the rectangular bounding box of the polygon. This is less\n // expensive and will rule out most cases.\n geoBoundsProjectedBox &&\n point.x >= geoBoundsProjectedBox.x1 &&\n point.x <= geoBoundsProjectedBox.x2 &&\n point.y >= geoBoundsProjectedBox.y1 &&\n point.y <= geoBoundsProjectedBox.y2 &&\n // Next, do the more expensive check whether the point is inside the\n // polygon itself.\n geoBoundsProjectedPolygon &&\n pointInPolygon(point, geoBoundsProjectedPolygon));\n };\n /**\n * Render the map view inset with the border path\n * @private\n */\n MapViewInset.prototype.render = function () {\n var _a = this,\n chart = _a.chart,\n mapView = _a.mapView,\n options = _a.options,\n borderPath = options.borderPath || options.field;\n if (borderPath && mapView.group) {\n var animate = true;\n if (!this.border) {\n this.border = chart.renderer\n .path()\n .addClass('highcharts-mapview-inset-border')\n .add(mapView.group);\n animate = false;\n }\n if (!chart.styledMode) {\n this.border.attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth\n });\n }\n var strokeWidth_1 = this.border.strokeWidth(),\n field_1 = (options.relativeTo === 'mapBoundingBox' &&\n mapView.getMapBBox()) || mapView.playingField;\n var d = (borderPath.coordinates || []).reduce(function (d,\n lineString) {\n return lineString.reduce(function (d,\n point,\n i) {\n var x = point[0],\n y = point[1];\n if (options.units === 'percent') {\n x = chart.plotLeft + MapView_relativeLength(\"\" + x + \"%\", field_1.width, field_1.x);\n y = chart.plotTop + MapView_relativeLength(\"\" + y + \"%\", field_1.height, field_1.y);\n }\n x = crisp(x, strokeWidth_1);\n y = crisp(y, strokeWidth_1);\n d.push(i === 0 ? ['M', x, y] : ['L', x, y]);\n return d;\n }, d);\n }, []);\n // Apply the border path\n this.border[animate ? 'animate' : 'attr']({ d: d });\n }\n };\n MapViewInset.prototype.destroy = function () {\n if (this.border) {\n this.border = this.border.destroy();\n }\n this.eventsToUnbind.forEach(function (f) { return f(); });\n };\n /**\n * No chart-level events for insets\n * @private\n */\n MapViewInset.prototype.setUpEvents = function () { };\n return MapViewInset;\n}(MapView));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Maps_MapView = (MapView);\n\n;// ./code/es5/es-modules/Series/Map/MapSeries.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\nvar MapSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MapSeries_spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nvar animObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).animObject, stop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).stop;\n\n\n\nvar noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\nvar splitPath = Chart_MapChart.splitPath;\n\n\n\n\nvar _a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, \n// Indirect dependency to keep product size low\nColumnSeries = _a.column, ScatterSeries = _a.scatter;\n\nvar MapSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, MapSeries_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, getNestedProperty = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getNestedProperty, MapSeries_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, MapSeries_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, MapSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, MapSeries_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, MapSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, MapSeries_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, MapSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, MapSeries_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.map\n *\n * @augments Highcharts.Series\n */\nvar MapSeries = /** @class */ (function (_super) {\n MapSeries_extends(MapSeries, _super);\n function MapSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.processedData = [];\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * The initial animation for the map series. By default, animation is\n * disabled.\n * @private\n */\n MapSeries.prototype.animate = function (init) {\n var _a = this,\n chart = _a.chart,\n group = _a.group,\n animation = animObject(this.options.animation);\n // Initialize the animation\n if (init) {\n // Scale down the group and place it in the center\n group.attr({\n translateX: chart.plotLeft + chart.plotWidth / 2,\n translateY: chart.plotTop + chart.plotHeight / 2,\n scaleX: 0.001, // #1499\n scaleY: 0.001\n });\n // Run the animation\n }\n else {\n group.animate({\n translateX: chart.plotLeft,\n translateY: chart.plotTop,\n scaleX: 1,\n scaleY: 1\n }, animation);\n }\n };\n MapSeries.prototype.clearBounds = function () {\n this.points.forEach(function (point) {\n delete point.bounds;\n delete point.insetIndex;\n delete point.projectedPath;\n });\n delete this.bounds;\n };\n /**\n * Allow a quick redraw by just translating the area group. Used for zooming\n * and panning in capable browsers.\n * @private\n */\n MapSeries.prototype.doFullTranslate = function () {\n return Boolean(this.isDirtyData ||\n this.chart.isResizing ||\n !this.hasRendered);\n };\n /**\n * Draw the data labels. Special for maps is the time that the data labels\n * are drawn (after points), and the clipping of the dataLabelsGroup.\n * @private\n */\n MapSeries.prototype.drawMapDataLabels = function () {\n _super.prototype.drawDataLabels.call(this);\n if (this.dataLabelsGroup) {\n this.dataLabelsGroup.clip(this.chart.clipRect);\n }\n };\n /**\n * Use the drawPoints method of column, that is able to handle simple\n * shapeArgs. Extend it by assigning the tooltip position.\n * @private\n */\n MapSeries.prototype.drawPoints = function () {\n var _this = this;\n var series = this,\n _a = this,\n chart = _a.chart,\n group = _a.group,\n _b = _a.transformGroups,\n transformGroups = _b === void 0 ? [] : _b,\n mapView = chart.mapView,\n renderer = chart.renderer;\n if (!mapView) {\n return;\n }\n // Set groups that handle transform during zooming and panning in order\n // to preserve clipping on series.group\n this.transformGroups = transformGroups;\n if (!transformGroups[0]) {\n transformGroups[0] = renderer.g().add(group);\n }\n for (var i = 0, iEnd = mapView.insets.length; i < iEnd; ++i) {\n if (!transformGroups[i + 1]) {\n transformGroups.push(renderer.g().add(group));\n }\n }\n // Draw the shapes again\n if (this.doFullTranslate()) {\n // Individual point actions.\n this.points.forEach(function (point) {\n var graphic = point.graphic;\n // Points should be added in the corresponding transform group\n point.group = transformGroups[typeof point.insetIndex === 'number' ?\n point.insetIndex + 1 :\n 0];\n // When the point has been moved between insets after\n // MapView.update\n if (graphic && graphic.parentGroup !== point.group) {\n graphic.add(point.group);\n }\n });\n // Draw the points\n ColumnSeries.prototype.drawPoints.apply(this);\n // Add class names\n this.points.forEach(function (point) {\n var graphic = point.graphic;\n if (graphic) {\n var animate_1 = graphic.animate;\n var className = '';\n if (point.name) {\n className +=\n 'highcharts-name-' +\n point.name.replace(/ /g, '-').toLowerCase();\n }\n if (point.properties && point.properties['hc-key']) {\n className +=\n ' highcharts-key-' +\n point.properties['hc-key'].toString().toLowerCase();\n }\n if (className) {\n graphic.addClass(className);\n }\n // In styled mode, apply point colors by CSS\n if (chart.styledMode) {\n graphic.css(_this.pointAttribs(point, point.selected && 'select' || void 0));\n }\n // If the map point is not visible and is not null (e.g.\n // hidden by data classes), then the point should be\n // visible, but without value\n graphic.attr({\n visibility: (point.visible ||\n (!point.visible && !point.isNull)) ? 'inherit' : 'hidden'\n });\n graphic.animate = function (params, options, complete) {\n var animateIn = (MapSeries_isNumber(params['stroke-width']) &&\n !MapSeries_isNumber(graphic['stroke-width'])), animateOut = (MapSeries_isNumber(graphic['stroke-width']) &&\n !MapSeries_isNumber(params['stroke-width']));\n // When strokeWidth is animating\n if (animateIn || animateOut) {\n var strokeWidth = MapSeries_pick(series.getStrokeWidth(series.options), 1 // Styled mode\n ),\n inheritedStrokeWidth = (strokeWidth /\n (chart.mapView &&\n chart.mapView.getScale() ||\n 1));\n // For animating from undefined, .attr() reads the\n // property as the starting point\n if (animateIn) {\n graphic['stroke-width'] = inheritedStrokeWidth;\n }\n // For animating to undefined\n if (animateOut) {\n params['stroke-width'] = inheritedStrokeWidth;\n }\n }\n var ret = animate_1.call(graphic,\n params,\n options,\n animateOut ? function () {\n // Remove the attribute after finished animation\n graphic.element.removeAttribute('stroke-width');\n delete graphic['stroke-width'];\n // Proceed\n if (complete) {\n complete.apply(this, arguments);\n }\n } : complete);\n return ret;\n };\n }\n });\n }\n // Apply the SVG transform\n transformGroups.forEach(function (transformGroup, i) {\n var view = i === 0 ? mapView : mapView.insets[i - 1],\n svgTransform = view.getSVGTransform(),\n strokeWidth = MapSeries_pick(_this.getStrokeWidth(_this.options), 1 // Styled mode\n );\n /*\n Animate or move to the new zoom level. In order to prevent\n flickering as the different transform components are set out of sync\n (#5991), we run a fake animator attribute and set scale and\n translation synchronously in the same step.\n\n A possible improvement to the API would be to handle this in the\n renderer or animation engine itself, to ensure that when we are\n animating multiple properties, we make sure that each step for each\n property is performed in the same step. Also, for symbols and for\n transform properties, it should induce a single updateTransform and\n symbolAttr call.\n */\n var scale = svgTransform.scaleX,\n flipFactor = svgTransform.scaleY > 0 ? 1 : -1;\n var animatePoints = function (scale) {\n (series.points || []).forEach(function (point) {\n var graphic = point.graphic;\n var strokeWidth;\n if (graphic &&\n graphic['stroke-width'] &&\n (strokeWidth = _this.getStrokeWidth(point.options))) {\n graphic.attr({\n 'stroke-width': strokeWidth / scale\n });\n }\n });\n };\n if (renderer.globalAnimation &&\n chart.hasRendered &&\n mapView.allowTransformAnimation) {\n var startTranslateX_1 = Number(transformGroup.attr('translateX'));\n var startTranslateY_1 = Number(transformGroup.attr('translateY'));\n var startScale_1 = Number(transformGroup.attr('scaleX'));\n var step_1 = function (now,\n fx) {\n var scaleStep = startScale_1 +\n (scale - startScale_1) * fx.pos;\n transformGroup.attr({\n translateX: (startTranslateX_1 + (svgTransform.translateX - startTranslateX_1) * fx.pos),\n translateY: (startTranslateY_1 + (svgTransform.translateY - startTranslateY_1) * fx.pos),\n scaleX: scaleStep,\n scaleY: scaleStep * flipFactor,\n 'stroke-width': strokeWidth / scaleStep\n });\n animatePoints(scaleStep); // #18166\n };\n var animOptions = MapSeries_merge(animObject(renderer.globalAnimation)),\n userStep_1 = animOptions.step;\n animOptions.step = function () {\n if (userStep_1) {\n userStep_1.apply(this, arguments);\n }\n step_1.apply(this, arguments);\n };\n transformGroup\n .attr({ animator: 0 })\n .animate({ animator: 1 }, animOptions, function () {\n if (typeof renderer.globalAnimation !== 'boolean' &&\n renderer.globalAnimation.complete) {\n // Fire complete only from this place\n renderer.globalAnimation.complete({\n applyDrilldown: true\n });\n }\n MapSeries_fireEvent(this, 'mapZoomComplete');\n }.bind(_this));\n // When dragging or first rendering, animation is off\n }\n else {\n stop(transformGroup);\n transformGroup.attr(MapSeries_merge(svgTransform, { 'stroke-width': strokeWidth / scale }));\n animatePoints(scale); // #18166\n }\n });\n if (!this.isDrilling) {\n this.drawMapDataLabels();\n }\n };\n /**\n * Get the bounding box of all paths in the map combined.\n *\n */\n MapSeries.prototype.getProjectedBounds = function () {\n var _this = this;\n if (!this.bounds && this.chart.mapView) {\n var _a = this.chart.mapView,\n insets_1 = _a.insets,\n projection_1 = _a.projection,\n allBounds_1 = [];\n // Find the bounding box of each point\n (this.points || []).forEach(function (point) {\n if (point.path || point.geometry) {\n // @todo Try to put these two conversions in\n // MapPoint.applyOptions\n if (typeof point.path === 'string') {\n point.path = splitPath(point.path);\n // Legacy one-dimensional array\n }\n else if (MapSeries_isArray(point.path) &&\n point.path[0] === 'M') {\n point.path = _this.chart.renderer\n .pathToSegments(point.path);\n }\n // The first time a map point is used, analyze its box\n if (!point.bounds) {\n var bounds = point.getProjectedBounds(projection_1);\n if (bounds) {\n point.labelrank = MapSeries_pick(point.labelrank, \n // Bigger shape, higher rank\n ((bounds.x2 - bounds.x1) *\n (bounds.y2 - bounds.y1)));\n var midX_1 = bounds.midX,\n midY_1 = bounds.midY;\n if (insets_1 && MapSeries_isNumber(midX_1) && MapSeries_isNumber(midY_1)) {\n var inset = find(insets_1,\n function (inset) { return inset.isInside({\n x: midX_1,\n y: midY_1\n }); });\n if (inset) {\n // Project again, but with the inset\n // projection\n delete point.projectedPath;\n bounds = point.getProjectedBounds(inset.projection);\n if (bounds) {\n inset.allBounds.push(bounds);\n }\n point.insetIndex = insets_1.indexOf(inset);\n }\n }\n point.bounds = bounds;\n }\n }\n if (point.bounds && point.insetIndex === void 0) {\n allBounds_1.push(point.bounds);\n }\n }\n });\n this.bounds = Maps_MapView.compositeBounds(allBounds_1);\n }\n return this.bounds;\n };\n /**\n * Return the stroke-width either from a series options or point options\n * object. This function is used by both the map series where the\n * `borderWidth` sets the stroke-width, and the mapline series where the\n * `lineWidth` sets the stroke-width.\n * @private\n */\n MapSeries.prototype.getStrokeWidth = function (options) {\n var pointAttrToOptions = this.pointAttrToOptions;\n return options[pointAttrToOptions &&\n pointAttrToOptions['stroke-width'] || 'borderWidth'];\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n MapSeries.prototype.hasData = function () {\n return !!this.dataTable.rowCount;\n };\n /**\n * Get presentational attributes. In the maps series this runs in both\n * styled and non-styled mode, because colors hold data when a colorAxis is\n * used.\n * @private\n */\n MapSeries.prototype.pointAttribs = function (point, state) {\n var _a;\n var _b = point.series.chart,\n mapView = _b.mapView,\n styledMode = _b.styledMode;\n var attr = styledMode ?\n this.colorAttribs(point) :\n ColumnSeries.prototype.pointAttribs.call(this,\n point,\n state);\n // Individual stroke width\n var pointStrokeWidth = this.getStrokeWidth(point.options);\n // Handle state specific border or line width\n if (state) {\n var stateOptions = MapSeries_merge(this.options.states &&\n this.options.states[state],\n point.options.states &&\n point.options.states[state] ||\n {}),\n stateStrokeWidth = this.getStrokeWidth(stateOptions);\n if (MapSeries_defined(stateStrokeWidth)) {\n pointStrokeWidth = stateStrokeWidth;\n }\n attr.stroke = (_a = stateOptions.borderColor) !== null && _a !== void 0 ? _a : point.color;\n }\n if (pointStrokeWidth && mapView) {\n pointStrokeWidth /= mapView.getScale();\n }\n // In order for dash style to avoid being scaled, set the transformed\n // stroke width on the item\n var seriesStrokeWidth = this.getStrokeWidth(this.options);\n if (attr.dashstyle &&\n mapView &&\n MapSeries_isNumber(seriesStrokeWidth)) {\n pointStrokeWidth = seriesStrokeWidth / mapView.getScale();\n }\n // Invisible map points means that the data value is removed from the\n // map, but not the map area shape itself. Instead it is rendered like a\n // null point. To fully remove a map area, it should be removed from the\n // mapData.\n if (!point.visible) {\n attr.fill = this.options.nullColor;\n }\n if (MapSeries_defined(pointStrokeWidth)) {\n attr['stroke-width'] = pointStrokeWidth;\n }\n else {\n delete attr['stroke-width'];\n }\n attr['stroke-linecap'] = attr['stroke-linejoin'] = this.options.linecap;\n return attr;\n };\n MapSeries.prototype.updateData = function () {\n // #16782\n if (this.processedData) {\n return false;\n }\n return _super.prototype.updateData.apply(this, arguments);\n };\n /**\n * Extend setData to call processData and generatePoints immediately.\n * @private\n */\n MapSeries.prototype.setData = function (data, redraw, animation, updatePoints) {\n if (redraw === void 0) { redraw = true; }\n delete this.bounds;\n _super.prototype.setData.call(this, data, false, void 0, updatePoints);\n this.processData();\n this.generatePoints();\n if (redraw) {\n this.chart.redraw(animation);\n }\n };\n MapSeries.prototype.dataColumnKeys = function () {\n // No x data for maps\n return this.pointArrayMap;\n };\n /**\n * Extend processData to join in mapData. If the allAreas option is true,\n * all areas from the mapData are used, and those that don't correspond to a\n * data value are given null values. The results are stored in\n * `processedData` in order to avoid mutating `data`.\n * @private\n */\n MapSeries.prototype.processData = function () {\n var options = this.options,\n data = options.data,\n chart = this.chart,\n chartOptions = chart.options.chart,\n joinBy = this.joinBy,\n pointArrayMap = options.keys || this.pointArrayMap,\n dataUsed = [],\n mapMap = {},\n mapView = this.chart.mapView,\n mapDataObject = mapView && (\n // Get map either from series or global\n MapSeries_isObject(options.mapData,\n true) ?\n mapView.getGeoMap(options.mapData) : mapView.geoMap), \n // Pick up transform definitions for chart\n mapTransforms = chart.mapTransforms =\n chartOptions.mapTransforms ||\n mapDataObject && mapDataObject['hc-transform'] ||\n chart.mapTransforms;\n var mapPoint,\n props;\n // Cache cos/sin of transform rotation angle\n if (mapTransforms) {\n MapSeries_objectEach(mapTransforms, function (transform) {\n if (transform.rotation) {\n transform.cosAngle = Math.cos(transform.rotation);\n transform.sinAngle = Math.sin(transform.rotation);\n }\n });\n }\n var mapData;\n if (MapSeries_isArray(options.mapData)) {\n mapData = options.mapData;\n }\n else if (mapDataObject && mapDataObject.type === 'FeatureCollection') {\n this.mapTitle = mapDataObject.title;\n mapData = highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().geojson(mapDataObject, this.type, this);\n }\n // Reset processedData\n this.processedData = [];\n var processedData = this.processedData;\n // Pick up numeric values, add index. Convert Array point definitions to\n // objects using pointArrayMap.\n if (data) {\n var val = void 0;\n for (var i = 0, iEnd = data.length; i < iEnd; ++i) {\n val = data[i];\n if (MapSeries_isNumber(val)) {\n processedData[i] = {\n value: val\n };\n }\n else if (MapSeries_isArray(val)) {\n var ix = 0;\n processedData[i] = {};\n // Automatically copy first item to hc-key if there is\n // an extra leading string\n if (!options.keys &&\n val.length > pointArrayMap.length &&\n typeof val[0] === 'string') {\n processedData[i]['hc-key'] = val[0];\n ++ix;\n }\n // Run through pointArrayMap and what's left of the\n // point data array in parallel, copying over the values\n for (var j = 0; j < pointArrayMap.length; ++j, ++ix) {\n if (pointArrayMap[j] &&\n typeof val[ix] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n Map_MapPoint.prototype.setNestedProperty(processedData[i], val[ix], pointArrayMap[j]);\n }\n else {\n processedData[i][pointArrayMap[j]] = val[ix];\n }\n }\n }\n }\n else {\n processedData[i] = data[i];\n }\n if (joinBy &&\n joinBy[0] === '_i') {\n processedData[i]._i = i;\n }\n }\n }\n if (mapData) {\n this.mapData = mapData;\n this.mapMap = {};\n for (var i = 0; i < mapData.length; i++) {\n mapPoint = mapData[i];\n props = mapPoint.properties;\n mapPoint._i = i;\n // Copy the property over to root for faster access\n if (joinBy[0] && props && props[joinBy[0]]) {\n mapPoint[joinBy[0]] = props[joinBy[0]];\n }\n mapMap[mapPoint[joinBy[0]]] = mapPoint;\n }\n this.mapMap = mapMap;\n // Registered the point codes that actually hold data\n if (joinBy[1]) {\n var joinKey_1 = joinBy[1];\n processedData.forEach(function (pointOptions) {\n var mapKey = getNestedProperty(joinKey_1,\n pointOptions);\n if (mapMap[mapKey]) {\n dataUsed.push(mapMap[mapKey]);\n }\n });\n }\n if (options.allAreas) {\n // Register the point codes that actually hold data\n if (joinBy[1]) {\n var joinKey_2 = joinBy[1];\n processedData.forEach(function (pointOptions) {\n dataUsed.push(getNestedProperty(joinKey_2, pointOptions));\n });\n }\n // Add those map points that don't correspond to data, which\n // will be drawn as null points. Searching a string is faster\n // than Array.indexOf\n var dataUsedString_1 = ('|' +\n dataUsed\n .map(function (point) {\n return point && point[joinBy[0]];\n })\n .join('|') +\n '|');\n mapData.forEach(function (mapPoint) {\n if (!joinBy[0] ||\n dataUsedString_1.indexOf('|' +\n mapPoint[joinBy[0]] +\n '|') === -1) {\n processedData.push(MapSeries_merge(mapPoint, { value: null }));\n }\n });\n }\n }\n // The processedXData array is used by general chart logic for checking\n // data length in various scanarios.\n this.dataTable.rowCount = processedData.length;\n return void 0;\n };\n /**\n * Extend setOptions by picking up the joinBy option and applying it to a\n * series property.\n * @private\n */\n MapSeries.prototype.setOptions = function (itemOptions) {\n var options = _super.prototype.setOptions.call(this,\n itemOptions);\n var joinBy = options.joinBy;\n if (options.joinBy === null) {\n joinBy = '_i';\n }\n if (joinBy) {\n this.joinBy = MapSeries_splat(joinBy);\n if (!this.joinBy[1]) {\n this.joinBy[1] = this.joinBy[0];\n }\n }\n return options;\n };\n /**\n * Add the path option for data points. Find the max value for color\n * calculation.\n * @private\n */\n MapSeries.prototype.translate = function () {\n var series = this,\n doFullTranslate = series.doFullTranslate(),\n mapView = this.chart.mapView,\n projection = mapView && mapView.projection;\n // Recalculate box on updated data\n if (this.chart.hasRendered && (this.isDirtyData || !this.hasRendered)) {\n this.processData();\n this.generatePoints();\n delete this.bounds;\n if (mapView &&\n !mapView.userOptions.center &&\n !MapSeries_isNumber(mapView.userOptions.zoom) &&\n mapView.zoom === mapView.minZoom // #18542 don't zoom out if\n // map is zoomed\n ) {\n // Not only recalculate bounds but also fit view\n mapView.fitToBounds(void 0, void 0, false); // #17012\n }\n else {\n // If center and zoom is defined in user options, get bounds but\n // don't change view\n this.getProjectedBounds();\n }\n }\n if (mapView) {\n var mainSvgTransform_1 = mapView.getSVGTransform();\n series.points.forEach(function (point) {\n var svgTransform = (MapSeries_isNumber(point.insetIndex) &&\n mapView.insets[point.insetIndex].getSVGTransform()) || mainSvgTransform_1;\n // Record the middle point (loosely based on centroid),\n // determined by the middleX and middleY options.\n if (svgTransform &&\n point.bounds &&\n MapSeries_isNumber(point.bounds.midX) &&\n MapSeries_isNumber(point.bounds.midY)) {\n point.plotX = point.bounds.midX * svgTransform.scaleX +\n svgTransform.translateX;\n point.plotY = point.bounds.midY * svgTransform.scaleY +\n svgTransform.translateY;\n }\n if (doFullTranslate) {\n point.shapeType = 'path';\n point.shapeArgs = {\n d: Map_MapPoint.getProjectedPath(point, projection)\n };\n }\n if (!point.hiddenInDataClass) { // #20441\n if (point.projectedPath && !point.projectedPath.length) {\n point.setVisible(false);\n }\n else if (!point.visible) {\n point.setVisible(true);\n }\n }\n });\n }\n MapSeries_fireEvent(series, 'afterTranslate');\n };\n MapSeries.prototype.update = function (options) {\n var _this = this;\n var _a;\n // Calculate and set the recommended map view after every series update\n // if new mapData is set\n if (options.mapData) {\n (_a = this.chart.mapView) === null || _a === void 0 ? void 0 : _a.recommendMapView(this.chart, MapSeries_spreadArray([\n this.chart.options.chart.map\n ], (this.chart.options.series || []).map(function (s, i) {\n if (i === _this._i) {\n return options.mapData;\n }\n return s.mapData;\n }), true), true);\n }\n _super.prototype.update.apply(this, arguments);\n };\n MapSeries.defaultOptions = MapSeries_merge(ScatterSeries.defaultOptions, Map_MapSeriesDefaults);\n return MapSeries;\n}(ScatterSeries));\nMapSeries_extend(MapSeries.prototype, {\n type: 'map',\n axisTypes: Series_ColorMapComposition.seriesMembers.axisTypes,\n colorAttribs: Series_ColorMapComposition.seriesMembers.colorAttribs,\n colorKey: Series_ColorMapComposition.seriesMembers.colorKey,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n // We need the points' bounding boxes in order to draw the data labels,\n // so we skip it now and call it from drawPoints instead.\n drawDataLabels: noop,\n // No graph for the map series\n drawGraph: noop,\n forceDL: true,\n getCenter: Series_CenteredUtilities.getCenter,\n getExtremesFromAll: true,\n getSymbol: noop,\n isCartesian: false,\n parallelArrays: Series_ColorMapComposition.seriesMembers.parallelArrays,\n pointArrayMap: Series_ColorMapComposition.seriesMembers.pointArrayMap,\n pointClass: Map_MapPoint,\n // X axis and Y axis must have same translation slope\n preserveAspectRatio: true,\n searchPoint: noop,\n trackerGroups: Series_ColorMapComposition.seriesMembers.trackerGroups,\n // Get axis extremes from paths, not values\n useMapGeometry: true\n});\nSeries_ColorMapComposition.compose(MapSeries);\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('map', MapSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Map_MapSeries = (MapSeries);\n\n;// ./code/es5/es-modules/Series/MapLine/MapLineSeriesDefaults.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 mapline series is a special case of the map series where the value\n * colors are applied to the strokes rather than the fills. It can also be\n * used for freeform drawing, like dividers, in the map.\n *\n * @sample maps/demo/mapline-mappoint/\n * Mapline and map-point chart\n * @sample maps/demo/animated-mapline/\n * Mapline with CSS keyframe animation\n * @sample maps/demo/flight-routes\n * Flight routes\n *\n * @extends plotOptions.map\n * @excluding dragDrop\n * @product highmaps\n * @optionparent plotOptions.mapline\n */\nvar MapLineSeriesDefaults = {\n /**\n * Pixel width of the mapline line.\n *\n * @type {number}\n * @since 10.3.3\n * @product highmaps\n * @default 1\n * @apioption plotOptions.mapline.lineWidth\n */\n lineWidth: 1,\n /**\n * Fill color for the map line shapes\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: 'none',\n legendSymbol: 'lineMarker'\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapLine_MapLineSeriesDefaults = (MapLineSeriesDefaults);\n/**\n * A `mapline` series. If the [type](#series.mapline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.mapline\n * @excluding dataParser, dataURL, dragDrop, marker\n * @product highmaps\n * @apioption series.mapline\n */\n/**\n * An array of data points for the series. For the `mapline` 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\n * will be interpreted as `value` options. Example:\n *\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\n * to `[hc-key, value]`. Example:\n *\n * ```js\n * data: [\n * ['us-ny', 0],\n * ['us-mi', 5],\n * ['us-tx', 3],\n * ['us-ak', 5]\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 data\n * points exceeds the series' [turboThreshold](#series.map.turboThreshold),\n * this option is not available.\n *\n * ```js\n * data: [{\n * value: 6,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * value: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array<number|Array<string,(number|null)>|null|*>}\n * @extends series.map.data\n * @excluding drilldown\n * @product highmaps\n * @apioption series.mapline.data\n */\n/**\n * Pixel width of the mapline line.\n *\n * @type {number}\n * @since 10.2.0\n * @product highmaps\n * @apioption plotOptions.mapline.states.hover.lineWidth\n */\n/**\n * Pixel width of the mapline line.\n *\n * @type {number|undefined}\n * @since 10.3.3\n * @product highmaps\n * @apioption series.mapline.data.lineWidth\n */\n/**\n *\n * @type {number}\n * @product highmaps\n * @excluding borderWidth\n * @apioption plotOptions.mapline.states.hover\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Series/MapLine/MapLineSeries.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\nvar MapLineSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\nvar MapLineSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, MapLineSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.mapline\n *\n * @augments Highcharts.Series\n */\nvar MapLineSeries = /** @class */ (function (_super) {\n MapLineSeries_extends(MapLineSeries, _super);\n function MapLineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get presentational attributes\n * @private\n * @function Highcharts.seriesTypes.mapline#pointAttribs\n */\n MapLineSeries.prototype.pointAttribs = function (point, state) {\n var attr = _super.prototype.pointAttribs.call(this,\n point,\n state);\n // The difference from a map series is that the stroke takes the\n // point color\n attr.fill = this.options.fillColor;\n return attr;\n };\n /* *\n *\n * Static Properties\n *\n * */\n MapLineSeries.defaultOptions = MapLineSeries_merge(Map_MapSeries.defaultOptions, MapLine_MapLineSeriesDefaults);\n return MapLineSeries;\n}(Map_MapSeries));\nMapLineSeries_extend(MapLineSeries.prototype, {\n type: 'mapline',\n colorProp: 'stroke',\n pointAttrToOptions: {\n 'stroke': 'color',\n 'stroke-width': 'lineWidth'\n }\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('mapline', MapLineSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapLine_MapLineSeries = ((/* unused pure expression or super */ null && (MapLineSeries)));\n\n;// ./code/es5/es-modules/Series/MapPoint/MapPointPoint.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\nvar MapPointPoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar MapPointPoint_ScatterSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.scatter;\n\nvar MapPointPoint_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n * Class\n *\n * */\nvar MapPointPoint = /** @class */ (function (_super) {\n MapPointPoint_extends(MapPointPoint, _super);\n function MapPointPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n MapPointPoint.prototype.isValid = function () {\n return Boolean(this.options.geometry ||\n (MapPointPoint_isNumber(this.x) && MapPointPoint_isNumber(this.y)) ||\n (MapPointPoint_isNumber(this.options.lon) && MapPointPoint_isNumber(this.options.lat)));\n };\n return MapPointPoint;\n}(MapPointPoint_ScatterSeries.prototype.pointClass));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapPoint_MapPointPoint = (MapPointPoint);\n\n;// ./code/es5/es-modules/Series/MapPoint/MapPointSeriesDefaults.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 mappoint series is a special form of scatter series where the points\n * can be laid out in map coordinates on top of a map.\n *\n * @sample maps/demo/mapline-mappoint/\n * Map-line and map-point series.\n * @sample maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n * @sample maps/demo/mappoint-datalabels-mapmarker\n * Using the mapmarker shape for data labels\n *\n * @extends plotOptions.scatter\n * @product highmaps\n * @optionparent plotOptions.mappoint\n */\nvar MapPointSeriesDefaults = {\n dataLabels: {\n crop: false,\n defer: false,\n enabled: true,\n formatter: function () {\n return this.point.name;\n },\n overflow: false,\n style: {\n /** @internal */\n color: \"#000000\" /* Palette.neutralColor100 */\n }\n },\n legendSymbol: 'lineMarker'\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapPoint_MapPointSeriesDefaults = (MapPointSeriesDefaults);\n/* *\n *\n * API Options\n *\n * */\n/**\n * A `mappoint` series. If the [type](#series.mappoint.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.mappoint\n * @excluding dataParser, dataURL\n * @product highmaps\n * @apioption series.mappoint\n */\n/**\n * An array of data points for the series. For the `mappoint` 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\n * to `[hc-key, value]`. Example:\n *\n * ```js\n * data: [\n * ['us-ny', 0],\n * ['us-mi', 5],\n * ['us-tx', 3],\n * ['us-ak', 5]\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.mappoint.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 7,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array<number|Array<number,(number|null)>|null|*>}\n * @extends series.map.data\n * @excluding labelrank, middleX, middleY, path, value\n * @product highmaps\n * @apioption series.mappoint.data\n */\n/**\n * The geometry of a point.\n *\n * To achieve a better separation between the structure and the data,\n * it is recommended to use `mapData` to define the geometry instead\n * of defining it on the data points themselves.\n *\n * The geometry object is compatible to that of a `feature` in geoJSON, so\n * features of geoJSON can be passed directly into the `data`, optionally\n * after first filtering and processing it.\n *\n * @sample maps/series/mappoint-line-geometry/\n * Map point and line geometry\n *\n * @type {Object}\n * @since 9.3.0\n * @product highmaps\n * @apioption series.mappoint.data.geometry\n */\n/**\n * The geometry type, which in case of the `mappoint` series is always `Point`.\n *\n * @type {string}\n * @since 9.3.0\n * @product highmaps\n * @validvalue [\"Point\"]\n * @apioption series.mappoint.data.geometry.type\n */\n/**\n * The geometry coordinates in terms of `[longitude, latitude]`.\n *\n * @type {Highcharts.LonLatArray}\n * @since 9.3.0\n * @product highmaps\n * @apioption series.mappoint.data.geometry.coordinates\n */\n/**\n * The latitude of the point. Must be combined with the `lon` option\n * to work. Overrides `x` and `y` values.\n *\n * @sample {highmaps} maps/demo/mappoint-latlon/\n * Point position by lat/lon\n *\n * @type {number}\n * @since 1.1.0\n * @product highmaps\n * @apioption series.mappoint.data.lat\n */\n/**\n * The longitude of the point. Must be combined with the `lon` option\n * to work. Overrides `x` and `y` values.\n *\n * @sample {highmaps} maps/demo/mappoint-latlon/\n * Point position by lat/lon\n *\n * @type {number}\n * @since 1.1.0\n * @product highmaps\n * @apioption series.mappoint.data.lon\n */\n/**\n * The x coordinate of the point in terms of projected units.\n *\n * @sample {highmaps} maps/series/mapline-mappoint-path-xy/\n * Map point demo\n *\n * @type {number}\n * @product highmaps\n * @apioption series.mappoint.data.x\n */\n/**\n * The x coordinate of the point in terms of projected units.\n *\n * @sample {highmaps} maps/series/mapline-mappoint-path-xy/\n * Map point demo\n *\n * @type {number|null}\n * @product highmaps\n * @apioption series.mappoint.data.y\n */\n/**\n * @type {number}\n * @product highmaps\n * @excluding borderColor, borderWidth\n * @apioption plotOptions.mappoint\n */\n(''); // Keeps doclets above in JS file\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\",\"types\",\"scatter\"],\"commonjs\":[\"highcharts\",\"Series\",\"types\",\"scatter\"],\"commonjs2\":[\"highcharts\",\"Series\",\"types\",\"scatter\"],\"root\":[\"Highcharts\",\"Series\",\"types\",\"scatter\"]}\nvar highcharts_Series_types_scatter_commonjs_highcharts_Series_types_scatter_commonjs2_highcharts_Series_types_scatter_root_Highcharts_Series_types_scatter_ = __webpack_require__(632);\n;// ./code/es5/es-modules/Series/MapPoint/MapPointSeries.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\nvar MapPointSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar MapPointSeries_noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\n\n\nvar MapPointSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, MapPointSeries_MapSeries = MapPointSeries_a.map, MapPointSeries_ScatterSeries = MapPointSeries_a.scatter;\n\n\nvar MapPointSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, MapPointSeries_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, MapPointSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, MapPointSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n\n\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.mappoint\n *\n * @augments Highcharts.Series\n */\nvar MapPointSeries = /** @class */ (function (_super) {\n MapPointSeries_extends(MapPointSeries, _super);\n function MapPointSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.clearBounds = MapPointSeries_MapSeries.prototype.clearBounds;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n MapPointSeries.prototype.drawDataLabels = function () {\n _super.prototype.drawDataLabels.call(this);\n if (this.dataLabelsGroup) {\n this.dataLabelsGroup.clip(this.chart.clipRect);\n }\n };\n /**\n * Resolve `lon`, `lat` or `geometry` options and project the resulted\n * coordinates.\n *\n * @private\n */\n MapPointSeries.prototype.projectPoint = function (pointOptions) {\n var mapView = this.chart.mapView;\n if (mapView) {\n var geometry = pointOptions.geometry,\n lon = pointOptions.lon,\n lat = pointOptions.lat;\n var coordinates = (geometry &&\n geometry.type === 'Point' &&\n geometry.coordinates);\n if (MapPointSeries_isNumber(lon) && MapPointSeries_isNumber(lat)) {\n coordinates = [lon, lat];\n }\n if (coordinates) {\n return mapView.lonLatToProjectedUnits({\n lon: coordinates[0],\n lat: coordinates[1]\n });\n }\n }\n };\n MapPointSeries.prototype.translate = function () {\n var _this = this;\n var mapView = this.chart.mapView;\n this.generatePoints();\n if (this.getProjectedBounds && this.isDirtyData) {\n delete this.bounds;\n this.getProjectedBounds(); // Added point needs bounds(#16598)\n }\n // Create map based translation\n if (mapView) {\n var mainSvgTransform_1 = mapView.getSVGTransform(),\n hasCoordinates_1 = mapView.projection.hasCoordinates;\n this.points.forEach(function (p) {\n var _a = p.x,\n x = _a === void 0 ? void 0 : _a,\n _b = p.y,\n y = _b === void 0 ? void 0 : _b;\n var svgTransform = (MapPointSeries_isNumber(p.insetIndex) &&\n mapView.insets[p.insetIndex].getSVGTransform()) || mainSvgTransform_1;\n var xy = (_this.projectPoint(p.options) ||\n (p.properties &&\n _this.projectPoint(p.properties)));\n var didBounds;\n if (xy) {\n x = xy.x;\n y = xy.y;\n // Map bubbles getting geometry from shape\n }\n else if (p.bounds) {\n x = p.bounds.midX;\n y = p.bounds.midY;\n if (svgTransform && MapPointSeries_isNumber(x) && MapPointSeries_isNumber(y)) {\n p.plotX = x * svgTransform.scaleX +\n svgTransform.translateX;\n p.plotY = y * svgTransform.scaleY +\n svgTransform.translateY;\n didBounds = true;\n }\n }\n if (MapPointSeries_isNumber(x) && MapPointSeries_isNumber(y)) {\n // Establish plotX and plotY\n if (!didBounds) {\n var plotCoords = mapView.projectedUnitsToPixels({ x: x,\n y: y });\n p.plotX = plotCoords.x;\n p.plotY = hasCoordinates_1 ?\n plotCoords.y :\n _this.chart.plotHeight - plotCoords.y;\n }\n }\n else {\n p.y = p.plotX = p.plotY = void 0;\n }\n p.isInside = _this.isPointInside(p);\n // Find point zone\n p.zone = _this.zones.length ? p.getZone() : void 0;\n });\n }\n MapPointSeries_fireEvent(this, 'afterTranslate');\n };\n MapPointSeries.defaultOptions = MapPointSeries_merge(MapPointSeries_ScatterSeries.defaultOptions, MapPoint_MapPointSeriesDefaults);\n return MapPointSeries;\n}(MapPointSeries_ScatterSeries));\n/* *\n *\n * Extra\n *\n * */\n/* *\n * The mapmarker symbol\n */\nvar mapmarker = function (x, y, w, h, options) {\n var isLegendSymbol = options && options.context === 'legend';\n var anchorX,\n anchorY;\n if (isLegendSymbol) {\n anchorX = x + w / 2;\n anchorY = y + h;\n // Put the pin in the anchor position (dataLabel.shape)\n }\n else if (options &&\n typeof options.anchorX === 'number' &&\n typeof options.anchorY === 'number') {\n anchorX = options.anchorX;\n anchorY = options.anchorY;\n // Put the pin in the center and shift upwards (point.marker.symbol)\n }\n else {\n anchorX = x + w / 2;\n anchorY = y + h / 2;\n y -= h;\n }\n var r = isLegendSymbol ? h / 3 : h / 2;\n return [\n ['M', anchorX, anchorY],\n ['C', anchorX, anchorY, anchorX - r, y + r * 1.5, anchorX - r, y + r],\n // A rx ry x-axis-rotation large-arc-flag sweep-flag x y\n ['A', r, r, 1, 1, 1, anchorX + r, y + r],\n ['C', anchorX + r, y + r * 1.5, anchorX, anchorY, anchorX, anchorY],\n ['Z']\n ];\n};\n(highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default()).prototype.symbols.mapmarker = mapmarker;\nMapPointSeries_extend(MapPointSeries.prototype, {\n type: 'mappoint',\n axisTypes: ['colorAxis'],\n forceDL: true,\n isCartesian: false,\n pointClass: MapPoint_MapPointPoint,\n searchPoint: MapPointSeries_noop,\n useMapGeometry: true // #16534\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('mappoint', MapPointSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapPoint_MapPointSeries = ((/* unused pure expression or super */ null && (MapPointSeries)));\n/* *\n *\n * API Options\n *\n * */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es5/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 */\nvar 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 */ var Bubble_BubbleLegendDefaults = (BubbleLegendDefaults);\n\n;// ./code/es5/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\nvar BubbleLegendItem_color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\n\nvar BubbleLegendItem_noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\nvar arrayMax = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMax, arrayMin = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMin, BubbleLegendItem_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, BubbleLegendItem_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, BubbleLegendItem_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, stableSort = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).stableSort;\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 */\nvar BubbleLegendItem = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function BubbleLegendItem(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 BubbleLegendItem.prototype.init = function (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 BubbleLegendItem.prototype.addToLegend = function (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 BubbleLegendItem.prototype.drawLegendSymbol = function (legend) {\n var itemDistance = BubbleLegendItem_pick(legend.options.itemDistance, 20),\n legendItem = this.legendItem || {},\n options = this.options,\n ranges = options.ranges,\n connectorDistance = options.connectorDistance;\n var 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 var maxLabel = this.getMaxLabelSize(),\n radius = this.ranges[0].radius,\n 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 BubbleLegendItem.prototype.setOptions = function () {\n var ranges = this.ranges,\n options = this.options,\n series = this.chart.series[options.seriesIndex],\n baseline = this.legend.baseline,\n bubbleAttribs = {\n zIndex: options.zIndex,\n 'stroke-width': options.borderWidth\n },\n connectorAttribs = {\n zIndex: options.zIndex,\n 'stroke-width': options.connectorWidth\n },\n labelAttribs = {\n align: (this.legend.options.rtl ||\n options.labels.align === 'left') ? 'right' : 'left',\n zIndex: options.zIndex\n },\n fillOpacity = series.options.marker.fillOpacity,\n 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 BubbleLegendItem_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 BubbleLegendItem.prototype.getRangeRadius = function (value) {\n var options = this.options,\n seriesIndex = this.options.seriesIndex,\n bubbleSeries = this.chart.series[seriesIndex],\n zMax = options.ranges[0].value,\n zMin = options.ranges[options.ranges.length - 1].value,\n minSize = options.minSize,\n 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 BubbleLegendItem.prototype.render = function () {\n var legendItem = this.legendItem || {},\n renderer = this.chart.renderer,\n 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 (var _i = 0, _a = this.ranges; _i < _a.length; _i++) {\n var range = _a[_i];\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 BubbleLegendItem.prototype.renderRange = function (range) {\n var 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 var 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 var 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 var 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 BubbleLegendItem.prototype.getMaxLabelSize = function () {\n var labels = this.symbols.labels;\n var maxLabel,\n 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 BubbleLegendItem.prototype.formatLabel = function (range) {\n var options = this.options,\n formatter = options.labels.formatter,\n format = options.labels.format;\n var numberFormatter = this.chart.numberFormatter;\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 BubbleLegendItem.prototype.hideOverlappingLabels = function () {\n var chart = this.chart,\n allowOverlap = this.options.labels.allowOverlap,\n 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 BubbleLegendItem.prototype.getRanges = function () {\n var bubbleLegend = this.legend.bubbleLegend,\n series = bubbleLegend.chart.series,\n rangesOptions = bubbleLegend.options.ranges;\n var ranges,\n zData,\n minZ = Number.MAX_VALUE,\n 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 BubbleLegendItem.prototype.predictBubbleSizes = function () {\n var chart = this.chart,\n legendOptions = chart.legend.options,\n floating = legendOptions.floating,\n horizontal = legendOptions.layout === 'horizontal',\n lastLineHeight = horizontal ? chart.legend.lastLineHeight : 0,\n plotSizeX = chart.plotSizeX,\n plotSizeY = chart.plotSizeY,\n bubbleSeries = chart.series[this.options.seriesIndex],\n pxSizes = bubbleSeries.getPxExtremes(),\n minSize = Math.ceil(pxSizes.minPxSize),\n maxPxSize = Math.ceil(pxSizes.maxPxSize),\n plotSize = Math.min(plotSizeY,\n plotSizeX);\n var calculatedSize,\n 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 BubbleLegendItem.prototype.updateRanges = function (min, max) {\n var 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 BubbleLegendItem.prototype.correctSizes = function () {\n var legend = this.legend,\n chart = this.chart,\n bubbleSeries = chart.series[this.options.seriesIndex],\n pxSizes = bubbleSeries.getPxExtremes(),\n bubbleSeriesSize = pxSizes.maxPxSize,\n 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 return BubbleLegendItem;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var 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/es5/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\nvar BubbleLegendComposition_setOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setOptions;\n\nvar BubbleLegendComposition_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar BubbleLegendComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, BubbleLegendComposition_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, BubbleLegendComposition_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, BubbleLegendComposition_wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\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 var chart = this,\n legend = chart.legend,\n bubbleSeries = getVisibleBubbleSeriesIndex(chart) >= 0;\n var bubbleLegendOptions,\n bubbleSizes,\n 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(function (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(function (axis) {\n axis.setScale();\n axis.updateNames();\n // Disable axis animation on init\n BubbleLegendComposition_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 (BubbleLegendComposition_pushUnique(BubbleLegendComposition_composed, 'Series.BubbleLegend')) {\n BubbleLegendComposition_setOptions({\n // Set default bubble legend options\n legend: {\n bubbleLegend: Bubble_BubbleLegendDefaults\n }\n });\n BubbleLegendComposition_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 var series = chart.series;\n var 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 var items = legend.allItems,\n lines = [],\n length = items.length;\n var lastLine,\n legendItem,\n legendItem2,\n i = 0,\n 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 var legend = this,\n bubbleLegend = legend.bubbleLegend,\n legendOptions = legend.options,\n options = legendOptions.bubbleLegend,\n 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 var legend = this,\n series = e.legendItem,\n chart = legend.chart,\n visible = series.visible;\n var 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 var items = legend.allItems,\n rtl = legend.options.rtl;\n var orgTranslateX,\n orgTranslateY,\n movementX,\n legendItem,\n actualLine = 0;\n items.forEach(function (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 * */\nvar BubbleLegendComposition = {\n compose: BubbleLegendComposition_compose\n};\n/* harmony default export */ var 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/es5/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\nvar BubblePoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar BubblePoint_ScatterPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.scatter.prototype.pointClass;\n\nvar BubblePoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend;\n/* *\n *\n * Class\n *\n * */\nvar BubblePoint = /** @class */ (function (_super) {\n BubblePoint_extends(BubblePoint, _super);\n function BubblePoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n BubblePoint.prototype.haloPath = function (size) {\n var computedSize = (size && this.marker ?\n this.marker.radius ||\n 0 :\n 0) + size;\n if (this.series.chart.inverted) {\n var pos = this.pos() || [0, 0],\n _a = this.series,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis,\n chart = _a.chart;\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 return BubblePoint;\n}(BubblePoint_ScatterPoint));\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 */ var Bubble_BubblePoint = (BubblePoint);\n\n;// ./code/es5/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\nvar BubbleSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\nvar BubbleSeries_color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar BubbleSeries_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed, BubbleSeries_noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\nvar BubbleSeries_Series = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, BubbleSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, BubbleSeries_columnProto = BubbleSeries_a.column.prototype, BubbleSeries_ScatterSeries = BubbleSeries_a.scatter;\n\nvar BubbleSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, BubbleSeries_arrayMax = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMax, BubbleSeries_arrayMin = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMin, BubbleSeries_clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, BubbleSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, BubbleSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, BubbleSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, BubbleSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, BubbleSeries_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\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 var _this = this;\n var axisLength = this.len,\n _a = this,\n coll = _a.coll,\n isXAxis = _a.isXAxis,\n min = _a.min,\n range = (this.max || 0) - (min || 0);\n var pxMin = 0,\n pxMax = axisLength,\n transA = axisLength / range,\n hasActiveSeries;\n if (coll !== 'xAxis' && coll !== 'yAxis') {\n return;\n }\n // Handle padding on the second pass, or on redraw\n this.series.forEach(function (series) {\n if (series.bubblePadding && series.reserveSpace()) {\n // Correction for #1673\n _this.allowZoomOutside = true;\n hasActiveSeries = true;\n var 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 var i = data.length;\n while (i--) {\n if (BubbleSeries_isNumber(data[i]) &&\n _this.dataMin <= data[i] &&\n data[i] <= _this.max) {\n var 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(function (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 var _a;\n var _b = this,\n ticks = _b.ticks,\n tickPositions = _b.tickPositions,\n _c = _b.dataMin,\n dataMin = _c === void 0 ? 0 : _c,\n _d = _b.dataMax,\n dataMax = _d === void 0 ? 0 : _d,\n categories = _b.categories,\n type = this.options.type;\n if (((categories === null || categories === void 0 ? void 0 : categories.length) || type === 'category') &&\n this.series.find(function (s) { return s.bubblePadding; })) {\n var tickCount = tickPositions.length;\n while (tickCount--) {\n var tick = ticks[tickPositions[tickCount]],\n pos = tick.pos || 0;\n if (pos > dataMax || pos < dataMin) {\n (_a = tick.label) === null || _a === void 0 ? void 0 : _a.hide();\n }\n }\n }\n}\n/* *\n *\n * Class\n *\n * */\nvar BubbleSeries = /** @class */ (function (_super) {\n BubbleSeries_extends(BubbleSeries, _super);\n function BubbleSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n BubbleSeries.compose = function (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 BubbleSeries.prototype.animate = function (init) {\n if (!init &&\n this.points.length < this.options.animationLimit // #8099\n ) {\n this.points.forEach(function (point) {\n var graphic = point.graphic,\n _a = point.plotX,\n plotX = _a === void 0 ? 0 : _a,\n _b = point.plotY,\n plotY = _b === void 0 ? 0 : _b;\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 BubbleSeries.prototype.getRadii = function () {\n var zData = this.getColumn('z'), yData = this.getColumn('y'), radii = [];\n var len,\n i,\n value,\n zExtremes = this.chart.bubbleZExtremes;\n var _a = this.getPxExtremes(),\n minPxSize = _a.minPxSize,\n maxPxSize = _a.maxPxSize;\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 var zMin_1 = Number.MAX_VALUE;\n var zMax_1 = -Number.MAX_VALUE;\n var valid_1;\n this.chart.series.forEach(function (otherSeries) {\n if (otherSeries.bubblePadding && otherSeries.reserveSpace()) {\n var zExtremes_1 = (otherSeries.onPoint || otherSeries).getZExtremes();\n if (zExtremes_1) {\n // Changed '||' to 'pick' because min or max can be 0.\n // #17280\n zMin_1 = Math.min(BubbleSeries_pick(zMin_1, zExtremes_1.zMin), zExtremes_1.zMin);\n zMax_1 = Math.max(BubbleSeries_pick(zMax_1, zExtremes_1.zMax), zExtremes_1.zMax);\n valid_1 = true;\n }\n }\n });\n if (valid_1) {\n zExtremes = { zMin: zMin_1, zMax: zMax_1 };\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 BubbleSeries.prototype.getRadius = function (zMin, zMax, minSize, maxSize, value, yValue) {\n var options = this.options,\n sizeByArea = options.sizeBy !== 'width',\n zThreshold = options.zThreshold;\n var zRange = zMax - zMin,\n 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 BubbleSeries.prototype.hasData = function () {\n return !!this.dataTable.rowCount;\n };\n /**\n * @private\n */\n BubbleSeries.prototype.markerAttribs = function (point, state) {\n var attr = _super.prototype.markerAttribs.call(this,\n point,\n state),\n _a = attr.height,\n height = _a === void 0 ? 0 : _a,\n _b = attr.width,\n width = _b === void 0 ? 0 : _b;\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 BubbleSeries.prototype.pointAttribs = function (point, state) {\n var markerOptions = this.options.marker,\n fillOpacity = markerOptions.fillOpacity,\n attr = BubbleSeries_Series.prototype.pointAttribs.call(this,\n point,\n 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 BubbleSeries.prototype.translate = function () {\n // Run the parent method\n _super.prototype.translate.call(this);\n this.getRadii();\n this.translateBubble();\n };\n BubbleSeries.prototype.translateBubble = function () {\n var _a = this,\n data = _a.data,\n options = _a.options,\n radii = _a.radii,\n minPxSize = this.getPxExtremes().minPxSize;\n // Set the shape type and arguments to be picked up in drawPoints\n var i = data.length;\n while (i--) {\n var point = data[i],\n 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: 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 BubbleSeries.prototype.getPxExtremes = function () {\n var smallestSize = Math.min(this.chart.plotWidth,\n this.chart.plotHeight);\n var getPxSize = function (length) {\n var 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 var minPxSize = getPxSize(BubbleSeries_pick(this.options.minSize, 8));\n // Prioritize min size if conflict to make sure bubbles are\n // always visible. #5873\n var maxPxSize = Math.max(getPxSize(BubbleSeries_pick(this.options.maxSize, '20%')),\n minPxSize);\n return { minPxSize: minPxSize, maxPxSize: maxPxSize };\n };\n BubbleSeries.prototype.getZExtremes = function () {\n var options = this.options,\n zData = this.getColumn('z').filter(BubbleSeries_isNumber);\n if (zData.length) {\n var zMin = BubbleSeries_pick(options.zMin,\n BubbleSeries_clamp(BubbleSeries_arrayMin(zData),\n options.displayNegative === false ?\n (options.zThreshold || 0) :\n -Number.MAX_VALUE,\n Number.MAX_VALUE));\n var zMax = BubbleSeries_pick(options.zMax,\n BubbleSeries_arrayMax(zData));\n if (BubbleSeries_isNumber(zMin) && BubbleSeries_isNumber(zMax)) {\n return { zMin: zMin, zMax: zMax };\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n BubbleSeries.prototype.searchKDTree = function (point, compareX, e, suppliedPointEvaluator, suppliedBSideCheckEvaluator) {\n if (suppliedPointEvaluator === void 0) { suppliedPointEvaluator = BubbleSeries_noop; }\n if (suppliedBSideCheckEvaluator === void 0) { suppliedBSideCheckEvaluator = BubbleSeries_noop; }\n suppliedPointEvaluator = function (p1, p2, comparisonProp) {\n var _a,\n _b;\n var p1Dist = p1[comparisonProp] || 0;\n var p2Dist = p2[comparisonProp] || 0;\n var ret,\n flip = false;\n if (p1Dist < 0 && p2Dist < 0) {\n ret = (p1Dist - (((_a = p1.marker) === null || _a === void 0 ? void 0 : _a.radius) || 0) >=\n p2Dist - (((_b = p2.marker) === null || _b === void 0 ? void 0 : _b.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 = function (a, b, flip) { return !flip && (a > b) || (a < b); };\n return _super.prototype.searchKDTree.call(this, point, compareX, e, suppliedPointEvaluator, suppliedBSideCheckEvaluator);\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 */\n BubbleSeries.defaultOptions = BubbleSeries_merge(BubbleSeries_ScatterSeries.defaultOptions, {\n dataLabels: {\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n var z = this.point.z;\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 });\n return BubbleSeries;\n}(BubbleSeries_ScatterSeries));\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', function (e) {\n delete e.target.chart.bubbleZExtremes;\n});\n// After removing series, delete the chart-level Z extremes cache, #17502.\nBubbleSeries_addEvent(BubbleSeries, 'remove', function (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 */ var 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/es5/es-modules/Series/MapBubble/MapBubblePoint.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\nvar MapBubblePoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* *\n *\n * Imports\n *\n * */\n\n\nvar mapPointProto = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.map.prototype.pointClass.prototype;\n\nvar MapBubblePoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend;\n/* *\n *\n * Class\n *\n * */\nvar MapBubblePoint = /** @class */ (function (_super) {\n MapBubblePoint_extends(MapBubblePoint, _super);\n function MapBubblePoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n MapBubblePoint.prototype.isValid = function () {\n return typeof this.z === 'number';\n };\n return MapBubblePoint;\n}(Bubble_BubblePoint));\nMapBubblePoint_extend(MapBubblePoint.prototype, {\n applyOptions: mapPointProto.applyOptions,\n getProjectedBounds: mapPointProto.getProjectedBounds\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapBubble_MapBubblePoint = (MapBubblePoint);\n\n;// ./code/es5/es-modules/Series/MapBubble/MapBubbleSeries.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\nvar MapBubbleSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\nvar MapBubbleSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, mapProto = MapBubbleSeries_a.map.prototype, MapBubbleSeries_mapPointProto = MapBubbleSeries_a.mappoint.prototype;\n\nvar MapBubbleSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, MapBubbleSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.mapbubble\n *\n * @augments Highcharts.Series\n *\n * @requires BubbleSeries\n * @requires MapPointSeries\n */\nvar MapBubbleSeries = /** @class */ (function (_super) {\n MapBubbleSeries_extends(MapBubbleSeries, _super);\n function MapBubbleSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.clearBounds = mapProto.clearBounds;\n return _this;\n }\n MapBubbleSeries.prototype.searchPoint = function (e, compareX) {\n return this.searchKDTree({\n plotX: e.chartX - this.chart.plotLeft,\n plotY: e.chartY - this.chart.plotTop\n }, compareX, e);\n };\n MapBubbleSeries.prototype.translate = function () {\n MapBubbleSeries_mapPointProto.translate.call(this);\n this.getRadii();\n this.translateBubble();\n };\n /**\n * A map bubble series is a bubble series laid out on top of a map\n * series, where each bubble is tied to a specific map area.\n *\n * @sample maps/demo/map-bubble/\n * Map bubble chart\n *\n * @extends plotOptions.bubble\n * @product highmaps\n * @optionparent plotOptions.mapbubble\n */\n MapBubbleSeries.defaultOptions = MapBubbleSeries_merge(Bubble_BubbleSeries.defaultOptions, {\n /**\n * The main color of the series. This color affects both the fill\n * and the stroke of the bubble. For enhanced control, use `marker`\n * options.\n *\n * @sample {highmaps} maps/plotoptions/mapbubble-color/\n * Pink bubbles\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.mapbubble.color\n */\n /**\n * Whether to display negative sized bubbles. The threshold is\n * given by the [zThreshold](#plotOptions.mapbubble.zThreshold)\n * option, and negative bubbles can be visualized by setting\n * [negativeColor](#plotOptions.bubble.negativeColor).\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.mapbubble.displayNegative\n */\n /**\n * Color of the line connecting bubbles. The default value is the same\n * as series' color.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n *\n * @sample {highmaps} maps/demo/spider-map/\n * Spider map\n * @sample {highmaps} maps/plotoptions/spider-map-line-color/\n * Different line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.mapbubble.lineColor\n */\n /**\n * Pixel width of the line connecting bubbles.\n *\n * @sample {highmaps} maps/demo/spider-map/\n * Spider map\n *\n * @product highmaps\n * @apioption plotOptions.mapbubble.lineWidth\n */\n lineWidth: 0,\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 {highmaps} highcharts/plotoptions/bubble-size/\n * Bubble size\n * @sample {highmaps} maps/demo/spider-map/\n * Spider map\n *\n * @product highmaps\n * @apioption plotOptions.mapbubble.maxSize\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 {highmaps} maps/demo/map-bubble/\n * Bubble size\n * @sample {highmaps} maps/demo/spider-map/\n * Spider map\n *\n * @product highmaps\n * @apioption plotOptions.mapbubble.minSize\n */\n /**\n * When a point's Z value is below the\n * [zThreshold](#plotOptions.mapbubble.zThreshold) setting, this\n * color is used.\n *\n * @sample {highmaps} maps/plotoptions/mapbubble-negativecolor/\n * Negative color below a threshold\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.mapbubble.negativeColor\n */\n /**\n * Whether the bubble's value should be represented by the area or\n * the width of the bubble. The default, `area`, corresponds best to\n * the human perception of the size of each bubble.\n *\n * @type {Highcharts.BubbleSizeByValue}\n * @default area\n * @apioption plotOptions.mapbubble.sizeBy\n */\n /**\n * When this is true, the absolute value of z determines the size\n * of the bubble. This means that with the default `zThreshold` of\n * 0, a bubble of value -1 will have the same size as a bubble of\n * value 1, while a bubble of value 0 will have a smaller size\n * according to `minSize`.\n *\n * @sample {highmaps} highcharts/plotoptions/bubble-sizebyabsolutevalue/\n * Size by absolute value, various thresholds\n *\n * @type {boolean}\n * @default false\n * @since 1.1.9\n * @apioption plotOptions.mapbubble.sizeByAbsoluteValue\n */\n /**\n * The maximum for the Z value range. Defaults to the highest Z value in\n * the data.\n *\n * @see [zMin](#plotOptions.mapbubble.zMin)\n *\n * @sample {highmaps} highcharts/plotoptions/bubble-zmin-zmax/\n * Z has a possible range of 0-100\n *\n * @type {number}\n * @since 1.0.3\n * @apioption plotOptions.mapbubble.zMax\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.mapbubble.zMax)\n *\n * @sample {highmaps} highcharts/plotoptions/bubble-zmin-zmax/\n * Z has a possible range of 0-100\n *\n * @type {number}\n * @since 1.0.3\n * @apioption plotOptions.mapbubble.zMin\n */\n /**\n * When [displayNegative](#plotOptions.mapbubble.displayNegative)\n * is `false`, bubbles with lower Z values are skipped. When\n * `displayNegative` is `true` and a\n * [negativeColor](#plotOptions.mapbubble.negativeColor) is given,\n * points with lower Z is colored.\n *\n * @sample {highmaps} maps/plotoptions/mapbubble-negativecolor/\n * Negative color below a threshold\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.mapbubble.zThreshold\n */\n /**\n * @default 500\n */\n animationLimit: 500,\n /**\n * @type {string|Array<string>}\n */\n joinBy: 'hc-key',\n tooltip: {\n pointFormat: '{point.name}: {point.z}'\n }\n });\n return MapBubbleSeries;\n}(Bubble_BubbleSeries));\nMapBubbleSeries_extend(MapBubbleSeries.prototype, {\n type: 'mapbubble',\n axisTypes: ['colorAxis'],\n getProjectedBounds: mapProto.getProjectedBounds,\n isCartesian: false,\n // If one single value is passed, it is interpreted as z\n pointArrayMap: ['z'],\n pointClass: MapBubble_MapBubblePoint,\n processData: mapProto.processData,\n projectPoint: MapBubbleSeries_mapPointProto.projectPoint,\n kdAxisArray: ['plotX', 'plotY'],\n setData: mapProto.setData,\n setOptions: mapProto.setOptions,\n updateData: mapProto.updateData,\n useMapGeometry: true,\n xyFromShape: true\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('mapbubble', MapBubbleSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var MapBubble_MapBubbleSeries = (MapBubbleSeries);\n/* *\n *\n * API Options\n *\n * */\n/**\n * A `mapbubble` series. If the [type](#series.mapbubble.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.mapbubble\n * @excluding dataParser, dataURL\n * @product highmaps\n * @apioption series.mapbubble\n */\n/**\n * An array of data points for the series. For the `mapbubble` 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\n * will be interpreted as `z` options. Example:\n *\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.mapbubble.turboThreshold),\n * this option is not available.\n *\n * ```js\n * data: [{\n * z: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * z: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array<number|null|*>}\n * @extends series.mappoint.data\n * @excluding labelrank, middleX, middleY, path, value, x, y, lat, lon\n * @product highmaps\n * @apioption series.mapbubble.data\n */\n/**\n * While the `x` and `y` values of the bubble are determined by the\n * underlying map, the `z` indicates the actual value that gives the\n * size of the bubble.\n *\n * @sample {highmaps} maps/demo/map-bubble/\n * Bubble\n *\n * @type {number|null}\n * @product highmaps\n * @apioption series.mapbubble.data.z\n */\n/**\n * @excluding enabled, enabledThreshold, height, radius, width\n * @sample {highmaps} maps/plotoptions/mapbubble-symbol\n * Map bubble with mapmarker symbol\n * @apioption series.mapbubble.marker\n */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es5/es-modules/Series/Heatmap/HeatmapPoint.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\nvar HeatmapPoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar HeatmapPoint_ScatterPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.scatter.prototype.pointClass;\n\nvar HeatmapPoint_clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, HeatmapPoint_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, HeatmapPoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, HeatmapPoint_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Class\n *\n * */\nvar HeatmapPoint = /** @class */ (function (_super) {\n HeatmapPoint_extends(HeatmapPoint, _super);\n function HeatmapPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n /** @private */\n HeatmapPoint.prototype.applyOptions = function (options, x) {\n // #17970, if point is null remove its color, because it may be updated\n if (this.isNull || this.value === null) {\n delete this.color;\n }\n _super.prototype.applyOptions.call(this, options, x);\n this.formatPrefix = this.isNull || this.value === null ?\n 'null' : 'point';\n return this;\n };\n /** @private */\n HeatmapPoint.prototype.getCellAttributes = function () {\n var point = this, series = point.series, seriesOptions = series.options, xPad = (seriesOptions.colsize || 1) / 2, yPad = (seriesOptions.rowsize || 1) / 2, xAxis = series.xAxis, yAxis = series.yAxis, markerOptions = point.options.marker || series.options.marker, pointPlacement = series.pointPlacementToXValue(), // #7860\n pointPadding = HeatmapPoint_pick(point.pointPadding, seriesOptions.pointPadding, 0), cellAttr = {\n x1: HeatmapPoint_clamp(Math.round(xAxis.len -\n xAxis.translate(point.x - xPad, false, true, false, true, -pointPlacement)), -xAxis.len, 2 * xAxis.len),\n x2: HeatmapPoint_clamp(Math.round(xAxis.len -\n xAxis.translate(point.x + xPad, false, true, false, true, -pointPlacement)), -xAxis.len, 2 * xAxis.len),\n y1: HeatmapPoint_clamp(Math.round(yAxis.translate(point.y - yPad, false, true, false, true)), -yAxis.len, 2 * yAxis.len),\n y2: HeatmapPoint_clamp(Math.round(yAxis.translate(point.y + yPad, false, true, false, true)), -yAxis.len, 2 * yAxis.len)\n };\n var dimensions = [['width', 'x'], ['height', 'y']];\n // Handle marker's fixed width, and height values including border\n // and pointPadding while calculating cell attributes.\n for (var _i = 0, dimensions_1 = dimensions; _i < dimensions_1.length; _i++) {\n var dimension = dimensions_1[_i];\n var prop = dimension[0],\n direction = dimension[1];\n var start = direction + '1', end = direction + '2';\n var side = Math.abs(cellAttr[start] - cellAttr[end]),\n borderWidth = markerOptions &&\n markerOptions.lineWidth || 0,\n plotPos = Math.abs(cellAttr[start] + cellAttr[end]) / 2,\n widthOrHeight = markerOptions && markerOptions[prop];\n if (HeatmapPoint_defined(widthOrHeight) && widthOrHeight < side) {\n var halfCellSize = widthOrHeight / 2 + borderWidth / 2;\n cellAttr[start] = plotPos - halfCellSize;\n cellAttr[end] = plotPos + halfCellSize;\n }\n // Handle pointPadding\n if (pointPadding) {\n if ((direction === 'x' && xAxis.reversed) ||\n (direction === 'y' && !yAxis.reversed)) {\n start = end;\n end = direction + '1';\n }\n cellAttr[start] += pointPadding;\n cellAttr[end] -= pointPadding;\n }\n }\n return cellAttr;\n };\n /**\n * @private\n */\n HeatmapPoint.prototype.haloPath = function (size) {\n if (!size) {\n return [];\n }\n var _a = this.shapeArgs || {},\n _b = _a.x,\n x = _b === void 0 ? 0 : _b,\n _c = _a.y,\n y = _c === void 0 ? 0 : _c,\n _d = _a.width,\n width = _d === void 0 ? 0 : _d,\n _e = _a.height,\n height = _e === void 0 ? 0 : _e;\n return [\n ['M', x - size, y - size],\n ['L', x - size, y + height + size],\n ['L', x + width + size, y + height + size],\n ['L', x + width + size, y - size],\n ['Z']\n ];\n };\n /**\n * Color points have a value option that determines whether or not it is\n * a null point\n * @private\n */\n HeatmapPoint.prototype.isValid = function () {\n // Undefined is allowed\n return (this.value !== Infinity &&\n this.value !== -Infinity);\n };\n return HeatmapPoint;\n}(HeatmapPoint_ScatterPoint));\nHeatmapPoint_extend(HeatmapPoint.prototype, {\n dataLabelOnNull: true,\n moveToTopOnHover: true,\n ttBelow: false\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Heatmap_HeatmapPoint = (HeatmapPoint);\n\n;// ./code/es5/es-modules/Series/Heatmap/HeatmapSeriesDefaults.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\nvar HeatmapSeriesDefaults_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n * API Options\n *\n * */\n/**\n * A heatmap is a graphical representation of data where the individual\n * values contained in a matrix are represented as colors.\n *\n * @productdesc {highcharts}\n * Requires `modules/heatmap`.\n *\n * @sample highcharts/demo/heatmap/\n * Simple heatmap\n * @sample highcharts/demo/heatmap-canvas/\n * Heavy heatmap\n *\n * @extends plotOptions.scatter\n * @excluding animationLimit, cluster, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dragDrop, findNearestPointBy,\n * getExtremesFromAll, jitter, legendSymbolColor, linecap,\n * lineWidth, pointInterval, pointIntervalUnit, pointRange,\n * pointStart, shadow, softThreshold, stacking, step, threshold\n * @product highcharts highmaps\n * @optionparent plotOptions.heatmap\n */\nvar HeatmapSeriesDefaults = {\n /**\n * Animation is disabled by default on the heatmap series.\n */\n animation: false,\n /**\n * The border radius for each heatmap item. The border's color and\n * width can be set in marker options.\n *\n * @see [lineColor](#plotOptions.heatmap.marker.lineColor)\n * @see [lineWidth](#plotOptions.heatmap.marker.lineWidth)\n */\n borderRadius: 0,\n /**\n * The border width for each heatmap item.\n */\n borderWidth: 0,\n /**\n * Padding between the points in the heatmap.\n *\n * @type {number}\n * @default 0\n * @since 6.0\n * @apioption plotOptions.heatmap.pointPadding\n */\n /**\n * @default value\n * @apioption plotOptions.heatmap.colorKey\n */\n /**\n * The main color of the series. In heat maps this color is rarely used,\n * as we mostly use the color to denote the value of each point. Unless\n * options are set in the [colorAxis](#colorAxis), the default value\n * is pulled from the [options.colors](#colors) array.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.0\n * @product highcharts\n * @apioption plotOptions.heatmap.color\n */\n /**\n * The column size - how many X axis units each column in the heatmap\n * should span.\n *\n * @sample {highcharts} maps/demo/heatmap/\n * One day\n * @sample {highmaps} maps/demo/heatmap/\n * One day\n *\n * @type {number}\n * @default 1\n * @since 4.0\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.colsize\n */\n /**\n * The row size - how many Y axis units each heatmap row should span.\n *\n * @sample {highcharts} maps/demo/heatmap/\n * 1 by default\n * @sample {highmaps} maps/demo/heatmap/\n * 1 by default\n *\n * @type {number}\n * @default 1\n * @since 4.0\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.rowsize\n */\n /**\n * Make the heatmap render its data points as an interpolated image.\n *\n * @sample highcharts/demo/heatmap-interpolation\n * Interpolated heatmap image displaying user activity on a website\n * @sample highcharts/series-heatmap/interpolation\n * Interpolated heatmap toggle\n *\n */\n interpolation: false,\n /**\n * The color applied to null points. In styled mode, a general CSS class\n * is applied instead.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n nullColor: \"#f7f7f7\" /* Palette.neutralColor3 */,\n dataLabels: {\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n var value = this.point.value;\n return HeatmapSeriesDefaults_isNumber(value) ? numberFormatter(value, -1) : '';\n },\n inside: true,\n verticalAlign: 'middle',\n crop: false,\n /**\n * @ignore-option\n */\n overflow: 'allow',\n padding: 0 // #3837\n },\n /**\n * @excluding radius, enabledThreshold\n * @since 8.1\n */\n marker: {\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'`,\n * `'triangle-down'`, `'rect'`, and `'ellipse'`.\n *\n * Additionally, the URL to a graphic can be given on this 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/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n */\n symbol: 'rect',\n /** @ignore-option */\n radius: 0,\n lineColor: void 0,\n states: {\n /**\n * @excluding radius, radiusPlus\n */\n hover: {\n /**\n * Set the marker's fixed width on hover state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.hover.width\n */\n /**\n * Set the marker's fixed height on hover state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.hover.height\n */\n /**\n * The number of pixels to increase the width of the\n * selected point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * 20px greater width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.hover.widthPlus\n */\n /**\n * The number of pixels to increase the height of the\n * selected point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * 20px greater width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.hover.heightPlus\n */\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-linewidthplus\n * 5 pixels wider lineWidth on hover\n * @sample {highmaps} maps/plotoptions/heatmap-marker-states-hover-linewidthplus\n * 5 pixels wider lineWidth on hover\n */\n lineWidthPlus: 0\n },\n /**\n * @excluding radius\n */\n select: {\n /**\n * Set the marker's fixed width on select state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.select.width\n */\n /**\n * Set the marker's fixed height on select state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.select.height\n */\n /**\n * The number of pixels to increase the width of the\n * selected point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * 20px greater width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.select.widthPlus\n */\n /**\n * The number of pixels to increase the height of the\n * selected point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * 20px greater width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption plotOptions.heatmap.marker.states.select.heightPlus\n */\n }\n }\n },\n clip: true,\n /** @ignore-option */\n pointRange: null, // Dynamically set to colsize by default\n tooltip: {\n pointFormat: '{point.x}, {point.y}: {point.value}<br/>'\n },\n states: {\n hover: {\n /** @ignore-option */\n halo: false, // #3406, halo is disabled on heatmaps by default\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n */\n brightness: 0.2\n }\n },\n legendSymbol: 'rectangle'\n};\n/**\n * A `heatmap` series. If the [type](#series.heatmap.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @productdesc {highcharts}\n * Requires `modules/heatmap`.\n *\n * @extends series,plotOptions.heatmap\n * @excluding cropThreshold, dataParser, dataURL, dragDrop ,pointRange, stack,\n * @product highcharts highmaps\n * @apioption series.heatmap\n */\n/**\n * An array of data points for the series. For the `heatmap` 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\n * correspond to `x,y,value`. If the first value is a string, it is\n * applied as the name of the point, and the `x` value is inferred.\n * The `x` value can also be omitted, in which case the inner arrays\n * should be of length 2\\. Then the `x` value is automatically calculated,\n * either starting at 0 and incremented by 1, or from `pointStart`\n * and `pointInterval` given in the series options.\n *\n * ```js\n * data: [\n * [0, 9, 7],\n * [1, 10, 4],\n * [2, 6, 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 data\n * points exceeds the series' [turboThreshold](#series.heatmap.turboThreshold),\n * this option is not available.\n *\n * ```js\n * data: [{\n * x: 1,\n * y: 3,\n * value: 10,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 7,\n * value: 10,\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<Array<number>|*>}\n * @extends series.line.data\n * @product highcharts highmaps\n * @apioption series.heatmap.data\n */\n/**\n * The color of the point. In heat maps the point color is rarely set\n * explicitly, as we use the color to denote the `value`. Options for\n * this are set in the [colorAxis](#colorAxis) configuration.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highmaps\n * @apioption series.heatmap.data.color\n */\n/**\n * The value of the point, resulting in a color controlled by options\n * as set in the [colorAxis](#colorAxis) configuration.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.heatmap.data.value\n */\n/**\n * The x value of the point. For datetime axes,\n * the X value is the timestamp in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.heatmap.data.x\n */\n/**\n * The y value of the point.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.heatmap.data.y\n */\n/**\n * Point padding for a single point.\n *\n * @sample maps/plotoptions/tilemap-pointpadding\n * Point padding on tiles\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.heatmap.data.pointPadding\n */\n/**\n * @excluding radius, enabledThreshold\n * @product highcharts highmaps\n * @since 8.1\n * @apioption series.heatmap.data.marker\n */\n/**\n * @excluding radius, enabledThreshold\n * @product highcharts highmaps\n * @since 8.1\n * @apioption series.heatmap.marker\n */\n/**\n * @excluding radius, radiusPlus\n * @product highcharts highmaps\n * @apioption series.heatmap.marker.states.hover\n */\n/**\n * @excluding radius\n * @product highcharts highmaps\n * @apioption series.heatmap.marker.states.select\n */\n/**\n * @excluding radius, radiusPlus\n * @product highcharts highmaps\n * @apioption series.heatmap.data.marker.states.hover\n */\n/**\n * @excluding radius\n * @product highcharts highmaps\n * @apioption series.heatmap.data.marker.states.select\n */\n/**\n* Set the marker's fixed width on hover state.\n*\n* @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-linewidthplus\n* 5 pixels wider lineWidth on hover\n*\n* @type {number|undefined}\n* @default 0\n* @product highcharts highmaps\n* @apioption series.heatmap.marker.states.hover.lineWidthPlus\n*/\n/**\n* Set the marker's fixed width on hover state.\n*\n* @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n* 70px fixed marker's width and height on hover\n*\n* @type {number|undefined}\n* @default undefined\n* @product highcharts highmaps\n* @apioption series.heatmap.marker.states.hover.width\n*/\n/**\n * Set the marker's fixed height on hover state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.marker.states.hover.height\n */\n/**\n* The number of pixels to increase the width of the\n* hovered point.\n*\n* @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n* One day\n*\n* @type {number|undefined}\n* @default undefined\n* @product highcharts highmaps\n* @apioption series.heatmap.marker.states.hover.widthPlus\n*/\n/**\n * The number of pixels to increase the height of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.marker.states.hover.heightPlus\n */\n/**\n * The number of pixels to increase the width of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.marker.states.select.widthPlus\n */\n/**\n * The number of pixels to increase the height of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.marker.states.select.heightPlus\n */\n/**\n* Set the marker's fixed width on hover state.\n*\n* @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-linewidthplus\n* 5 pixels wider lineWidth on hover\n*\n* @type {number|undefined}\n* @default 0\n* @product highcharts highmaps\n* @apioption series.heatmap.data.marker.states.hover.lineWidthPlus\n*/\n/**\n * Set the marker's fixed width on hover state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.data.marker.states.hover.width\n */\n/**\n * Set the marker's fixed height on hover state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.data.marker.states.hover.height\n */\n/**\n * The number of pixels to increase the width of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highstock\n * @apioption series.heatmap.data.marker.states.hover.widthPlus\n */\n/**\n * The number of pixels to increase the height of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highstock\n * @apioption series.heatmap.data.marker.states.hover.heightPlus\n */\n/**\n* Set the marker's fixed width on select state.\n*\n* @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n* 70px fixed marker's width and height on hover\n*\n* @type {number|undefined}\n* @default undefined\n* @product highcharts highmaps\n* @apioption series.heatmap.data.marker.states.select.width\n*/\n/**\n * Set the marker's fixed height on select state.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-width\n * 70px fixed marker's width and height on hover\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highmaps\n * @apioption series.heatmap.data.marker.states.select.height\n */\n/**\n * The number of pixels to increase the width of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highstock\n * @apioption series.heatmap.data.marker.states.select.widthPlus\n */\n/**\n * The number of pixels to increase the height of the\n * hovered point.\n *\n * @sample {highcharts} maps/plotoptions/heatmap-marker-states-hover-widthplus\n * One day\n *\n * @type {number|undefined}\n * @default undefined\n * @product highcharts highstock\n * @apioption series.heatmap.data.marker.states.select.heightPlus\n */\n''; // Keeps doclets above separate\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Heatmap_HeatmapSeriesDefaults = (HeatmapSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/InterpolationUtilities.js\n/* *\n *\n * (c) 2010-2024 Hubert Kozik\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar InterpolationUtilities_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, InterpolationUtilities_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Find color of point based on color axis.\n *\n * @function Highcharts.colorFromPoint\n *\n * @param {number | null} value\n * Value to find corresponding color on the color axis.\n *\n * @param {Highcharts.Point} point\n * Point to find it's color from color axis.\n *\n * @return {number[]}\n * Color in RGBa array.\n */\nfunction colorFromPoint(value, point) {\n var colorAxis = point.series.colorAxis;\n if (colorAxis) {\n var rgba = (colorAxis.toColor(value || 0, point)\n .split(')')[0]\n .split('(')[1]\n .split(',')\n .map(function (s) { return InterpolationUtilities_pick(parseFloat(s), parseInt(s, 10)); }));\n rgba[3] = InterpolationUtilities_pick(rgba[3], 1.0) * 255;\n if (!InterpolationUtilities_defined(value) || !point.visible) {\n rgba[3] = 0;\n }\n return rgba;\n }\n return [0, 0, 0, 0];\n}\n/**\n * Method responsible for creating a canvas for interpolation image.\n * @private\n */\nfunction getContext(series) {\n var canvas = series.canvas,\n context = series.context;\n if (canvas && context) {\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n else {\n series.canvas = doc.createElement('canvas');\n series.context = series.canvas.getContext('2d', {\n willReadFrequently: true\n }) || void 0;\n return series.context;\n }\n return context;\n}\nvar InterpolationUtilities = {\n colorFromPoint: colorFromPoint,\n getContext: getContext\n};\n/* harmony default export */ var Series_InterpolationUtilities = (InterpolationUtilities);\n\n;// ./code/es5/es-modules/Series/Heatmap/HeatmapSeries.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\nvar HeatmapSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar HeatmapSeries_assign = (undefined && undefined.__assign) || function () {\n HeatmapSeries_assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return HeatmapSeries_assign.apply(this, arguments);\n};\n\n\n\n\n\nvar HeatmapSeries_Series = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, HeatmapSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, HeatmapSeries_ColumnSeries = HeatmapSeries_a.column, HeatmapSeries_ScatterSeries = HeatmapSeries_a.scatter;\n\nvar HeatmapSeries_symbols = (highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default()).prototype.symbols;\n\nvar HeatmapSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, HeatmapSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, HeatmapSeries_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, HeatmapSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, HeatmapSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, HeatmapSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n\nvar HeatmapSeries_colorFromPoint = Series_InterpolationUtilities.colorFromPoint, HeatmapSeries_getContext = Series_InterpolationUtilities.getContext;\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.heatmap\n *\n * @augments Highcharts.Series\n */\nvar HeatmapSeries = /** @class */ (function (_super) {\n HeatmapSeries_extends(HeatmapSeries, _super);\n function HeatmapSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.valueMax = NaN;\n _this.valueMin = NaN;\n _this.isDirtyCanvas = true;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n HeatmapSeries.prototype.drawPoints = function () {\n var series = this,\n seriesOptions = series.options,\n interpolation = seriesOptions.interpolation,\n seriesMarkerOptions = seriesOptions.marker || {};\n if (interpolation) {\n var image = series.image,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n _a = xAxis.reversed,\n xRev = _a === void 0 ? false : _a,\n width = xAxis.len,\n _b = yAxis.reversed,\n yRev = _b === void 0 ? false : _b,\n height = yAxis.len,\n dimensions = { width: width,\n height: height };\n if (!image || series.isDirtyData || series.isDirtyCanvas) {\n var ctx = HeatmapSeries_getContext(series),\n canvas = series.canvas,\n _c = series.options,\n _d = _c.colsize,\n colsize = _d === void 0 ? 1 : _d,\n _e = _c.rowsize,\n rowsize = _e === void 0 ? 1 : _e,\n points = series.points,\n length_1 = series.points.length,\n pointsLen = length_1 - 1,\n colorAxis = (chart.colorAxis && chart.colorAxis[0]);\n if (canvas && ctx && colorAxis) {\n var _f = xAxis.getExtremes(), xMin_1 = _f.min, xMax = _f.max, _g = yAxis.getExtremes(), yMin_1 = _g.min, yMax = _g.max, xDelta = xMax - xMin_1, yDelta = yMax - yMin_1, imgMultiple = 8.0, lastX = Math.round(imgMultiple * ((xDelta / colsize) / imgMultiple)), lastY = Math.round(imgMultiple * ((yDelta / rowsize) / imgMultiple)), _h = [\n [lastX, lastX / xDelta, xRev, 'ceil'],\n [lastY, lastY / yDelta, !yRev, 'floor']\n ].map(function (_a) {\n var last = _a[0], scale = _a[1], rev = _a[2], rounding = _a[3];\n return (rev ?\n function (v) { return (Math[rounding](last -\n (scale * (v)))); } :\n function (v) { return (Math[rounding](scale * v)); });\n }), transformX_1 = _h[0], transformY_1 = _h[1], canvasWidth_1 = canvas.width = lastX + 1, canvasHeight = canvas.height = lastY + 1, canvasArea = canvasWidth_1 * canvasHeight, pixelToPointScale = pointsLen / canvasArea, pixelData = new Uint8ClampedArray(canvasArea * 4), pointInPixels = function (x, y) { return (Math.ceil((canvasWidth_1 * transformY_1(y - yMin_1)) +\n transformX_1(x - xMin_1)) * 4); };\n series.buildKDTree();\n for (var i = 0; i < canvasArea; i++) {\n var point = points[Math.ceil(pixelToPointScale * i)],\n x = point.x,\n y = point.y;\n pixelData.set(HeatmapSeries_colorFromPoint(point.value, point), pointInPixels(x, y));\n }\n ctx.putImageData(new ImageData(pixelData, canvasWidth_1), 0, 0);\n if (image) {\n image.attr(HeatmapSeries_assign(HeatmapSeries_assign({}, dimensions), { href: canvas.toDataURL('image/png', 1) }));\n }\n else {\n series.directTouch = false;\n series.image = chart.renderer.image(canvas.toDataURL('image/png', 1))\n .attr(dimensions)\n .add(series.group);\n }\n }\n series.isDirtyCanvas = false;\n }\n else if (image.width !== width || image.height !== height) {\n image.attr(dimensions);\n }\n }\n else if (seriesMarkerOptions.enabled || series._hasPointMarkers) {\n HeatmapSeries_Series.prototype.drawPoints.call(series);\n series.points.forEach(function (point) {\n if (point.graphic) {\n // In styled mode, use CSS, otherwise the fill used in\n // the style sheet will take precedence over\n // the fill attribute.\n point.graphic[series.chart.styledMode ? 'css' : 'animate'](series.colorAttribs(point));\n if (point.value === null) { // #15708\n point.graphic.addClass('highcharts-null-point');\n }\n }\n });\n }\n };\n /**\n * @private\n */\n HeatmapSeries.prototype.getExtremes = function () {\n // Get the extremes from the value data\n var _a = HeatmapSeries_Series.prototype.getExtremes\n .call(this,\n this.getColumn('value')),\n dataMin = _a.dataMin,\n dataMax = _a.dataMax;\n if (HeatmapSeries_isNumber(dataMin)) {\n this.valueMin = dataMin;\n }\n if (HeatmapSeries_isNumber(dataMax)) {\n this.valueMax = dataMax;\n }\n // Get the extremes from the y data\n return HeatmapSeries_Series.prototype.getExtremes.call(this);\n };\n /**\n * Override to also allow null points, used when building the k-d-tree for\n * tooltips in boost mode.\n * @private\n */\n HeatmapSeries.prototype.getValidPoints = function (points, insideOnly) {\n return HeatmapSeries_Series.prototype.getValidPoints.call(this, points, insideOnly, true);\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n HeatmapSeries.prototype.hasData = function () {\n return !!this.dataTable.rowCount;\n };\n /**\n * Override the init method to add point ranges on both axes.\n * @private\n */\n HeatmapSeries.prototype.init = function () {\n _super.prototype.init.apply(this, arguments);\n var options = this.options;\n // #3758, prevent resetting in setData\n options.pointRange = HeatmapSeries_pick(options.pointRange, options.colsize || 1);\n // General point range\n this.yAxis.axisPointRange = options.rowsize || 1;\n // Bind new symbol names\n HeatmapSeries_symbols.ellipse = HeatmapSeries_symbols.circle;\n // @todo\n //\n // Setting the border radius here is a workaround. It should be set in\n // the shapeArgs or returned from `markerAttribs`. However,\n // Series.drawPoints does not pick up markerAttribs to be passed over to\n // `renderer.symbol`. Also, image symbols are not positioned by their\n // top left corner like other symbols are. This should be refactored,\n // then we could save ourselves some tests for .hasImage etc. And the\n // evaluation of borderRadius would be moved to `markerAttribs`.\n if (options.marker && HeatmapSeries_isNumber(options.borderRadius)) {\n options.marker.r = options.borderRadius;\n }\n };\n /**\n * @private\n */\n HeatmapSeries.prototype.markerAttribs = function (point, state) {\n var shapeArgs = point.shapeArgs || {};\n if (point.hasImage) {\n return {\n x: point.plotX,\n y: point.plotY\n };\n }\n // Setting width and height attributes on image does not affect on its\n // dimensions.\n if (state && state !== 'normal') {\n var pointMarkerOptions = point.options.marker || {},\n seriesMarkerOptions = this.options.marker || {},\n seriesStateOptions = (seriesMarkerOptions.states &&\n seriesMarkerOptions.states[state]) || {},\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n // Set new width and height basing on state options.\n var width = (pointStateOptions.width ||\n seriesStateOptions.width ||\n shapeArgs.width ||\n 0) + (pointStateOptions.widthPlus ||\n seriesStateOptions.widthPlus ||\n 0);\n var height = (pointStateOptions.height ||\n seriesStateOptions.height ||\n shapeArgs.height ||\n 0) + (pointStateOptions.heightPlus ||\n seriesStateOptions.heightPlus ||\n 0);\n // Align marker by the new size.\n var x = (shapeArgs.x || 0) + ((shapeArgs.width || 0) - width) / 2, y = (shapeArgs.y || 0) + ((shapeArgs.height || 0) - height) / 2;\n return { x: x, y: y, width: width, height: height };\n }\n return shapeArgs;\n };\n /**\n * @private\n */\n HeatmapSeries.prototype.pointAttribs = function (point, state) {\n var series = this,\n attr = HeatmapSeries_Series.prototype.pointAttribs.call(series,\n point,\n state),\n seriesOptions = series.options || {},\n plotOptions = series.chart.options.plotOptions || {},\n seriesPlotOptions = plotOptions.series || {},\n heatmapPlotOptions = plotOptions.heatmap || {}, \n // Get old properties in order to keep backward compatibility\n borderColor = (point && point.options.borderColor) ||\n seriesOptions.borderColor ||\n heatmapPlotOptions.borderColor ||\n seriesPlotOptions.borderColor,\n borderWidth = (point && point.options.borderWidth) ||\n seriesOptions.borderWidth ||\n heatmapPlotOptions.borderWidth ||\n seriesPlotOptions.borderWidth ||\n attr['stroke-width'];\n // Apply lineColor, or set it to default series color.\n attr.stroke = ((point && point.marker && point.marker.lineColor) ||\n (seriesOptions.marker && seriesOptions.marker.lineColor) ||\n borderColor ||\n this.color);\n // Apply old borderWidth property if exists.\n attr['stroke-width'] = borderWidth;\n if (state && state !== 'normal') {\n var stateOptions = HeatmapSeries_merge((seriesOptions.states &&\n seriesOptions.states[state]), (seriesOptions.marker &&\n seriesOptions.marker.states &&\n seriesOptions.marker.states[state]), (point &&\n point.options.states &&\n point.options.states[state] || {}));\n attr.fill =\n stateOptions.color ||\n highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(attr.fill).brighten(stateOptions.brightness || 0).get();\n attr.stroke = (stateOptions.lineColor || attr.stroke); // #17896\n }\n return attr;\n };\n /**\n * @private\n */\n HeatmapSeries.prototype.translate = function () {\n var series = this, options = series.options, borderRadius = options.borderRadius, marker = options.marker, symbol = marker && marker.symbol || 'rect', shape = HeatmapSeries_symbols[symbol] ? symbol : 'rect', hasRegularShape = ['circle', 'square'].indexOf(shape) !== -1;\n series.generatePoints();\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n var cellAttr = point.getCellAttributes();\n var x = Math.min(cellAttr.x1,\n cellAttr.x2),\n y = Math.min(cellAttr.y1,\n cellAttr.y2),\n width = Math.max(Math.abs(cellAttr.x2 - cellAttr.x1), 0),\n height = Math.max(Math.abs(cellAttr.y2 - cellAttr.y1), 0);\n point.hasImage = (point.marker && point.marker.symbol || symbol || '').indexOf('url') === 0;\n // If marker shape is regular (square), find the shorter cell's\n // side.\n if (hasRegularShape) {\n var sizeDiff = Math.abs(width - height);\n x = Math.min(cellAttr.x1, cellAttr.x2) +\n (width < height ? 0 : sizeDiff / 2);\n y = Math.min(cellAttr.y1, cellAttr.y2) +\n (width < height ? sizeDiff / 2 : 0);\n width = height = Math.min(width, height);\n }\n if (point.hasImage) {\n point.marker = { width: width, height: height };\n }\n point.plotX = point.clientX = (cellAttr.x1 + cellAttr.x2) / 2;\n point.plotY = (cellAttr.y1 + cellAttr.y2) / 2;\n point.shapeType = 'path';\n point.shapeArgs = HeatmapSeries_merge(true, { x: x, y: y, width: width, height: height }, {\n d: HeatmapSeries_symbols[shape](x, y, width, height, { r: HeatmapSeries_isNumber(borderRadius) ? borderRadius : 0 })\n });\n }\n HeatmapSeries_fireEvent(series, 'afterTranslate');\n };\n HeatmapSeries.defaultOptions = HeatmapSeries_merge(HeatmapSeries_ScatterSeries.defaultOptions, Heatmap_HeatmapSeriesDefaults);\n return HeatmapSeries;\n}(HeatmapSeries_ScatterSeries));\nHeatmapSeries_addEvent(HeatmapSeries, 'afterDataClassLegendClick', function () {\n this.isDirtyCanvas = true;\n this.drawPoints();\n});\nHeatmapSeries_extend(HeatmapSeries.prototype, {\n axisTypes: Series_ColorMapComposition.seriesMembers.axisTypes,\n colorKey: Series_ColorMapComposition.seriesMembers.colorKey,\n directTouch: true,\n getExtremesFromAll: true,\n keysAffectYAxis: ['y'],\n parallelArrays: Series_ColorMapComposition.seriesMembers.parallelArrays,\n pointArrayMap: ['y', 'value'],\n pointClass: Heatmap_HeatmapPoint,\n specialGroup: 'group',\n trackerGroups: Series_ColorMapComposition.seriesMembers.trackerGroups,\n /**\n * @private\n */\n alignDataLabel: HeatmapSeries_ColumnSeries.prototype.alignDataLabel,\n colorAttribs: Series_ColorMapComposition.seriesMembers.colorAttribs,\n getSymbol: HeatmapSeries_Series.prototype.getSymbol\n});\nSeries_ColorMapComposition.compose(HeatmapSeries);\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('heatmap', HeatmapSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Heatmap_HeatmapSeries = ((/* unused pure expression or super */ null && (HeatmapSeries)));\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * Heatmap series only. Padding between the points in the heatmap.\n * @name Highcharts.Point#pointPadding\n * @type {number|undefined}\n */\n/**\n * Heatmap series only. The value of the point, resulting in a color\n * controlled by options as set in the colorAxis configuration.\n * @name Highcharts.Point#value\n * @type {number|null|undefined}\n */\n/* *\n * @interface Highcharts.PointOptionsObject in parts/Point.ts\n */ /**\n* Heatmap series only. Point padding for a single point.\n* @name Highcharts.PointOptionsObject#pointPadding\n* @type {number|undefined}\n*/ /**\n* Heatmap series only. The value of the point, resulting in a color controlled\n* by options as set in the colorAxis configuration.\n* @name Highcharts.PointOptionsObject#value\n* @type {number|null|undefined}\n*/\n''; // Detach doclets above\n\n;// ./code/es5/es-modules/masters/modules/map.src.js\n/**\n * @license Highmaps JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/map\n * @requires highcharts\n *\n * Highmaps as a plugin for Highcharts or Highcharts Stock.\n *\n * (c) 2011-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar map_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n// Classes\nmap_src_G.ColorMapComposition = Series_ColorMapComposition;\nmap_src_G.MapChart = map_src_G.MapChart || Chart_MapChart;\nmap_src_G.MapNavigation = map_src_G.MapNavigation || Maps_MapNavigation;\nmap_src_G.MapView = map_src_G.MapView || Maps_MapView;\nmap_src_G.Projection = map_src_G.Projection || Maps_Projection;\n// Functions\nmap_src_G.mapChart = map_src_G.Map = map_src_G.MapChart.mapChart;\nmap_src_G.maps = map_src_G.MapChart.maps;\nmap_src_G.geojson = Maps_GeoJSONComposition.geojson;\nmap_src_G.topo2geo = Maps_GeoJSONComposition.topo2geo;\n// Compositions\nMaps_GeoJSONComposition.compose(map_src_G.Chart);\nMapBubble_MapBubbleSeries.compose(map_src_G.Axis, map_src_G.Chart, map_src_G.Legend);\nMaps_MapNavigation.compose(Chart_MapChart, map_src_G.Pointer, map_src_G.SVGRenderer);\nMaps_MapView.compose(Chart_MapChart);\n// Default Export\n/* harmony default export */ var map_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","require","define","amd","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__532__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__500__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__820__","__WEBPACK_EXTERNAL_MODULE__960__","__WEBPACK_EXTERNAL_MODULE__540__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__632__","__WEBPACK_EXTERNAL_MODULE__260__","ColorAxisLike","extendStatics","CenteredUtilities","MapChart","GeometryUtilities","ColorAxisComposition","MapPointer","symbols","ColorMapComposition","GeoJSONComposition","__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__","map_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","color","parse","addEvent","extend","merge","pick","splat","ColorAxisConstructor","onChartAfterCreateAxes","_this","userOptions","colorAxis","map","axisOptions","onLegendAfterGetAllItems","e","options","i","colorAxes","chart","destroyItem","item","allItems","indexOf","splice","colorAxisItems","forEach","showInLegend","dataClasses","visible","concat","getDataClassLegendSymbols","push","series","legendType","points","point","length","unshift","onLegendAfterColorizeItem","legendColor","legendItem","symbol","attr","fill","onLegendAfterUpdate","_a","update","redraw","onSeriesAfterTranslate","colorAttribs","translateColors","onSeriesBindAxes","axisTypes","pointSetVisible","vis","method","Boolean","buildKDTree","seriesTranslateColors","getPointsCollection","nullColor","colorKey","value","getNestedProperty","isNull","toColor","label","legend","colorizeItem","wrapFxFillSetter","elem","start","tweenTo","end","pos","wrapFxStrokeSetter","compose","ColorAxisClass","ChartClass","FxClass","LegendClass","SeriesClass","superCreateAxis","chartProto","fxProto","seriesProto","collectionsWithUpdate","includes","collectionsWithInit","addColorAxis","createAxis","type","apply","arguments","axis","index","isX","isDirtyLegend","axes","bindAxes","isDirtyData","animation","fillSetter","strokeSetter","optionalAxis","pointClass","setVisible","order","Color_ColorAxisComposition","ColorAxisLike_color","ColorAxisLike_merge","initDataClasses","dataClass","colors","userDataClasses","colorCount","colorCounter","labels","iEnd","styledMode","dataClassColor","colorIndex","minColor","maxColor","initStops","stops","normalizedValue","max","min","logarithmic","log2lin","from","to","Color_ColorAxisLike","highcharts_LegendSymbol_commonjs_highcharts_LegendSymbol_commonjs2_highcharts_LegendSymbol_root_Highcharts_LegendSymbol_","highcharts_LegendSymbol_commonjs_highcharts_LegendSymbol_commonjs2_highcharts_LegendSymbol_root_Highcharts_LegendSymbol_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","__extends","b","setPrototypeOf","__proto__","Array","p","__","constructor","create","defaultOptions","Series","defined","ColorAxis_extend","fireEvent","isArray","isNumber","ColorAxis_merge","ColorAxis_pick","relativeLength","xAxis","lineWidth","minPadding","maxPadding","gridLineColor","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","offset","marker","duration","width","distance","overflow","rotation","tickLength","ColorAxis","_super","coll","init","horiz","layout","side","reversed","opposite","zoomEnabled","hasData","tickPositions","setTickPositions","setOptions","showEmpty","title","enabled","crosshair","setAxisSize","_b","getSize","height","left","top","right","chartWidth","bottom","chartHeight","len","defaultLegendLength","getOffset","group","sideOffset","axisOffset","axisParent","legend_1","drawLegendSymbol","render","getMargins","some","isDrilling","isDirty","added","labelLeft","labelRight","setLegendColor","one","zero","grad","linearGradient","x1","y1","x2","y2","padding","legendOptions","labelOptions","itemDistance","labelPadding","renderer","r","symbolRadius","zIndex","add","x","y","baseline","labelWidth","maxLabelLength","labelHeight","setState","state","getSeriesExtremes","colorValArray","calculatedExtremes","cSeries","dataMin","Infinity","dataMax","pointValKey","zoneAxis","_i","getColumn","minColorValue","maxColorValue","cExtremes","getExtremes","Math","applyExtremes","drawCrosshair","crossPos","plotX","plotY","axisPos","axisLen","toPixels","cross","addedToColorAxis","addClass","getPlotLinePath","translatedValue","newOptions","destroyItems","destroy","slice","remove","name","legendItems","valueDecimals","valueSuffix","getPointsInDataClass","reduce","s","filter","numberFormatter","rectangle","isDataClass","affectedSeries","hiddenInDataClass","colorAxisHeight","colorAxisWidth","symbolWidth","symbolHeight","keepProps","G","Chart","Fx","Legend","MapNavigationDefaults","lang","zoomIn","zoomOut","mapNavigation","buttonOptions","alignTo","align","verticalAlign","style","fontSize","fontWeight","theme","stroke","buttons","onclick","mapZoom","text","mouseWheelSensitivity","MapPointer_defined","MapPointer_extend","MapPointer_pick","wrap","totalWheelDeltaTimer","totalWheelDelta","onContainerDblClick","normalize","enableDoubleClickZoomTo","pointer","inClass","target","hoverPoint","zoomTo","isInsidePlot","chartX","plotLeft","chartY","plotTop","onContainerMouseWheel","delta","wheelDelta","deltaY","detail","abs","clearTimeout","setTimeout","mapView","zoomBy","wrapNormalize","proceed","chartPosition","lonLat","pixelsToLonLat","wrapZoomOption","enableTouchZoom","zooming","pinchType","PointerClass","pointerProto","Maps_MapPointer","bottomButton","w","h","brBoxY","brBoxHeight","roundedRect","topButton","SVGRendererClass","bottombutton","topbutton","composed","MapNavigation_addEvent","MapNavigation_extend","MapNavigation_merge","objectEach","MapNavigation_pick","pushUnique","stopEvent","preventDefault","stopPropagation","cancelBubble","MapNavigation","navButtons","MapChartClass","Maps_MapSymbols","mapNav","outerHandler","handler","navOptions","pop","forExport","enableButtons","navButtonsGroup","g","_c","_d","button","path","element","hasLoaded","unbind_1","expBtnBBox","exportingGroup","getBBox","navBtnsBBox","box2","box1","aboveExpBtn","belowExpBtn","mapNavVerticalAlign","translateY","updateEvents","enableDoubleClickZoom","unbindDblClick","container","enableMouseWheelZoom","unbindMouseWheel","initialZoom","zoom","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","columnProto","seriesTypes","column","ColorMapComposition_addEvent","ColorMapComposition_defined","onPointAfterSetState","moveToTopOnHover","graphic","stateMarkerGraphic","css","pointerEvents","parentGroup","id","href","url","visibility","pointMembers","dataLabelOnNull","isValid","isNaN","seriesMembers","parallelArrays","pointArrayMap","trackerGroups","ret","colorProp","pointAttribs","Series_ColorMapComposition","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default","deg2rad","CenteredUtilities_fireEvent","CenteredUtilities_isNumber","CenteredUtilities_pick","CenteredUtilities_relativeLength","getCenter","handleSlicingRoom","slicingRoom","slicedOffset","plotWidth","plotHeight","centerOption","center","smallestSize","thickness","size","innerSize","parseFloat","positions","angular","test","getStartAndEndRadians","startAngle","endAngle","Series_CenteredUtilities","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default","MapChart_extends","TypeError","String","__spreadArray","pack","ar","l","getOptions","MapChart_isNumber","MapChart_merge","MapChart_pick","callback","defaultCreditsOptions","credits","panning","mapText","mapTextFull","tooltip","followTouchMove","howMuch","xProjected","yProjected","log","projection","inverse","recommendMapView","mapData","maps","mapChart","c","splitPath","arr","split","replace","pathToSegments","Chart_MapChart","validBounds","Number","MAX_VALUE","seg","MapPoint_extends","__assign","assign","t","ScatterPoint","scatter","MapPoint_extend","MapPoint_isNumber","MapPoint_pick","MapPoint","getProjectedPath","projectedPath","geometry","hasCoordinates","applyOptions","joinBy","mapMap","joinKey","mapKey","mapPoint","getProjectedBounds","bounds","MapPoint_boundsFromPath","properties","propMiddleLon","propMiddleLat","projectedPoint","forward","midX","midY","propMiddleX","propMiddleY","middleX","middleYFraction","middleY","onMouseOver","colorInterval","nullInteraction","onMouseOut","dataLabel","animOptions","inset","insetIndex","insets","px1","projectedUnitsToPixels","px2","proj1","pixelsToProjectedUnits","proj2","fitToBounds","MapSeriesDefaults_isNumber","Map_MapSeriesDefaults","affectsMapView","dataLabels","crop","formatter","inside","linecap","stickyTracking","followPointer","pointFormat","turboThreshold","allAreas","borderColor","borderWidth","states","hover","halo","normal","select","legendSymbol","Maps_MapViewDefaults","fitToGeometry","maxZoom","parallels","insetOptions","relativeTo","units","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","win","format","error","GeoJSONComposition_extend","GeoJSONComposition_merge","GeoJSONComposition_wrap","chartFromLatLonToPoint","lonLatToProjectedUnits","chartFromPointToLatLon","projectedUnitsToLonLat","chartTransformFromLatLon","latLon","transform","proj4","jsonmarginX","jsonmarginY","jsonres","scale","_e","xoffset","_f","xpan","_g","yoffset","_h","ypan","projected","crs","lon","lat","cosAngle","cos","sinAngle","sin","rotated","chartTransformToLatLon","normalized","topo2geo","topology","objectName","keys","objects","arcsArray","arcs","translate","positionArray","j","jEnd","arcsToCoordinates","coordinates","arcNo","arc","reverse","geometries","features","geojson","copyright","copyrightShort","copyrightUrl","bbox","wrapChartAddCredit","mapCreditsFull","transformFromLatLon","fromLatLonToPoint","fromPointToLatLon","transformToLatLon","json","hType","feature","pointOptions","name_1","NAME","mapCredits","Maps_GeoJSONComposition","getCenterOfPoints","sum","getDistanceBetweenPoints","p1","p2","sqrt","pow","getAngleBetweenPoints","atan2","pointInPolygon","polygon","Geometry_GeometryUtilities","clipPolygon","subjectPolygon","boundsPolygon","closed","clipEdge2","prevPoint","currentPoint","clipEdge1","outputList","inputList","isInside","intersection","dc","dp","n1","n2","n3","isIntersection","line","sign","LambertConformalConic_deg2rad","PI","halfPI","tany","tan","LambertConformalConic","lat1","lat2","cosLat1","projectedBounds","xy","outside","cy","rho","atan","M","EqualEarth","paramLat","asin","paramLatSq","paramLatPow6","A1","A2","A3","A4","fy","dlat","NaN","quarterPI","Miller_deg2rad","Miller","exp","Orthographic_deg2rad","Orthographic","antimeridianCutting","lonDeg","latDeg","z","cSin","WebMercator_deg2rad","ProjectionRegistry","WebMercator","maxLatitude","sinLat","Projection_spreadArray","clamp","erase","Projection_deg2rad","wrapLon","hav","radians","havFromCoords","point1","point2","lon1","lon2","Projection","hasGeoProjection","rotator","getRotator","ProjectionDefinition","registry","def","angularDistance","geodesic","inclusive","stepDistance","cosLat1CosLon1","cosLat2CosLon2","cosLat1SinLon1","cosLat2SinLon2","sinLat1","sinLat2","pointDistance","angDistance","sinAng","jumps","round","lineString","step","fraction","A","B","lat3","lon3","insertGeodesics","poly","roughDistance","toString","join","lineIntersectsBounds","getIntersect","dim","val","otherDim","crossingVal","deltaLambda","deltaPhi","deltaGamma","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","cosLat","k","rLonLat","cutOnAntimeridian","isPolygon","polarIntersection","intersections","polygons","previousLonLat","antimeridian","direction","sort","lonPlus","lonMinus","i_1","poly_1","polarLatitude","polarSegment","projectingToPlane","preclip","postclip","addToPath","firstValidLonLat","lastValidLonLat","movedTo","gap","pushToPath","someOutside","someInside","Projection_clipPolygon","Projection_clipLineString","MapView_extends","MapView_spreadArray","MapView_composed","MapView_addEvent","MapView_clamp","crisp","MapView_fireEvent","MapView_isArray","MapView_isNumber","isObject","isString","MapView_merge","MapView_pick","MapView_pushUnique","MapView_relativeLength","zoomFromBounds","playingField","worldSize","recommendedMapViewAfterDrill","seriesOptions","drilldown","mapZooming","MapView","allowTransformAnimation","eventsToUnbind","recommendedMapView","MapViewInset","recInsets","optInsets","mergeInsets","plotBox","minZoom","createInsets","getField","hasRendered","setUpEvents","compositeBounds","arrayOfBounds","acc","cur","toObject","ob","insetsObj","pad","fullField","padArr","setView","padded","getGeoMap","getMapBBox","getScale","allBounds","fitToGeometryCache","xs","ys","MapView_boundsFromPath","getSVGTransform","projectedCenter","flipFactor","scaleX","scaleY","translateX","lonLatToPixels","mapTransforms","hitZone","coords","geoBounds","insetProjectedPoint","pxPoint","coordinates_1","mapDataArray","geoMaps","allGeoBounds","geoMap","useMapGeometry","bottomLeft","topRight","boundsCenterProjected","field","getHitZone","centerPxX","centerPxY","mouseDownCenterProjected","mouseDownKey","mouseDownRotation","onPan","lastTouches","pinchDown","touches","mouseDownX","mouseDownY","startDistance","originalEvent","worldBounds","worldZoom","ratio","newCenter","evt","resetSelection","showResetZoom","newProjection","isDirtyProjection","Maps_Projection","isDirtyInsets","groups","transformGroups","clearBounds","chartCoords","offsetX","offsetY","geoBoundsProjectedBox","geoBoundsProjectedPolygon","segment","relativeTo_1","borderPath","animate","border","strokeWidth_1","strokeWidth","field_1","f","MapSeries_extends","MapSeries_spreadArray","animObject","stop","noop","ColumnSeries","ScatterSeries","MapSeries_extend","find","MapSeries_fireEvent","MapSeries_isArray","MapSeries_defined","MapSeries_isNumber","MapSeries_isObject","MapSeries_merge","MapSeries_objectEach","MapSeries_pick","MapSeries_splat","MapSeries","processedData","doFullTranslate","isResizing","drawMapDataLabels","drawDataLabels","dataLabelsGroup","clip","clipRect","drawPoints","animate_1","className","toLowerCase","selected","params","complete","animateIn","animateOut","inheritedStrokeWidth","getStrokeWidth","removeAttribute","transformGroup","svgTransform","view","animatePoints","globalAnimation","startTranslateX_1","startTranslateY_1","startScale_1","step_1","now","fx","scaleStep","userStep_1","animator","applyDrilldown","bind","insets_1","projection_1","allBounds_1","labelrank","midX_1","midY_1","Maps_MapView","pointAttrToOptions","dataTable","rowCount","pointStrokeWidth","stateOptions","stateStrokeWidth","seriesStrokeWidth","dashstyle","updateData","setData","data","updatePoints","processData","generatePoints","dataColumnKeys","props","chartOptions","dataUsed","mapDataObject","mapTitle","ix","Map_MapPoint","setNestedProperty","joinKey_1","joinKey_2","dataUsedString_1","itemOptions","mainSvgTransform_1","shapeType","shapeArgs","directTouch","drawGraph","forceDL","getExtremesFromAll","getSymbol","isCartesian","preserveAspectRatio","searchPoint","registerSeriesType","MapLine_MapLineSeriesDefaults","fillColor","MapLineSeries_extends","MapLineSeries_extend","MapLineSeries_merge","MapLineSeries","Map_MapSeries","MapPointPoint_extends","MapPointPoint_ScatterSeries","MapPointPoint_isNumber","MapPointPoint","MapPoint_MapPointSeriesDefaults","defer","MapPointSeries_extends","MapPointSeries_noop","MapPointSeries_a","MapPointSeries_MapSeries","MapPointSeries_ScatterSeries","MapPointSeries_extend","MapPointSeries_fireEvent","MapPointSeries_isNumber","MapPointSeries_merge","MapPointSeries","projectPoint","hasCoordinates_1","didBounds","plotCoords","isPointInside","zone","zones","getZone","mapmarker","anchorX","anchorY","isLegendSymbol","context","Bubble_BubbleLegendDefaults","connectorClassName","connectorColor","connectorDistance","connectorWidth","allowOverlap","maxSize","minSize","legendIndex","ranges","sizeBy","sizeByAbsoluteValue","zThreshold","BubbleLegendItem_color","BubbleLegendItem_noop","arrayMax","arrayMin","BubbleLegendItem_isNumber","BubbleLegendItem_merge","BubbleLegendItem_pick","stableSort","BubbleLegendItem","addToLegend","items","connectorSpace","bubbleLegend","autoRanges","maxLabel","getMaxLabelSize","radius","movementX","seriesIndex","bubbleAttribs","connectorAttribs","labelAttribs","rtl","fillOpacity","range","setOpacity","getRangeRadius","bubbleSeries","zMax","zMin","getRadius","connectors","bubbleItems","itemStyle","renderRange","hideOverlappingLabels","mainRange","labelsOptions","elementCenter","absoluteRadius","labelsAlign","posX","posY","crispMovement","connectorLength","circle","crispLine","formatLabel","position","placed","alignAttr","labelSize","newOpacity","oldOpacity","show","hide","getRanges","zData","rangesOptions","minZ","maxZ","isBubble","ignoreSeries","displayNegative","predictBubbleSizes","calculatedSize","floating","horizontal","lastLineHeight","plotSizeX","plotSizeY","pxSizes","getPxExtremes","ceil","minPxSize","maxPxSize","plotSize","updateRanges","bubbleLegendOptions","correctSizes","BubbleLegendComposition_setOptions","BubbleLegendComposition_composed","BubbleLegendComposition_addEvent","BubbleLegendComposition_objectEach","BubbleLegendComposition_pushUnique","BubbleLegendComposition_wrap","chartDrawChartBox","bubbleSizes","getVisibleBubbleSeriesIndex","setScale","updateNames","ticks","tick","isNew","isNewLabel","retranslateItems","getLinesHeights","lastLine","legendItem2","lines","itemHeight","bubbleSeriesIndex","onLegendItemClick","defaultPrevented","status","orgTranslateX","orgTranslateY","actualLine","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","BubblePoint_extends","BubblePoint_ScatterPoint","BubblePoint_extend","BubblePoint","haloPath","computedSize","inverted","yAxis","ttBelow","BubbleSeries_extends","BubbleSeries_color","BubbleSeries_composed","BubbleSeries_noop","BubbleSeries_Series","BubbleSeries_a","BubbleSeries_columnProto","BubbleSeries_ScatterSeries","BubbleSeries_addEvent","BubbleSeries_arrayMax","BubbleSeries_arrayMin","BubbleSeries_clamp","BubbleSeries_extend","BubbleSeries_isNumber","BubbleSeries_merge","BubbleSeries_pick","BubbleSeries_pushUnique","onAxisFoundExtremes","hasActiveSeries","axisLength","isXAxis","pxMin","pxMax","transA","bubblePadding","reserveSpace","allowZoomOutside","onPoint","getRadii","radii","onAxisAfterRender","categories","tickCount","BubbleSeries","AxisClass","Bubble_BubbleLegendComposition","animationLimit","markerAttribs","yData","zExtremes","bubbleZExtremes","valid_1","zMin_1","zMax_1","otherSeries","zExtremes_1","getZExtremes","yValue","sizeByArea","zRange","markerOptions","translateBubble","negative","dlBox","getPxSize","isPercent","parseInt","searchKDTree","compareX","suppliedPointEvaluator","suppliedBSideCheckEvaluator","comparisonProp","p1Dist","p2Dist","flip","lineColor","radiusPlus","softThreshold","alignDataLabel","applyZones","keysAffectYAxis","specialGroup","MapBubblePoint_extends","mapPointProto","MapBubblePoint_extend","MapBubblePoint","MapBubbleSeries_extends","MapBubbleSeries_a","mapProto","MapBubbleSeries_mapPointProto","mappoint","MapBubbleSeries_extend","MapBubbleSeries_merge","MapBubbleSeries","Bubble_BubbleSeries","kdAxisArray","xyFromShape","HeatmapPoint_extends","HeatmapPoint_ScatterPoint","HeatmapPoint_clamp","HeatmapPoint_defined","HeatmapPoint_extend","HeatmapPoint_pick","HeatmapPoint","formatPrefix","getCellAttributes","xPad","colsize","yPad","rowsize","pointPlacement","pointPlacementToXValue","pointPadding","cellAttr","dimensions_1","dimension","plotPos","widthOrHeight","halfCellSize","HeatmapSeriesDefaults_isNumber","Heatmap_HeatmapSeriesDefaults","borderRadius","interpolation","lineWidthPlus","pointRange","brightness","doc","InterpolationUtilities_defined","InterpolationUtilities_pick","canvas","clearRect","createElement","getContext","willReadFrequently","HeatmapSeries_extends","HeatmapSeries_assign","HeatmapSeries_Series","HeatmapSeries_a","HeatmapSeries_ColumnSeries","HeatmapSeries_ScatterSeries","HeatmapSeries_symbols","HeatmapSeries_addEvent","HeatmapSeries_extend","HeatmapSeries_fireEvent","HeatmapSeries_isNumber","HeatmapSeries_merge","HeatmapSeries_pick","HeatmapSeries_colorFromPoint","rgba","HeatmapSeries","valueMax","valueMin","isDirtyCanvas","seriesMarkerOptions","image","dimensions","ctx","HeatmapSeries_getContext","length_1","xMin_1","xMax","yMin_1","yMax","xDelta","yDelta","lastX","imgMultiple","lastY","last","rev","rounding","v","transformX_1","transformY_1","canvasWidth_1","canvasArea","pixelToPointScale","pointsLen","pixelData","Uint8ClampedArray","set","putImageData","ImageData","toDataURL","_hasPointMarkers","getValidPoints","insideOnly","axisPointRange","ellipse","hasImage","pointMarkerOptions","seriesStateOptions","pointStateOptions","widthPlus","heightPlus","plotOptions","seriesPlotOptions","heatmapPlotOptions","heatmap","brighten","shape","hasRegularShape","sizeDiff","clientX","map_src_G","Map","MapBubble_MapBubbleSeries","Axis","Maps_MapNavigation","Pointer","SVGRenderer"],"mappings":"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"}
Hacked By AnonymousFox1.0, Coded By AnonymousFox