Hacked By AnonymousFox

Current Path : C:/AppServ/www/financial/stacked/code/es5/modules/
Upload File :
Current File : C:/AppServ/www/financial/stacked/code/es5/modules/sunburst.js.map

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/sunburst\n * @requires highcharts\n *\n * (c) 2016-2024 Highsoft AS\n * Authors: Jon Arild Nygard\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\")[\"Templating\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Series\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/sunburst\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Templating\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"SeriesRegistry\"], [\"highcharts/highcharts\",\"SVGElement\"], [\"highcharts/highcharts\",\"Series\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/sunburst\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Series\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"Series\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__820__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 28:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\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 */ sunburst_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es5/es-modules/Extensions/Breadcrumbs/BreadcrumbsDefaults.js\n/* *\n *\n *  Highcharts Breadcrumbs module\n *\n *  Authors: Grzegorz Blachlinski, Karol Kolodziej\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 * @optionparent lang\n */\nvar lang = {\n    /**\n     * @since   10.0.0\n     * @product highcharts highmaps\n     *\n     * @private\n     */\n    mainBreadcrumb: 'Main'\n};\n/**\n * Options for breadcrumbs. Breadcrumbs general options are defined in\n * `navigation.breadcrumbs`. Specific options for drilldown are set in\n * `drilldown.breadcrumbs` and for tree-like series traversing, in\n * `plotOptions[series].breadcrumbs`.\n *\n * @since        10.0.0\n * @product      highcharts\n * @optionparent navigation.breadcrumbs\n */\nvar options = {\n    /**\n     * A collection of attributes for the buttons. The object takes SVG\n     * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,\n     * a collection of CSS properties for the text.\n     *\n     * The object can also be extended with states, so you can set\n     * presentational options for `hover`, `select` or `disabled` button\n     * states.\n     *\n     * @sample {highcharts} highcharts/breadcrumbs/single-button\n     *         Themed, single button\n     *\n     * @type    {Highcharts.SVGAttributes}\n     * @since   10.0.0\n     * @product highcharts\n     */\n    buttonTheme: {\n        /** @ignore */\n        fill: 'none',\n        /** @ignore */\n        height: 18,\n        /** @ignore */\n        padding: 2,\n        /** @ignore */\n        'stroke-width': 0,\n        /** @ignore */\n        zIndex: 7,\n        /** @ignore */\n        states: {\n            select: {\n                fill: 'none'\n            }\n        },\n        style: {\n            color: \"#334eff\" /* Palette.highlightColor80 */\n        }\n    },\n    /**\n     * The default padding for each button and separator in each direction.\n     *\n     * @type  {number}\n     * @since 10.0.0\n     */\n    buttonSpacing: 5,\n    /**\n     * Fires when clicking on the breadcrumbs button. Two arguments are\n     * passed to the function. First breadcrumb button as an SVG element.\n     * Second is the breadcrumbs class, containing reference to the chart,\n     * series etc.\n     *\n     * ```js\n     * click: function(button, breadcrumbs) {\n     *   console.log(button);\n     * }\n     * ```\n     *\n     * Return false to stop default buttons click action.\n     *\n     * @type      {Highcharts.BreadcrumbsClickCallbackFunction}\n     * @since     10.0.0\n     * @apioption navigation.breadcrumbs.events.click\n     */\n    /**\n     * When the breadcrumbs are floating, the plot area will not move to\n     * make space for it. By default, the chart will not make space for the\n     * buttons. This property won't work when positioned in the middle.\n     *\n     * @sample highcharts/breadcrumbs/single-button\n     *         Floating button\n     *\n     * @type  {boolean}\n     * @since 10.0.0\n     */\n    floating: false,\n    /**\n     * A format string for the breadcrumbs button. Variables are enclosed by\n     * curly brackets. Available values are passed in the declared point\n     * options.\n     *\n     * @type      {string|undefined}\n     * @since 10.0.0\n     * @default   undefined\n     * @sample {highcharts} highcharts/breadcrumbs/format Display custom\n     *          values in breadcrumb button.\n     */\n    format: void 0,\n    /**\n     * Callback function to format the breadcrumb text from scratch.\n     *\n     * @type      {Highcharts.BreadcrumbsFormatterCallbackFunction}\n     * @since     10.0.0\n     * @default   undefined\n     * @apioption navigation.breadcrumbs.formatter\n     */\n    /**\n     * What box to align the button to. Can be either `plotBox` or\n     * `spacingBox`.\n     *\n     * @type    {Highcharts.ButtonRelativeToValue}\n     * @default plotBox\n     * @since   10.0.0\n     * @product highcharts highmaps\n     */\n    relativeTo: 'plotBox',\n    /**\n     * Whether to reverse the order of buttons. This is common in Arabic\n     * and Hebrew.\n     *\n     * @sample {highcharts} highcharts/breadcrumbs/rtl\n     *         Breadcrumbs in RTL\n     *\n     * @type  {boolean}\n     * @since 10.2.0\n     */\n    rtl: false,\n    /**\n     * Positioning for the button row. The breadcrumbs buttons will be\n     * aligned properly for the default chart layout (title,  subtitle,\n     * legend, range selector) for the custom chart layout set the position\n     * properties.\n     *\n     * @sample  {highcharts} highcharts/breadcrumbs/single-button\n     *          Single, right aligned button\n     *\n     * @type    {Highcharts.BreadcrumbsAlignOptions}\n     * @since   10.0.0\n     * @product highcharts highmaps\n     */\n    position: {\n        /**\n         * Horizontal alignment of the breadcrumbs buttons.\n         *\n         * @type {Highcharts.AlignValue}\n         */\n        align: 'left',\n        /**\n         * Vertical alignment of the breadcrumbs buttons.\n         *\n         * @type {Highcharts.VerticalAlignValue}\n         */\n        verticalAlign: 'top',\n        /**\n         * The X offset of the breadcrumbs button group.\n         *\n         * @type {number}\n         */\n        x: 0,\n        /**\n         * The Y offset of the breadcrumbs button group. When `undefined`,\n         * and `floating` is `false`, the `y` position is adapted so that\n         * the breadcrumbs are rendered outside the target area.\n         *\n         * @type {number|undefined}\n         */\n        y: void 0\n    },\n    /**\n     * Options object for Breadcrumbs separator.\n     *\n     * @since 10.0.0\n     */\n    separator: {\n        /**\n         * @type    {string}\n         * @since   10.0.0\n         * @product highcharts\n         */\n        text: '/',\n        /**\n         * CSS styles for the breadcrumbs separator.\n         *\n         * In styled mode, the breadcrumbs separators are styled by the\n         * `.highcharts-separator` rule with its different states.\n         *  @type  {Highcharts.CSSObject}\n         *  @since 10.0.0\n         */\n        style: {\n            color: \"#666666\" /* Palette.neutralColor60 */,\n            fontSize: '0.8em'\n        }\n    },\n    /**\n     * Show full path or only a single button.\n     *\n     * @sample {highcharts} highcharts/breadcrumbs/single-button\n     *         Single, styled button\n     *\n     * @type  {boolean}\n     * @since 10.0.0\n     */\n    showFullPath: true,\n    /**\n     * CSS styles for all breadcrumbs.\n     *\n     * In styled mode, the breadcrumbs buttons are styled by the\n     * `.highcharts-breadcrumbs-buttons .highcharts-button` rule with its\n     * different states.\n     *\n     * @type  {Highcharts.SVGAttributes}\n     * @since 10.0.0\n     */\n    style: {},\n    /**\n     * Whether to use HTML to render the breadcrumbs items texts.\n     *\n     * @type  {boolean}\n     * @since 10.0.0\n     */\n    useHTML: false,\n    /**\n     * The z index of the breadcrumbs group.\n     *\n     * @type  {number}\n     * @since 10.0.0\n     */\n    zIndex: 7\n};\n/* *\n *\n *  Default Export\n *\n * */\nvar BreadcrumbsDefaults = {\n    lang: lang,\n    options: options\n};\n/* harmony default export */ var Breadcrumbs_BreadcrumbsDefaults = (BreadcrumbsDefaults);\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/Extensions/Breadcrumbs/Breadcrumbs.js\n/* *\n *\n *  Highcharts Breadcrumbs module\n *\n *  Authors: Grzegorz Blachlinski, Karol Kolodziej\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, 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 * Shift the drillUpButton to make the space for resetZoomButton, #8095.\n * @private\n */\nfunction onChartAfterShowResetZoom() {\n    var chart = this;\n    if (chart.breadcrumbs) {\n        var bbox = chart.resetZoomButton &&\n                chart.resetZoomButton.getBBox(),\n            breadcrumbsOptions = chart.breadcrumbs.options;\n        if (bbox &&\n            breadcrumbsOptions.position.align === 'right' &&\n            breadcrumbsOptions.relativeTo === 'plotBox') {\n            chart.breadcrumbs.alignBreadcrumbsGroup(-bbox.width - breadcrumbsOptions.buttonSpacing);\n        }\n    }\n}\n/**\n * Remove resize/afterSetExtremes at chart destroy.\n * @private\n */\nfunction onChartDestroy() {\n    if (this.breadcrumbs) {\n        this.breadcrumbs.destroy();\n        this.breadcrumbs = void 0;\n    }\n}\n/**\n * Logic for making space for the buttons above the plot area\n * @private\n */\nfunction onChartGetMargins() {\n    var breadcrumbs = this.breadcrumbs;\n    if (breadcrumbs &&\n        !breadcrumbs.options.floating &&\n        breadcrumbs.level) {\n        var breadcrumbsOptions = breadcrumbs.options,\n            buttonTheme = breadcrumbsOptions.buttonTheme,\n            breadcrumbsHeight = ((buttonTheme.height || 0) +\n                2 * (buttonTheme.padding || 0) +\n                breadcrumbsOptions.buttonSpacing),\n            verticalAlign = breadcrumbsOptions.position.verticalAlign;\n        if (verticalAlign === 'bottom') {\n            this.marginBottom = (this.marginBottom || 0) + breadcrumbsHeight;\n            breadcrumbs.yOffset = breadcrumbsHeight;\n        }\n        else if (verticalAlign !== 'middle') {\n            this.plotTop += breadcrumbsHeight;\n            breadcrumbs.yOffset = -breadcrumbsHeight;\n        }\n        else {\n            breadcrumbs.yOffset = void 0;\n        }\n    }\n}\n/**\n * @private\n */\nfunction onChartRedraw() {\n    this.breadcrumbs && this.breadcrumbs.redraw();\n}\n/**\n * After zooming out, shift the drillUpButton to the previous position, #8095.\n * @private\n */\nfunction onChartSelection(event) {\n    if (event.resetSelection === true &&\n        this.breadcrumbs) {\n        this.breadcrumbs.alignBreadcrumbsGroup();\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The Breadcrumbs class\n *\n * @private\n * @class\n * @name Highcharts.Breadcrumbs\n *\n * @param {Highcharts.Chart} chart\n *        Chart object\n * @param {Highcharts.Options} userOptions\n *        User options\n */\nvar Breadcrumbs = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function Breadcrumbs(chart, userOptions) {\n        this.elementList = {};\n        this.isDirty = true;\n        this.level = 0;\n        this.list = [];\n        var chartOptions = merge(chart.options.drilldown &&\n                chart.options.drilldown.drillUpButton,\n            Breadcrumbs.defaultOptions,\n            chart.options.navigation && chart.options.navigation.breadcrumbs,\n            userOptions);\n        this.chart = chart;\n        this.options = chartOptions || {};\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    Breadcrumbs.compose = function (ChartClass, highchartsDefaultOptions) {\n        if (pushUnique(composed, 'Breadcrumbs')) {\n            addEvent(ChartClass, 'destroy', onChartDestroy);\n            addEvent(ChartClass, 'afterShowResetZoom', onChartAfterShowResetZoom);\n            addEvent(ChartClass, 'getMargins', onChartGetMargins);\n            addEvent(ChartClass, 'redraw', onChartRedraw);\n            addEvent(ChartClass, 'selection', onChartSelection);\n            // Add language support.\n            extend(highchartsDefaultOptions.lang, Breadcrumbs_BreadcrumbsDefaults.lang);\n        }\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Update Breadcrumbs properties, like level and list.\n     *\n     * @function Highcharts.Breadcrumbs#updateProperties\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.updateProperties = function (list) {\n        this.setList(list);\n        this.setLevel();\n        this.isDirty = true;\n    };\n    /**\n     * Set breadcrumbs list.\n     * @function Highcharts.Breadcrumbs#setList\n     *\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     * @param {Highcharts.BreadcrumbsOptions} list\n     *        Breadcrumbs list.\n     */\n    Breadcrumbs.prototype.setList = function (list) {\n        this.list = list;\n    };\n    /**\n     * Calculate level on which chart currently is.\n     *\n     * @function Highcharts.Breadcrumbs#setLevel\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.setLevel = function () {\n        this.level = this.list.length && this.list.length - 1;\n    };\n    /**\n     * Get Breadcrumbs level\n     *\n     * @function Highcharts.Breadcrumbs#getLevel\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.getLevel = function () {\n        return this.level;\n    };\n    /**\n     * Default button text formatter.\n     *\n     * @function Highcharts.Breadcrumbs#getButtonText\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     * @param {Highcharts.Breadcrumbs} breadcrumb\n     *        Breadcrumb.\n     * @return {string}\n     *         Formatted text.\n     */\n    Breadcrumbs.prototype.getButtonText = function (breadcrumb) {\n        var breadcrumbs = this,\n            chart = breadcrumbs.chart,\n            breadcrumbsOptions = breadcrumbs.options,\n            lang = chart.options.lang,\n            textFormat = pick(breadcrumbsOptions.format,\n            breadcrumbsOptions.showFullPath ?\n                '{level.name}' : '← {level.name}'),\n            defaultText = lang && pick(lang.drillUpText,\n            lang.mainBreadcrumb);\n        var returnText = breadcrumbsOptions.formatter &&\n                breadcrumbsOptions.formatter(breadcrumb) ||\n                format(textFormat, { level: breadcrumb.levelOptions },\n            chart) || '';\n        if (((isString(returnText) &&\n            !returnText.length) ||\n            returnText === '← ') &&\n            defined(defaultText)) {\n            returnText = !breadcrumbsOptions.showFullPath ?\n                '← ' + defaultText :\n                defaultText;\n        }\n        return returnText;\n    };\n    /**\n     * Redraw.\n     *\n     * @function Highcharts.Breadcrumbs#redraw\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.redraw = function () {\n        if (this.isDirty) {\n            this.render();\n        }\n        if (this.group) {\n            this.group.align();\n        }\n        this.isDirty = false;\n    };\n    /**\n     * Create a group, then draw breadcrumbs together with the separators.\n     *\n     * @function Highcharts.Breadcrumbs#render\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.render = function () {\n        var breadcrumbs = this,\n            chart = breadcrumbs.chart,\n            breadcrumbsOptions = breadcrumbs.options;\n        // A main group for the breadcrumbs.\n        if (!breadcrumbs.group && breadcrumbsOptions) {\n            breadcrumbs.group = chart.renderer\n                .g('breadcrumbs-group')\n                .addClass('highcharts-no-tooltip highcharts-breadcrumbs')\n                .attr({\n                zIndex: breadcrumbsOptions.zIndex\n            })\n                .add();\n        }\n        // Draw breadcrumbs.\n        if (breadcrumbsOptions.showFullPath) {\n            this.renderFullPathButtons();\n        }\n        else {\n            this.renderSingleButton();\n        }\n        this.alignBreadcrumbsGroup();\n    };\n    /**\n     * Draw breadcrumbs together with the separators.\n     *\n     * @function Highcharts.Breadcrumbs#renderFullPathButtons\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.renderFullPathButtons = function () {\n        // Make sure that only one type of button is visible.\n        this.destroySingleButton();\n        this.resetElementListState();\n        this.updateListElements();\n        this.destroyListElements();\n    };\n    /**\n     * Render Single button - when showFullPath is not used. The button is\n     * similar to the old drillUpButton\n     *\n     * @function Highcharts.Breadcrumbs#renderSingleButton\n     * @param {Highcharts.Breadcrumbs} this Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.renderSingleButton = function () {\n        var breadcrumbs = this,\n            chart = breadcrumbs.chart,\n            list = breadcrumbs.list,\n            breadcrumbsOptions = breadcrumbs.options,\n            buttonSpacing = breadcrumbsOptions.buttonSpacing;\n        // Make sure that only one type of button is visible.\n        this.destroyListElements();\n        // Draw breadcrumbs. Initial position for calculating the breadcrumbs\n        // group.\n        var posX = breadcrumbs.group ?\n                breadcrumbs.group.getBBox().width :\n                buttonSpacing,\n            posY = buttonSpacing;\n        var previousBreadcrumb = list[list.length - 2];\n        if (!chart.drillUpButton && (this.level > 0)) {\n            chart.drillUpButton = breadcrumbs.renderButton(previousBreadcrumb, posX, posY);\n        }\n        else if (chart.drillUpButton) {\n            if (this.level > 0) {\n                // Update button.\n                this.updateSingleButton();\n            }\n            else {\n                this.destroySingleButton();\n            }\n        }\n    };\n    /**\n     * Update group position based on align and it's width.\n     *\n     * @function Highcharts.Breadcrumbs#renderSingleButton\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.alignBreadcrumbsGroup = function (xOffset) {\n        var breadcrumbs = this;\n        if (breadcrumbs.group) {\n            var breadcrumbsOptions = breadcrumbs.options,\n                buttonTheme = breadcrumbsOptions.buttonTheme,\n                positionOptions = breadcrumbsOptions.position,\n                alignTo = (breadcrumbsOptions.relativeTo === 'chart' ||\n                    breadcrumbsOptions.relativeTo === 'spacingBox' ?\n                    void 0 :\n                    'plotBox'),\n                bBox = breadcrumbs.group.getBBox(),\n                additionalSpace = 2 * (buttonTheme.padding || 0) +\n                    breadcrumbsOptions.buttonSpacing;\n            // Store positionOptions\n            positionOptions.width = bBox.width + additionalSpace;\n            positionOptions.height = bBox.height + additionalSpace;\n            var newPositions = merge(positionOptions);\n            // Add x offset if specified.\n            if (xOffset) {\n                newPositions.x += xOffset;\n            }\n            if (breadcrumbs.options.rtl) {\n                newPositions.x += positionOptions.width;\n            }\n            newPositions.y = pick(newPositions.y, this.yOffset, 0);\n            breadcrumbs.group.align(newPositions, true, alignTo);\n        }\n    };\n    /**\n     * Render a button.\n     *\n     * @function Highcharts.Breadcrumbs#renderButton\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     * @param {Highcharts.Breadcrumbs} breadcrumb\n     *        Current breadcrumb\n     * @param {Highcharts.Breadcrumbs} posX\n     *        Initial horizontal position\n     * @param {Highcharts.Breadcrumbs} posY\n     *        Initial vertical position\n     * @return {SVGElement|void}\n     *        Returns the SVG button\n     */\n    Breadcrumbs.prototype.renderButton = function (breadcrumb, posX, posY) {\n        var breadcrumbs = this,\n            chart = this.chart,\n            breadcrumbsOptions = breadcrumbs.options,\n            buttonTheme = merge(breadcrumbsOptions.buttonTheme);\n        var button = chart.renderer\n                .button(breadcrumbs.getButtonText(breadcrumb),\n            posX,\n            posY,\n            function (e) {\n                // Extract events from button object and call\n                var buttonEvents = breadcrumbsOptions.events &&\n                    breadcrumbsOptions.events.click;\n            var callDefaultEvent;\n            if (buttonEvents) {\n                callDefaultEvent = buttonEvents.call(breadcrumbs, e, breadcrumb);\n            }\n            // (difference in behaviour of showFullPath and drillUp)\n            if (callDefaultEvent !== false) {\n                // For single button we are not going to the button\n                // level, but the one level up\n                if (!breadcrumbsOptions.showFullPath) {\n                    e.newLevel = breadcrumbs.level - 1;\n                }\n                else {\n                    e.newLevel = breadcrumb.level;\n                }\n                fireEvent(breadcrumbs, 'up', e);\n            }\n        }, buttonTheme)\n            .addClass('highcharts-breadcrumbs-button')\n            .add(breadcrumbs.group);\n        if (!chart.styledMode) {\n            button.attr(breadcrumbsOptions.style);\n        }\n        return button;\n    };\n    /**\n     * Render a separator.\n     *\n     * @function Highcharts.Breadcrumbs#renderSeparator\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     * @param {Highcharts.Breadcrumbs} posX\n     *        Initial horizontal position\n     * @param {Highcharts.Breadcrumbs} posY\n     *        Initial vertical position\n     * @return {Highcharts.SVGElement}\n     *        Returns the SVG button\n     */\n    Breadcrumbs.prototype.renderSeparator = function (posX, posY) {\n        var breadcrumbs = this,\n            chart = this.chart,\n            breadcrumbsOptions = breadcrumbs.options,\n            separatorOptions = breadcrumbsOptions.separator;\n        var separator = chart.renderer\n                .label(separatorOptions.text,\n            posX,\n            posY,\n            void 0,\n            void 0,\n            void 0,\n            false)\n                .addClass('highcharts-breadcrumbs-separator')\n                .add(breadcrumbs.group);\n        if (!chart.styledMode) {\n            separator.css(separatorOptions.style);\n        }\n        return separator;\n    };\n    /**\n     * Update.\n     * @function Highcharts.Breadcrumbs#update\n     *\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     * @param {Highcharts.BreadcrumbsOptions} options\n     *        Breadcrumbs class.\n     * @param {boolean} redraw\n     *        Redraw flag\n     */\n    Breadcrumbs.prototype.update = function (options) {\n        merge(true, this.options, options);\n        this.destroy();\n        this.isDirty = true;\n    };\n    /**\n     * Update button text when the showFullPath set to false.\n     * @function Highcharts.Breadcrumbs#updateSingleButton\n     *\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.updateSingleButton = function () {\n        var chart = this.chart,\n            currentBreadcrumb = this.list[this.level - 1];\n        if (chart.drillUpButton) {\n            chart.drillUpButton.attr({\n                text: this.getButtonText(currentBreadcrumb)\n            });\n        }\n    };\n    /**\n     * Destroy the chosen breadcrumbs group\n     *\n     * @function Highcharts.Breadcrumbs#destroy\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.destroy = function () {\n        this.destroySingleButton();\n        // Destroy elements one by one. It's necessary because\n        // g().destroy() does not remove added HTML\n        this.destroyListElements(true);\n        // Then, destroy the group itself.\n        if (this.group) {\n            this.group.destroy();\n        }\n        this.group = void 0;\n    };\n    /**\n     * Destroy the elements' buttons and separators.\n     *\n     * @function Highcharts.Breadcrumbs#destroyListElements\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.destroyListElements = function (force) {\n        var elementList = this.elementList;\n        objectEach(elementList, function (element, level) {\n            if (force ||\n                !elementList[level].updated) {\n                element = elementList[level];\n                element.button && element.button.destroy();\n                element.separator && element.separator.destroy();\n                delete element.button;\n                delete element.separator;\n                delete elementList[level];\n            }\n        });\n        if (force) {\n            this.elementList = {};\n        }\n    };\n    /**\n     * Destroy the single button if exists.\n     *\n     * @function Highcharts.Breadcrumbs#destroySingleButton\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.destroySingleButton = function () {\n        if (this.chart.drillUpButton) {\n            this.chart.drillUpButton.destroy();\n            this.chart.drillUpButton = void 0;\n        }\n    };\n    /**\n     * Reset state for all buttons in elementList.\n     *\n     * @function Highcharts.Breadcrumbs#resetElementListState\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.resetElementListState = function () {\n        objectEach(this.elementList, function (element) {\n            element.updated = false;\n        });\n    };\n    /**\n     * Update rendered elements inside the elementList.\n     *\n     * @function Highcharts.Breadcrumbs#updateListElements\n     *\n     * @param {Highcharts.Breadcrumbs} this\n     *        Breadcrumbs class.\n     */\n    Breadcrumbs.prototype.updateListElements = function () {\n        var breadcrumbs = this,\n            elementList = breadcrumbs.elementList,\n            buttonSpacing = breadcrumbs.options.buttonSpacing,\n            posY = buttonSpacing,\n            list = breadcrumbs.list,\n            rtl = breadcrumbs.options.rtl,\n            rtlFactor = rtl ? -1 : 1,\n            updateXPosition = function (element,\n            spacing) {\n                return rtlFactor * element.getBBox().width +\n                    rtlFactor * spacing;\n        }, adjustToRTL = function (element, posX, posY) {\n            element.translate(posX - element.getBBox().width, posY);\n        };\n        // Initial position for calculating the breadcrumbs group.\n        var posX = breadcrumbs.group ?\n                updateXPosition(breadcrumbs.group,\n            buttonSpacing) :\n                buttonSpacing,\n            currentBreadcrumb,\n            breadcrumb;\n        for (var i = 0, iEnd = list.length; i < iEnd; ++i) {\n            var isLast = i === iEnd - 1;\n            var button = void 0,\n                separator = void 0;\n            breadcrumb = list[i];\n            if (elementList[breadcrumb.level]) {\n                currentBreadcrumb = elementList[breadcrumb.level];\n                button = currentBreadcrumb.button;\n                // Render a separator if it was not created before.\n                if (!currentBreadcrumb.separator &&\n                    !isLast) {\n                    // Add spacing for the next separator\n                    posX += rtlFactor * buttonSpacing;\n                    currentBreadcrumb.separator =\n                        breadcrumbs.renderSeparator(posX, posY);\n                    if (rtl) {\n                        adjustToRTL(currentBreadcrumb.separator, posX, posY);\n                    }\n                    posX += updateXPosition(currentBreadcrumb.separator, buttonSpacing);\n                }\n                else if (currentBreadcrumb.separator &&\n                    isLast) {\n                    currentBreadcrumb.separator.destroy();\n                    delete currentBreadcrumb.separator;\n                }\n                elementList[breadcrumb.level].updated = true;\n            }\n            else {\n                // Render a button.\n                button = breadcrumbs.renderButton(breadcrumb, posX, posY);\n                if (rtl) {\n                    adjustToRTL(button, posX, posY);\n                }\n                posX += updateXPosition(button, buttonSpacing);\n                // Render a separator.\n                if (!isLast) {\n                    separator = breadcrumbs.renderSeparator(posX, posY);\n                    if (rtl) {\n                        adjustToRTL(separator, posX, posY);\n                    }\n                    posX += updateXPosition(separator, buttonSpacing);\n                }\n                elementList[breadcrumb.level] = {\n                    button: button,\n                    separator: separator,\n                    updated: true\n                };\n            }\n            if (button) {\n                button.setState(isLast ? 2 : 0);\n            }\n        }\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    Breadcrumbs.defaultOptions = Breadcrumbs_BreadcrumbsDefaults.options;\n    return Breadcrumbs;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Breadcrumbs_Breadcrumbs = (Breadcrumbs);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * Callback function to react on button clicks.\n *\n * @callback Highcharts.BreadcrumbsClickCallbackFunction\n *\n * @param {Highcharts.Event} event\n * Event.\n *\n * @param {Highcharts.BreadcrumbOptions} options\n * Breadcrumb options.\n *\n * @param {global.Event} e\n * Event arguments.\n */\n/**\n * Callback function to format the breadcrumb text from scratch.\n *\n * @callback Highcharts.BreadcrumbsFormatterCallbackFunction\n *\n * @param {Highcharts.Event} event\n * Event.\n *\n * @param {Highcharts.BreadcrumbOptions} options\n * Breadcrumb options.\n *\n * @return {string}\n * Formatted text or false\n */\n/**\n * Options for the one breadcrumb.\n *\n * @interface Highcharts.BreadcrumbOptions\n */\n/**\n * Level connected to a specific breadcrumb.\n * @name Highcharts.BreadcrumbOptions#level\n * @type {number}\n */\n/**\n * Options for series or point connected to a specific breadcrumb.\n * @name Highcharts.BreadcrumbOptions#levelOptions\n * @type {SeriesOptions|PointOptionsObject}\n */\n/**\n * Options for aligning breadcrumbs group.\n *\n * @interface Highcharts.BreadcrumbsAlignOptions\n */\n/**\n * Align of a Breadcrumb group.\n * @default right\n * @name Highcharts.BreadcrumbsAlignOptions#align\n * @type {AlignValue}\n */\n/**\n * Vertical align of a Breadcrumb group.\n * @default top\n * @name Highcharts.BreadcrumbsAlignOptions#verticalAlign\n * @type {VerticalAlignValue}\n */\n/**\n * X offset of a Breadcrumbs group.\n * @name Highcharts.BreadcrumbsAlignOptions#x\n * @type {number}\n */\n/**\n * Y offset of a Breadcrumbs group.\n * @name Highcharts.BreadcrumbsAlignOptions#y\n * @type {number}\n */\n/**\n * Options for all breadcrumbs.\n *\n * @interface Highcharts.BreadcrumbsOptions\n */\n/**\n * Button theme.\n * @name Highcharts.BreadcrumbsOptions#buttonTheme\n * @type { SVGAttributes | undefined }\n */\n(''); // Keeps doclets above in JS file\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"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;// ./code/es5/es-modules/Series/Treemap/TreemapAlgorithmGroup.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Class\n *\n * */\nvar TreemapAlgorithmGroup = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function TreemapAlgorithmGroup(h, w, d, p) {\n        this.height = h;\n        this.width = w;\n        this.plot = p;\n        this.direction = d;\n        this.startDirection = d;\n        this.total = 0;\n        this.nW = 0;\n        this.lW = 0;\n        this.nH = 0;\n        this.lH = 0;\n        this.elArr = [];\n        this.lP = {\n            total: 0,\n            lH: 0,\n            nH: 0,\n            lW: 0,\n            nW: 0,\n            nR: 0,\n            lR: 0,\n            aspectRatio: function (w, h) {\n                return Math.max((w / h), (h / w));\n            }\n        };\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    TreemapAlgorithmGroup.prototype.addElement = function (el) {\n        this.lP.total = this.elArr[this.elArr.length - 1];\n        this.total = this.total + el;\n        if (this.direction === 0) {\n            // Calculate last point old aspect ratio\n            this.lW = this.nW;\n            this.lP.lH = this.lP.total / this.lW;\n            this.lP.lR = this.lP.aspectRatio(this.lW, this.lP.lH);\n            // Calculate last point new aspect ratio\n            this.nW = this.total / this.height;\n            this.lP.nH = this.lP.total / this.nW;\n            this.lP.nR = this.lP.aspectRatio(this.nW, this.lP.nH);\n        }\n        else {\n            // Calculate last point old aspect ratio\n            this.lH = this.nH;\n            this.lP.lW = this.lP.total / this.lH;\n            this.lP.lR = this.lP.aspectRatio(this.lP.lW, this.lH);\n            // Calculate last point new aspect ratio\n            this.nH = this.total / this.width;\n            this.lP.nW = this.lP.total / this.nH;\n            this.lP.nR = this.lP.aspectRatio(this.lP.nW, this.nH);\n        }\n        this.elArr.push(el);\n    };\n    TreemapAlgorithmGroup.prototype.reset = function () {\n        this.nW = 0;\n        this.lW = 0;\n        this.elArr = [];\n        this.total = 0;\n    };\n    return TreemapAlgorithmGroup;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Treemap_TreemapAlgorithmGroup = (TreemapAlgorithmGroup);\n\n;// ./code/es5/es-modules/Series/Treemap/TreemapNode.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Class\n *\n * */\nvar TreemapNode = /** @class */ (function () {\n    function TreemapNode() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.childrenTotal = 0;\n        this.visible = false;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    TreemapNode.prototype.init = function (id, i, children, height, level, series, parent) {\n        this.id = id;\n        this.i = i;\n        this.children = children;\n        this.height = height;\n        this.level = level;\n        this.series = series;\n        this.parent = parent;\n        return this;\n    };\n    return TreemapNode;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Treemap_TreemapNode = (TreemapNode);\n\n;// ./code/es5/es-modules/Series/DrawPointUtilities.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\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 *\n *  Functions\n *\n * */\n/**\n * Handles the drawing of a component.\n * Can be used for any type of component that reserves the graphic property,\n * and provides a shouldDraw on its context.\n *\n * @private\n *\n * @todo add type checking.\n * @todo export this function to enable usage\n */\nfunction draw(point, params) {\n    var animatableAttribs = params.animatableAttribs,\n        onComplete = params.onComplete,\n        css = params.css,\n        renderer = params.renderer;\n    var animation = (point.series && point.series.chart.hasRendered) ?\n            // Chart-level animation on updates\n            void 0 :\n            // Series-level animation on new points\n            (point.series &&\n                point.series.options.animation);\n    var graphic = point.graphic;\n    params.attribs = __assign(__assign({}, params.attribs), { 'class': point.getClassName() }) || {};\n    if ((point.shouldDraw())) {\n        if (!graphic) {\n            if (params.shapeType === 'text') {\n                graphic = renderer.text();\n            }\n            else if (params.shapeType === 'image') {\n                graphic = renderer.image(params.imageUrl || '')\n                    .attr(params.shapeArgs || {});\n            }\n            else {\n                graphic = renderer[params.shapeType](params.shapeArgs || {});\n            }\n            point.graphic = graphic;\n            graphic.add(params.group);\n        }\n        if (css) {\n            graphic.css(css);\n        }\n        graphic\n            .attr(params.attribs)\n            .animate(animatableAttribs, params.isNew ? false : animation, onComplete);\n    }\n    else if (graphic) {\n        var destroy_1 = function () {\n                point.graphic = graphic = (graphic && graphic.destroy());\n            if (typeof onComplete === 'function') {\n                onComplete();\n            }\n        };\n        // Animate only runs complete callback if something was animated.\n        if (Object.keys(animatableAttribs).length) {\n            graphic.animate(animatableAttribs, void 0, function () { return destroy_1(); });\n        }\n        else {\n            destroy_1();\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar DrawPointUtilities = {\n    draw: draw\n};\n/* harmony default export */ var Series_DrawPointUtilities = (DrawPointUtilities);\n\n;// ./code/es5/es-modules/Series/Treemap/TreemapPoint.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\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\nvar _a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, PiePoint = _a.pie.prototype.pointClass, ScatterPoint = _a.scatter.prototype.pointClass;\n\nvar TreemapPoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, TreemapPoint_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Class\n *\n * */\nvar TreemapPoint = /** @class */ (function (_super) {\n    __extends(TreemapPoint, _super);\n    function TreemapPoint() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        var _this = _super !== null && _super.apply(this,\n            arguments) || this;\n        _this.groupedPointsAmount = 0;\n        _this.shapeType = 'rect';\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    TreemapPoint.prototype.draw = function (params) {\n        Series_DrawPointUtilities.draw(this, params);\n    };\n    TreemapPoint.prototype.getClassName = function () {\n        var series = this.series,\n            options = series.options;\n        var className = _super.prototype.getClassName.call(this);\n        // Above the current level\n        if (this.node.level <= series.nodeMap[series.rootNode].level &&\n            this.node.children.length) {\n            className += ' highcharts-above-level';\n        }\n        else if (!this.node.isGroup &&\n            !this.node.isLeaf &&\n            !series.nodeMap[series.rootNode].isGroup &&\n            !TreemapPoint_pick(options.interactByLeaf, !options.allowTraversingTree)) {\n            className += ' highcharts-internal-node-interactive';\n        }\n        else if (!this.node.isGroup &&\n            !this.node.isLeaf &&\n            !series.nodeMap[series.rootNode].isGroup) {\n            className += ' highcharts-internal-node';\n        }\n        return className;\n    };\n    /**\n     * A tree point is valid if it has han id too, assume it may be a parent\n     * item.\n     *\n     * @private\n     * @function Highcharts.Point#isValid\n     */\n    TreemapPoint.prototype.isValid = function () {\n        return Boolean(this.id || isNumber(this.value));\n    };\n    TreemapPoint.prototype.setState = function (state) {\n        _super.prototype.setState.apply(this, arguments);\n        // Graphic does not exist when point is not visible.\n        if (this.graphic) {\n            this.graphic.attr({\n                zIndex: state === 'hover' ? 1 : 0\n            });\n        }\n    };\n    TreemapPoint.prototype.shouldDraw = function () {\n        return isNumber(this.plotY) && this.y !== null;\n    };\n    return TreemapPoint;\n}(ScatterPoint));\nTreemapPoint_extend(TreemapPoint.prototype, {\n    setVisible: PiePoint.prototype.setVisible\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Treemap_TreemapPoint = (TreemapPoint);\n\n;// ./code/es5/es-modules/Series/Treemap/TreemapSeriesDefaults.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar TreemapSeriesDefaults_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString;\n/* *\n *\n *  API Options\n *\n * */\n/**\n * A treemap displays hierarchical data using nested rectangles. The data\n * can be laid out in varying ways depending on options.\n *\n * @sample highcharts/demo/treemap-large-dataset/\n *         Treemap\n *\n * @extends      plotOptions.scatter\n * @excluding    connectEnds, connectNulls, dataSorting, dragDrop, jitter, marker\n * @product      highcharts\n * @requires     modules/treemap\n * @optionparent plotOptions.treemap\n */\nvar TreemapSeriesDefaults = {\n    /**\n     * When enabled the user can click on a point which is a parent and\n     * zoom in on its children. Deprecated and replaced by\n     * [allowTraversingTree](#plotOptions.treemap.allowTraversingTree).\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-allowdrilltonode/\n     *         Enabled\n     *\n     * @deprecated\n     * @type      {boolean}\n     * @default   false\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.allowDrillToNode\n     */\n    /**\n     * When enabled the user can click on a point which is a parent and\n     * zoom in on its children.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-allowtraversingtree/\n     *         Enabled\n     * @sample {highcharts} highcharts/plotoptions/treemap-grouping-traversing/\n     *         Traversing to Grouped Points node\n     *\n     * @since     7.0.3\n     * @product   highcharts\n     */\n    allowTraversingTree: false,\n    animationLimit: 250,\n    /**\n     * The border radius for each treemap item.\n     */\n    borderRadius: 0,\n    /**\n     * Options for the breadcrumbs, the navigation at the top leading the\n     * way up through the traversed levels.\n     *\n     *\n     * @since 10.0.0\n     * @product   highcharts\n     * @extends   navigation.breadcrumbs\n     * @apioption plotOptions.treemap.breadcrumbs\n     */\n    /**\n     * When the series contains less points than the crop threshold, all\n     * points are drawn, event if the points fall outside the visible plot\n     * area at the current zoom. The advantage of drawing all points\n     * (including markers and columns), is that animation is performed on\n     * updates. On the other hand, when the series contains more points than\n     * the crop threshold, the series data is cropped to only contain points\n     * that fall within the plot area. The advantage of cropping away\n     * invisible points is to increase performance on large series.\n     *\n     * @type      {number}\n     * @default   300\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.cropThreshold\n     */\n    /**\n     * Fires on a request for change of root node for the tree, before the\n     * update is made. An event object is passed to the function, containing\n     * additional properties `newRootId`, `previousRootId`, `redraw` and\n     * `trigger`.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-events-setrootnode/\n     *         Alert update information on setRootNode event.\n     *\n     * @type {Function}\n     * @default undefined\n     * @since 7.0.3\n     * @product highcharts\n     * @apioption plotOptions.treemap.events.setRootNode\n     */\n    /**\n     * This option decides if the user can interact with the parent nodes\n     * or just the leaf nodes. When this option is undefined, it will be\n     * true by default. However when allowTraversingTree is true, then it\n     * will be false by default.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-interactbyleaf-false/\n     *         False\n     * @sample {highcharts} highcharts/plotoptions/treemap-interactbyleaf-true-and-allowtraversingtree/\n     *         InteractByLeaf and allowTraversingTree is true\n     *\n     * @type      {boolean}\n     * @since     4.1.2\n     * @product   highcharts\n     * @apioption plotOptions.treemap.interactByLeaf\n     */\n    /**\n     * The sort index of the point inside the treemap level.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-sortindex/\n     *         Sort by years\n     *\n     * @type      {number}\n     * @since     4.1.10\n     * @product   highcharts\n     * @apioption plotOptions.treemap.sortIndex\n     */\n    /**\n     * A series specific or series type specific color set to apply instead\n     * of the global [colors](#colors) when\n     * [colorByPoint](#plotOptions.treemap.colorByPoint) is true.\n     *\n     * @type      {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n     * @since     3.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.colors\n     */\n    /**\n     * Whether to display this series type or specific series item in the\n     * legend.\n     */\n    showInLegend: false,\n    /**\n     * @ignore-option\n     */\n    marker: void 0,\n    /**\n     * When using automatic point colors pulled from the `options.colors`\n     * collection, this option determines whether the chart should receive\n     * one color per series or one color per point.\n     *\n     * @see [series colors](#plotOptions.treemap.colors)\n     *\n     * @since     2.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.colorByPoint\n     */\n    colorByPoint: false,\n    /**\n     * @since 4.1.0\n     */\n    dataLabels: {\n        defer: false,\n        enabled: true,\n        formatter: function () {\n            var point = this && this.point ?\n                    this.point :\n                    {},\n                name = TreemapSeriesDefaults_isString(point.name) ? point.name : '';\n            return name;\n        },\n        inside: true,\n        padding: 2,\n        verticalAlign: 'middle',\n        style: {\n            textOverflow: 'ellipsis'\n        }\n    },\n    tooltip: {\n        headerFormat: '',\n        pointFormat: '<b>{point.name}</b>: {point.value}<br/>',\n        /**\n         * The HTML of the grouped point's nodes in the tooltip. Works only for\n         * Treemap series grouping and analogously to\n         * [pointFormat](#tooltip.pointFormat).\n         *\n         * The grouped nodes point tooltip can be also formatted using\n         * `tooltip.formatter` callback function and `point.isGroupNode` flag.\n         *\n         * @type      {string}\n         * @default   '+ {point.groupedPointsAmount} more...'\n         * @apioption tooltip.clusterFormat\n         */\n        clusterFormat: '+ {point.groupedPointsAmount} more...<br/>'\n    },\n    /**\n     * Whether to ignore hidden points when the layout algorithm runs.\n     * If `false`, hidden points will leave open spaces.\n     *\n     * @since 5.0.8\n     */\n    ignoreHiddenPoint: true,\n    /**\n     * This option decides which algorithm is used for setting position\n     * and dimensions of the points.\n     *\n     * @see [How to write your own algorithm](https://www.highcharts.com/docs/chart-and-series-types/treemap)\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-sliceanddice/\n     *         SliceAndDice by default\n     * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-stripes/\n     *         Stripes\n     * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-squarified/\n     *         Squarified\n     * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-strip/\n     *         Strip\n     *\n     * @since      4.1.0\n     * @validvalue [\"sliceAndDice\", \"stripes\", \"squarified\", \"strip\"]\n     */\n    layoutAlgorithm: 'sliceAndDice',\n    /**\n     * Defines which direction the layout algorithm will start drawing.\n     *\n     * @since       4.1.0\n     * @validvalue [\"vertical\", \"horizontal\"]\n     */\n    layoutStartingDirection: 'vertical',\n    /**\n     * Enabling this option will make the treemap alternate the drawing\n     * direction between vertical and horizontal. The next levels starting\n     * direction will always be the opposite of the previous.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-alternatestartingdirection-true/\n     *         Enabled\n     *\n     * @since 4.1.0\n     */\n    alternateStartingDirection: false,\n    /**\n     * Used together with the levels and allowTraversingTree options. When\n     * set to false the first level visible to be level one, which is\n     * dynamic when traversing the tree. Otherwise the level will be the\n     * same as the tree structure.\n     *\n     * @since 4.1.0\n     */\n    levelIsConstant: true,\n    /**\n     * Options for the button appearing when traversing down in a treemap.\n     *\n     * Since v9.3.3 the `traverseUpButton` is replaced by `breadcrumbs`.\n     *\n     * @deprecated\n     */\n    traverseUpButton: {\n        /**\n         * The position of the button.\n         */\n        position: {\n            /**\n             * Vertical alignment of the button.\n             *\n             * @type      {Highcharts.VerticalAlignValue}\n             * @default   top\n             * @product   highcharts\n             * @apioption plotOptions.treemap.traverseUpButton.position.verticalAlign\n             */\n            /**\n             * Horizontal alignment of the button.\n             *\n             * @type {Highcharts.AlignValue}\n             */\n            align: 'right',\n            /**\n             * Horizontal offset of the button.\n             */\n            x: -10,\n            /**\n             * Vertical offset of the button.\n             */\n            y: 10\n        }\n    },\n    /**\n     * Set options on specific levels. Takes precedence over series options,\n     * but not point options.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-levels/\n     *         Styling dataLabels and borders\n     * @sample {highcharts} highcharts/demo/treemap-with-levels/\n     *         Different layoutAlgorithm\n     *\n     * @type      {Array<*>}\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels\n     */\n    /**\n     * Can set a `borderColor` on all points which lies on the same level.\n     *\n     * @type      {Highcharts.ColorString}\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.borderColor\n     */\n    /**\n     * Set the dash style of the border of all the point which lies on the\n     * level. See\n     * [plotOptions.scatter.dashStyle](#plotoptions.scatter.dashstyle)\n     * for possible options.\n     *\n     * @type      {Highcharts.DashStyleValue}\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.borderDashStyle\n     */\n    /**\n     * Can set the borderWidth on all points which lies on the same level.\n     *\n     * @type      {number}\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.borderWidth\n     */\n    /**\n     * Can set a color on all points which lies on the same level.\n     *\n     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.color\n     */\n    /**\n     * A configuration object to define how the color of a child varies from\n     * the parent's color. The variation is distributed among the children\n     * of node. For example when setting brightness, the brightness change\n     * will range from the parent's original brightness on the first child,\n     * to the amount set in the `to` setting on the last node. This allows a\n     * gradient-like color scheme that sets children out from each other\n     * while highlighting the grouping on treemaps and sectors on sunburst\n     * charts.\n     *\n     * @sample highcharts/demo/sunburst/\n     *         Sunburst with color variation\n     *\n     * @sample highcharts/series-treegraph/color-variation\n     *         Treegraph nodes with color variation\n     *\n     * @since     6.0.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.colorVariation\n     */\n    /**\n     * The key of a color variation. Currently supports `brightness` only.\n     *\n     * @type       {string}\n     * @since      6.0.0\n     * @product    highcharts\n     * @validvalue [\"brightness\"]\n     * @apioption  plotOptions.treemap.levels.colorVariation.key\n     */\n    /**\n     * The ending value of a color variation. The last sibling will receive\n     * this value.\n     *\n     * @type      {number}\n     * @since     6.0.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.colorVariation.to\n     */\n    /**\n     * Can set the options of dataLabels on each point which lies on the\n     * level.\n     * [plotOptions.treemap.dataLabels](#plotOptions.treemap.dataLabels) for\n     * possible values.\n     *\n     * @extends   plotOptions.treemap.dataLabels\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.dataLabels\n     */\n    /**\n     * Can set the layoutAlgorithm option on a specific level.\n     *\n     * @type       {string}\n     * @since      4.1.0\n     * @product    highcharts\n     * @validvalue [\"sliceAndDice\", \"stripes\", \"squarified\", \"strip\"]\n     * @apioption  plotOptions.treemap.levels.layoutAlgorithm\n     */\n    /**\n     * Can set the layoutStartingDirection option on a specific level.\n     *\n     * @type       {string}\n     * @since      4.1.0\n     * @product    highcharts\n     * @validvalue [\"vertical\", \"horizontal\"]\n     * @apioption  plotOptions.treemap.levels.layoutStartingDirection\n     */\n    /**\n     * Decides which level takes effect from the options set in the levels\n     * object.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-levels/\n     *         Styling of both levels\n     *\n     * @type      {number}\n     * @since     4.1.0\n     * @product   highcharts\n     * @apioption plotOptions.treemap.levels.level\n     */\n    // Presentational options\n    /**\n     * The color of the border surrounding each tree map item.\n     *\n     * @type {Highcharts.ColorString}\n     */\n    borderColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n    /**\n     * The width of the border surrounding each tree map item.\n     */\n    borderWidth: 1,\n    colorKey: 'colorValue',\n    /**\n     * The opacity of a point in treemap. When a point has children, the\n     * visibility of the children is determined by the opacity.\n     *\n     * @since 4.2.4\n     */\n    opacity: 0.15,\n    /**\n     * A wrapper object for all the series options in specific states.\n     *\n     * @extends plotOptions.heatmap.states\n     */\n    states: {\n        /**\n         * Options for the hovered series\n         *\n         * @extends   plotOptions.heatmap.states.hover\n         * @excluding halo\n         */\n        hover: {\n            /**\n             * The border color for the hovered state.\n             */\n            borderColor: \"#999999\" /* Palette.neutralColor40 */,\n            /**\n             * Brightness for the hovered point. Defaults to 0 if the\n             * heatmap series is loaded first, otherwise 0.1.\n             *\n             * @type    {number}\n             * @default undefined\n             */\n            brightness: (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.heatmap ? 0 : 0.1,\n            /**\n             * @extends plotOptions.heatmap.states.hover.halo\n             */\n            halo: false,\n            /**\n             * The opacity of a point in treemap. When a point has children,\n             * the visibility of the children is determined by the opacity.\n             *\n             * @since 4.2.4\n             */\n            opacity: 0.75,\n            /**\n             * The shadow option for hovered state.\n             */\n            shadow: false\n        }\n    },\n    legendSymbol: 'rectangle',\n    /**\n     * This option enables automatic traversing to the last child level upon\n     * node interaction. This feature simplifies navigation by immediately\n     * focusing on the deepest layer of the data structure without intermediate\n     * steps.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-traverse-to-leaf/\n     *         Traverse to leaf enabled\n     *\n     * @since   11.4.4\n     *\n     * @product highcharts\n     */\n    traverseToLeaf: false,\n    /**\n     * An option to optimize treemap series rendering by grouping smaller leaf\n     * nodes below a certain square area threshold in pixels. If the square area\n     * of a point becomes smaller than the specified threshold, determined by\n     * the `pixelWidth` and/or `pixelHeight` options, then this point is moved\n     * into one group point per series.\n     *\n     * @sample {highcharts} highcharts/plotoptions/treemap-grouping-simple\n     *         Simple demo of Treemap grouping\n     * @sample {highcharts} highcharts/plotoptions/treemap-grouping-multiple-parents\n     *         Treemap grouping with multiple parents\n     * @sample {highcharts} highcharts/plotoptions/treemap-grouping-advanced\n     *         Advanced demo of Treemap grouping\n     *\n     * @since 12.1.0\n     *\n     * @excluding allowOverlap, animation, dataLabels, drillToCluster, events,\n     * layoutAlgorithm, marker, states, zones\n     *\n     * @product highcharts\n     */\n    cluster: {\n        /**\n         * An additional, individual class name for the grouped point's graphic\n         * representation.\n         *\n         * @type      string\n         * @product   highcharts\n         */\n        className: void 0,\n        /**\n         * Individual color for the grouped point. By default the color is\n         * pulled from the parent color.\n         *\n         * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         * @product   highcharts\n         */\n        color: void 0,\n        /**\n         * Enable or disable Treemap grouping.\n         *\n         * @type {boolean}\n         * @since 12.1.0\n         * @product highcharts\n         */\n        enabled: false,\n        /**\n         * The pixel threshold width of area, which is used in Treemap grouping.\n         *\n         * @type {number}\n         * @since 12.1.0\n         * @product highcharts\n         */\n        pixelWidth: void 0,\n        /**\n         * The pixel threshold height of area, which is used in Treemap\n         * grouping.\n         *\n         * @type {number}\n         * @since 12.1.0\n         * @product highcharts\n         */\n        pixelHeight: void 0,\n        /**\n         * The name of the point of grouped nodes shown in the tooltip,\n         * dataLabels, etc. By default it is set to '+ n', where n is number of\n         * grouped points.\n         *\n         * @type {string}\n         * @since 12.1.0\n         * @product highcharts\n         */\n        name: void 0,\n        /**\n         * A configuration property that specifies the factor by which the value\n         * and size of a grouped node are reduced. This can be particularly\n         * useful when a grouped node occupies a disproportionately large\n         * portion of the graph, ensuring better visual balance and readability.\n         *\n         * @type {number}\n         * @since 12.1.0\n         * @product highcharts\n         */\n        reductionFactor: void 0,\n        /**\n         * Defines the minimum number of child nodes required to create a group\n         * of small nodes.\n         *\n         * @type {number}\n         * @since 12.1.0\n         * @product highcharts\n         */\n        minimumClusterSize: 5,\n        layoutAlgorithm: {\n            distance: 0,\n            gridSize: 0,\n            kmeansThreshold: 0\n        },\n        marker: {\n            lineWidth: 0,\n            radius: 0\n        }\n    }\n};\n/**\n * A `treemap` series. If the [type](#series.treemap.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.treemap\n * @excluding dataParser, dataURL, stack, dataSorting\n * @product   highcharts\n * @requires  modules/treemap\n * @apioption series.treemap\n */\n/**\n * An array of data points for the series. For the `treemap` 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 `value` options. Example:\n *    ```js\n *    data: [0, 5, 3, 5]\n *    ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n *    few settings, see the complete options set below. If the total number of\n *    data points exceeds the series'\n *    [turboThreshold](#series.treemap.turboThreshold),\n *    this option is not available.\n *    ```js\n *      data: [{\n *        value: 9,\n *        name: \"Point2\",\n *        color: \"#00FF00\"\n *      }, {\n *        value: 6,\n *        name: \"Point1\",\n *        color: \"#FF00FF\"\n *      }]\n *    ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n *         Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n *         Config objects\n *\n * @type      {Array<number|null|*>}\n * @extends   series.heatmap.data\n * @excluding x, y, pointPadding\n * @product   highcharts\n * @apioption series.treemap.data\n */\n/**\n * The value of the point, resulting in a relative area of the point\n * in the treemap.\n *\n * @type      {number|null}\n * @product   highcharts\n * @apioption series.treemap.data.value\n */\n/**\n * Serves a purpose only if a `colorAxis` object is defined in the chart\n * options. This value will decide which color the point gets from the\n * scale of the colorAxis.\n *\n * @type      {number}\n * @since     4.1.0\n * @product   highcharts\n * @apioption series.treemap.data.colorValue\n */\n/**\n * Only for treemap. Use this option to build a tree structure. The\n * value should be the id of the point which is the parent. If no points\n * has a matching id, or this option is undefined, then the parent will\n * be set to the root.\n *\n * @sample {highcharts} highcharts/point/parent/\n *         Point parent\n * @sample {highcharts} highcharts/demo/treemap-with-levels/\n *         Example where parent id is not matching\n *\n * @type      {string}\n * @since     4.1.0\n * @product   highcharts\n * @apioption series.treemap.data.parent\n */\n''; // Keeps doclets above detached\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Treemap_TreemapSeriesDefaults = (TreemapSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/Treemap/TreemapUtilities.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Namespace\n *\n * */\nvar TreemapUtilities;\n(function (TreemapUtilities) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @todo find correct name for this function.\n     * @todo Similar to reduce, this function is likely redundant\n     */\n    function recursive(item, func, context) {\n        var next = func.call(context || this,\n            item);\n        if (next !== false) {\n            recursive(next, func, context);\n        }\n    }\n    TreemapUtilities.recursive = recursive;\n})(TreemapUtilities || (TreemapUtilities = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Treemap_TreemapUtilities = (TreemapUtilities);\n\n;// ./code/es5/es-modules/Series/TreeUtilities.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar TreeUtilities_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, TreeUtilities_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, TreeUtilities_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, TreeUtilities_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getColor(node, options) {\n    var index = options.index,\n        mapOptionsToLevel = options.mapOptionsToLevel,\n        parentColor = options.parentColor,\n        parentColorIndex = options.parentColorIndex,\n        series = options.series,\n        colors = options.colors,\n        siblings = options.siblings,\n        points = series.points,\n        chartOptionsChart = series.chart.options.chart;\n    var getColorByPoint,\n        point,\n        level,\n        colorByPoint,\n        colorIndexByPoint,\n        color,\n        colorIndex;\n    /**\n     * @private\n     */\n    var variateColor = function (color) {\n            var colorVariation = level && level.colorVariation;\n        if (colorVariation &&\n            colorVariation.key === 'brightness' &&\n            index &&\n            siblings) {\n            return highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(color).brighten(colorVariation.to * (index / siblings)).get();\n        }\n        return color;\n    };\n    if (node) {\n        point = points[node.i];\n        level = mapOptionsToLevel[node.level] || {};\n        getColorByPoint = point && level.colorByPoint;\n        if (getColorByPoint) {\n            colorIndexByPoint = point.index % (colors ?\n                colors.length :\n                chartOptionsChart.colorCount);\n            colorByPoint = colors && colors[colorIndexByPoint];\n        }\n        // Select either point color, level color or inherited color.\n        if (!series.chart.styledMode) {\n            color = TreeUtilities_pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);\n        }\n        colorIndex = TreeUtilities_pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);\n    }\n    return {\n        color: color,\n        colorIndex: colorIndex\n    };\n}\n/**\n * Creates a map from level number to its given options.\n *\n * @private\n *\n * @param {Object} params\n * Object containing parameters.\n * - `defaults` Object containing default options. The default options are\n *   merged with the userOptions to get the final options for a specific\n *   level.\n * - `from` The lowest level number.\n * - `levels` User options from series.levels.\n * - `to` The highest level number.\n *\n * @return {Highcharts.Dictionary<object>|null}\n * Returns a map from level number to its given options.\n */\nfunction getLevelOptions(params) {\n    var result = {};\n    var defaults,\n        converted,\n        i,\n        from,\n        to,\n        levels;\n    if (isObject(params)) {\n        from = TreeUtilities_isNumber(params.from) ? params.from : 1;\n        levels = params.levels;\n        converted = {};\n        defaults = isObject(params.defaults) ? params.defaults : {};\n        if (isArray(levels)) {\n            converted = levels.reduce(function (obj, item) {\n                var level,\n                    levelIsConstant,\n                    options;\n                if (isObject(item) && TreeUtilities_isNumber(item.level)) {\n                    options = TreeUtilities_merge({}, item);\n                    levelIsConstant = TreeUtilities_pick(options.levelIsConstant, defaults.levelIsConstant);\n                    // Delete redundant properties.\n                    delete options.levelIsConstant;\n                    delete options.level;\n                    // Calculate which level these options apply to.\n                    level = item.level + (levelIsConstant ? 0 : from - 1);\n                    if (isObject(obj[level])) {\n                        TreeUtilities_merge(true, obj[level], options); // #16329\n                    }\n                    else {\n                        obj[level] = options;\n                    }\n                }\n                return obj;\n            }, {});\n        }\n        to = TreeUtilities_isNumber(params.to) ? params.to : 1;\n        for (i = 0; i <= to; i++) {\n            result[i] = TreeUtilities_merge({}, defaults, isObject(converted[i]) ? converted[i] : {});\n        }\n    }\n    return result;\n}\n/**\n * @private\n * @todo Combine buildTree and buildNode with setTreeValues\n * @todo Remove logic from Treemap and make it utilize this mixin.\n */\nfunction setTreeValues(tree, options) {\n    var before = options.before,\n        idRoot = options.idRoot,\n        mapIdToNode = options.mapIdToNode,\n        nodeRoot = mapIdToNode[idRoot],\n        levelIsConstant = (options.levelIsConstant !== false),\n        points = options.points,\n        point = points[tree.i],\n        optionsPoint = point && point.options || {},\n        children = [];\n    var childrenTotal = 0;\n    tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);\n    tree.name = TreeUtilities_pick(point && point.name, '');\n    tree.visible = (idRoot === tree.id ||\n        options.visible === true);\n    if (typeof before === 'function') {\n        tree = before(tree, options);\n    }\n    // First give the children some values\n    tree.children.forEach(function (child, i) {\n        var newOptions = TreeUtilities_extend({},\n            options);\n        TreeUtilities_extend(newOptions, {\n            index: i,\n            siblings: tree.children.length,\n            visible: tree.visible\n        });\n        child = setTreeValues(child, newOptions);\n        children.push(child);\n        if (child.visible) {\n            childrenTotal += child.val;\n        }\n    });\n    // Set the values\n    var value = TreeUtilities_pick(optionsPoint.value,\n        childrenTotal);\n    tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);\n    tree.children = children;\n    tree.childrenTotal = childrenTotal;\n    tree.isLeaf = tree.visible && !childrenTotal;\n    tree.val = value;\n    return tree;\n}\n/**\n * Update the rootId property on the series. Also makes sure that it is\n * accessible to exporting.\n *\n * @private\n *\n * @param {Object} series\n * The series to operate on.\n *\n * @return {string}\n * Returns the resulting rootId after update.\n */\nfunction updateRootId(series) {\n    var rootId,\n        options;\n    if (isObject(series)) {\n        // Get the series options.\n        options = isObject(series.options) ? series.options : {};\n        // Calculate the rootId.\n        rootId = TreeUtilities_pick(series.rootNode, options.rootId, '');\n        // Set rootId on series.userOptions to pick it up in exporting.\n        if (isObject(series.userOptions)) {\n            series.userOptions.rootId = rootId;\n        }\n        // Set rootId on series to pick it up on next update.\n        series.rootNode = rootId;\n    }\n    return rootId;\n}\n/**\n * Get the node width, which relies on the plot width and the nodeDistance\n * option.\n *\n * @private\n */\nfunction getNodeWidth(series, columnCount) {\n    var chart = series.chart,\n        options = series.options,\n        _a = options.nodeDistance,\n        nodeDistance = _a === void 0 ? 0 : _a,\n        _b = options.nodeWidth,\n        nodeWidth = _b === void 0 ? 0 : _b,\n        _c = chart.plotSizeX,\n        plotSizeX = _c === void 0 ? 1 : _c;\n    // Node width auto means they are evenly distributed along the width of\n    // the plot area\n    if (nodeWidth === 'auto') {\n        if (typeof nodeDistance === 'string' && /%$/.test(nodeDistance)) {\n            var fraction = parseFloat(nodeDistance) / 100,\n                total = columnCount + fraction * (columnCount - 1);\n            return plotSizeX / total;\n        }\n        var nDistance = Number(nodeDistance);\n        return ((plotSizeX + nDistance) /\n            (columnCount || 1)) - nDistance;\n    }\n    return relativeLength(nodeWidth, plotSizeX);\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar TreeUtilities = {\n    getColor: getColor,\n    getLevelOptions: getLevelOptions,\n    getNodeWidth: getNodeWidth,\n    setTreeValues: setTreeValues,\n    updateRootId: updateRootId\n};\n/* harmony default export */ var Series_TreeUtilities = (TreeUtilities);\n\n;// ./code/es5/es-modules/Series/Treemap/TreemapSeries.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar TreemapSeries_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 color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\n\nvar TreemapSeries_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed, noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\nvar TreemapSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, ColumnSeries = TreemapSeries_a.column, ScatterSeries = TreemapSeries_a.scatter;\n\n\n\n\n\n\nvar TreemapSeries_getColor = Series_TreeUtilities.getColor, TreemapSeries_getLevelOptions = Series_TreeUtilities.getLevelOptions, TreemapSeries_updateRootId = Series_TreeUtilities.updateRootId;\n\nvar TreemapSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, TreemapSeries_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, TreemapSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, TreemapSeries_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, TreemapSeries_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, TreemapSeries_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, TreemapSeries_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, TreemapSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, TreemapSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, TreemapSeries_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat, stableSort = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).stableSort;\n/* *\n *\n *  Constants\n *\n * */\nvar axisMax = 100;\n/* *\n *\n *  Variables\n *\n * */\nvar treemapAxisDefaultValues = false;\n/* *\n *\n *  Functions\n *\n * */\n/** @private */\nfunction onSeriesAfterBindAxes() {\n    var series = this,\n        xAxis = series.xAxis,\n        yAxis = series.yAxis;\n    var treeAxis;\n    if (xAxis && yAxis) {\n        if (series.is('treemap')) {\n            treeAxis = {\n                endOnTick: false,\n                gridLineWidth: 0,\n                lineWidth: 0,\n                min: 0,\n                minPadding: 0,\n                max: axisMax,\n                maxPadding: 0,\n                startOnTick: false,\n                title: void 0,\n                tickPositions: []\n            };\n            TreemapSeries_extend(yAxis.options, treeAxis);\n            TreemapSeries_extend(xAxis.options, treeAxis);\n            treemapAxisDefaultValues = true;\n        }\n        else if (treemapAxisDefaultValues) {\n            yAxis.setOptions(yAxis.userOptions);\n            xAxis.setOptions(xAxis.userOptions);\n            treemapAxisDefaultValues = false;\n        }\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.treemap\n *\n * @augments Highcharts.Series\n */\nvar TreemapSeries = /** @class */ (function (_super) {\n    TreemapSeries_extends(TreemapSeries, _super);\n    function TreemapSeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    TreemapSeries.compose = function (SeriesClass) {\n        if (TreemapSeries_pushUnique(TreemapSeries_composed, 'TreemapSeries')) {\n            TreemapSeries_addEvent(SeriesClass, 'afterBindAxes', onSeriesAfterBindAxes);\n        }\n    };\n    /* *\n     *\n     *  Function\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    TreemapSeries.prototype.algorithmCalcPoints = function (directionChange, last, group, childrenArea) {\n        var plot = group.plot,\n            end = group.elArr.length - 1;\n        var pX,\n            pY,\n            pW,\n            pH,\n            gW = group.lW,\n            gH = group.lH,\n            keep,\n            i = 0;\n        if (last) {\n            gW = group.nW;\n            gH = group.nH;\n        }\n        else {\n            keep = group.elArr[end];\n        }\n        for (var _i = 0, _a = group.elArr; _i < _a.length; _i++) {\n            var p = _a[_i];\n            if (last || (i < end)) {\n                if (group.direction === 0) {\n                    pX = plot.x;\n                    pY = plot.y;\n                    pW = gW;\n                    pH = p / pW;\n                }\n                else {\n                    pX = plot.x;\n                    pY = plot.y;\n                    pH = gH;\n                    pW = p / pH;\n                }\n                childrenArea.push({\n                    x: pX,\n                    y: pY,\n                    width: pW,\n                    height: correctFloat(pH)\n                });\n                if (group.direction === 0) {\n                    plot.y = plot.y + pH;\n                }\n                else {\n                    plot.x = plot.x + pW;\n                }\n            }\n            i = i + 1;\n        }\n        // Reset variables\n        group.reset();\n        if (group.direction === 0) {\n            group.width = group.width - gW;\n        }\n        else {\n            group.height = group.height - gH;\n        }\n        plot.y = plot.parent.y + (plot.parent.height - group.height);\n        plot.x = plot.parent.x + (plot.parent.width - group.width);\n        if (directionChange) {\n            group.direction = 1 - group.direction;\n        }\n        // If not last, then add uncalculated element\n        if (!last) {\n            group.addElement(keep);\n        }\n    };\n    TreemapSeries.prototype.algorithmFill = function (directionChange, parent, children) {\n        var childrenArea = [];\n        var pTot,\n            direction = parent.direction,\n            x = parent.x,\n            y = parent.y,\n            width = parent.width,\n            height = parent.height,\n            pX,\n            pY,\n            pW,\n            pH;\n        for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n            var child = children_1[_i];\n            pTot =\n                (parent.width * parent.height) * (child.val / parent.val);\n            pX = x;\n            pY = y;\n            if (direction === 0) {\n                pH = height;\n                pW = pTot / pH;\n                width = width - pW;\n                x = x + pW;\n            }\n            else {\n                pW = width;\n                pH = pTot / pW;\n                height = height - pH;\n                y = y + pH;\n            }\n            childrenArea.push({\n                x: pX,\n                y: pY,\n                width: pW,\n                height: pH,\n                direction: 0,\n                val: 0\n            });\n            if (directionChange) {\n                direction = 1 - direction;\n            }\n        }\n        return childrenArea;\n    };\n    TreemapSeries.prototype.algorithmLowAspectRatio = function (directionChange, parent, children) {\n        var series = this,\n            childrenArea = [],\n            plot = {\n                x: parent.x,\n                y: parent.y,\n                parent: parent\n            },\n            direction = parent.direction,\n            end = children.length - 1,\n            group = new Treemap_TreemapAlgorithmGroup(parent.height,\n            parent.width,\n            direction,\n            plot);\n        var pTot,\n            i = 0;\n        // Loop through and calculate all areas\n        for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {\n            var child = children_2[_i];\n            pTot =\n                (parent.width * parent.height) * (child.val / parent.val);\n            group.addElement(pTot);\n            if (group.lP.nR > group.lP.lR) {\n                series.algorithmCalcPoints(directionChange, false, group, childrenArea, plot // @todo no supported\n                );\n            }\n            // If last child, then calculate all remaining areas\n            if (i === end) {\n                series.algorithmCalcPoints(directionChange, true, group, childrenArea, plot // @todo not supported\n                );\n            }\n            ++i;\n        }\n        return childrenArea;\n    };\n    /**\n     * Over the alignment method by setting z index.\n     * @private\n     */\n    TreemapSeries.prototype.alignDataLabel = function (point, \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    dataLabel, \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    labelOptions) {\n        ColumnSeries.prototype.alignDataLabel.apply(this, arguments);\n        if (point.dataLabel) {\n            // `point.node.zIndex` could be undefined (#6956)\n            point.dataLabel.attr({ zIndex: (point.node.zIndex || 0) + 1 });\n        }\n    };\n    TreemapSeries.prototype.applyTreeGrouping = function () {\n        var series = this,\n            parentList = series.parentList || {},\n            cluster = series.options.cluster,\n            minimumClusterSize = (cluster === null || cluster === void 0 ? void 0 : cluster.minimumClusterSize) || 5;\n        if (cluster === null || cluster === void 0 ? void 0 : cluster.enabled) {\n            var parentGroups_1 = {};\n            var checkIfHide_1 = function (node) {\n                    var _a;\n                if ((_a = node === null || node === void 0 ? void 0 : node.point) === null || _a === void 0 ? void 0 : _a.shapeArgs) {\n                    var _b = node.point.shapeArgs,\n                        _c = _b.width,\n                        width = _c === void 0 ? 0 : _c,\n                        _d = _b.height,\n                        height = _d === void 0 ? 0 : _d,\n                        area = width * height;\n                    var _e = cluster.pixelWidth,\n                        pixelWidth = _e === void 0 ? 0 : _e,\n                        _f = cluster.pixelHeight,\n                        pixelHeight = _f === void 0 ? 0 : _f,\n                        compareHeight = TreemapSeries_defined(pixelHeight),\n                        thresholdArea = pixelHeight ?\n                            pixelWidth * pixelHeight :\n                            pixelWidth * pixelWidth;\n                    if (width < pixelWidth ||\n                        height < (compareHeight ? pixelHeight : pixelWidth) ||\n                        area < thresholdArea) {\n                        if (!node.isGroup && TreemapSeries_defined(node.parent)) {\n                            if (!parentGroups_1[node.parent]) {\n                                parentGroups_1[node.parent] = [];\n                            }\n                            parentGroups_1[node.parent].push(node);\n                        }\n                    }\n                }\n                node === null || node === void 0 ? void 0 : node.children.forEach(function (child) {\n                    checkIfHide_1(child);\n                });\n            };\n            checkIfHide_1(series.tree);\n            var _loop_1 = function (parent_1) {\n                    if (parentGroups_1[parent_1]) {\n                        if (parentGroups_1[parent_1].length > minimumClusterSize) {\n                            parentGroups_1[parent_1].forEach(function (node) {\n                                var index = parentList[parent_1].indexOf(node.i);\n                            if (index !== -1) {\n                                parentList[parent_1].splice(index, 1);\n                                var id_1 = \"highcharts-grouped-treemap-points-\".concat(node.parent || 'root');\n                                var groupPoint = series.points\n                                        .find(function (p) { return p.id === id_1; });\n                                if (!groupPoint) {\n                                    var PointClass = series.pointClass,\n                                        pointIndex = series.points.length;\n                                    groupPoint = new PointClass(series, {\n                                        className: cluster.className,\n                                        color: cluster.color,\n                                        id: id_1,\n                                        index: pointIndex,\n                                        isGroup: true,\n                                        value: 0\n                                    });\n                                    TreemapSeries_extend(groupPoint, {\n                                        formatPrefix: 'cluster'\n                                    });\n                                    series.points.push(groupPoint);\n                                    parentList[parent_1].push(pointIndex);\n                                    parentList[id_1] = [];\n                                }\n                                var amount = groupPoint.groupedPointsAmount + 1,\n                                    val = series.points[groupPoint.index]\n                                        .options.value || 0,\n                                    name_1 = cluster.name ||\n                                        \"+ \".concat(amount);\n                                // Update the point directly in points array to\n                                // prevent wrong instance update\n                                series.points[groupPoint.index]\n                                    .groupedPointsAmount = amount;\n                                series.points[groupPoint.index].options.value =\n                                    val + (node.point.value || 0);\n                                series.points[groupPoint.index].name = name_1;\n                                parentList[id_1].push(node.point.index);\n                            }\n                        });\n                    }\n                }\n            };\n            for (var parent_1 in parentGroups_1) {\n                _loop_1(parent_1);\n            }\n            series.nodeMap = {};\n            series.nodeList = [];\n            series.parentList = parentList;\n            var tree = series.buildTree('', -1, 0,\n                series.parentList);\n            series.translate(tree);\n        }\n    };\n    /**\n     * Recursive function which calculates the area for all children of a\n     * node.\n     *\n     * @private\n     * @function Highcharts.Series#calculateChildrenAreas\n     *\n     * @param {Object} parent\n     * The node which is parent to the children.\n     *\n     * @param {Object} area\n     * The rectangular area of the parent.\n     */\n    TreemapSeries.prototype.calculateChildrenAreas = function (parent, area) {\n        var series = this,\n            options = series.options,\n            mapOptionsToLevel = series.mapOptionsToLevel,\n            level = mapOptionsToLevel[parent.level + 1],\n            algorithm = TreemapSeries_pick(((level === null || level === void 0 ? void 0 : level.layoutAlgorithm) &&\n                series[level === null || level === void 0 ? void 0 : level.layoutAlgorithm] &&\n                level.layoutAlgorithm),\n            series.options.layoutAlgorithm),\n            alternate = options.alternateStartingDirection, \n            // Collect all children which should be included\n            children = parent.children.filter(function (n) {\n                return parent.isGroup || !n.ignore;\n        });\n        if (!algorithm) {\n            return;\n        }\n        var childrenValues = [];\n        if (level && level.layoutStartingDirection) {\n            area.direction = level.layoutStartingDirection === 'vertical' ?\n                0 :\n                1;\n        }\n        childrenValues = series[algorithm](area, children);\n        var i = -1;\n        for (var _i = 0, children_3 = children; _i < children_3.length; _i++) {\n            var child = children_3[_i];\n            var values = childrenValues[++i];\n            child.values = TreemapSeries_merge(values, {\n                val: child.childrenTotal,\n                direction: (alternate ? 1 - area.direction : area.direction)\n            });\n            child.pointValues = TreemapSeries_merge(values, {\n                x: (values.x / series.axisRatio),\n                // Flip y-values to avoid visual regression with csvCoord in\n                // Axis.translate at setPointValues. #12488\n                y: axisMax - values.y - values.height,\n                width: (values.width / series.axisRatio)\n            });\n            // If node has children, then call method recursively\n            if (child.children.length) {\n                series.calculateChildrenAreas(child, child.values);\n            }\n        }\n    };\n    /**\n     * Create level list.\n     * @private\n     */\n    TreemapSeries.prototype.createList = function (e) {\n        var chart = this.chart,\n            breadcrumbs = chart.breadcrumbs,\n            list = [];\n        if (breadcrumbs) {\n            var currentLevelNumber = 0;\n            list.push({\n                level: currentLevelNumber,\n                levelOptions: chart.series[0]\n            });\n            var node = e.target.nodeMap[e.newRootId];\n            var extraNodes = [];\n            // When the root node is set and has parent,\n            // recreate the path from the node tree.\n            while (node.parent || node.parent === '') {\n                extraNodes.push(node);\n                node = e.target.nodeMap[node.parent];\n            }\n            for (var _i = 0, _a = extraNodes.reverse(); _i < _a.length; _i++) {\n                var node_1 = _a[_i];\n                list.push({\n                    level: ++currentLevelNumber,\n                    levelOptions: node_1\n                });\n            }\n            // If the list has only first element, we should clear it\n            if (list.length <= 1) {\n                list.length = 0;\n            }\n        }\n        return list;\n    };\n    /**\n     * Extend drawDataLabels with logic to handle custom options related to\n     * the treemap series:\n     *\n     * - Points which is not a leaf node, has dataLabels disabled by\n     *   default.\n     *\n     * - Options set on series.levels is merged in.\n     *\n     * - Width of the dataLabel is set to match the width of the point\n     *   shape.\n     *\n     * @private\n     */\n    TreemapSeries.prototype.drawDataLabels = function () {\n        var _a,\n            _b;\n        var series = this,\n            mapOptionsToLevel = series.mapOptionsToLevel,\n            points = series.points.filter(function (n) {\n                return n.node.visible || TreemapSeries_defined(n.dataLabel);\n        }), padding = (_a = splat(series.options.dataLabels || {})[0]) === null || _a === void 0 ? void 0 : _a.padding;\n        var options,\n            level;\n        for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n            var point = points_1[_i];\n            level = mapOptionsToLevel[point.node.level];\n            // Set options to new object to avoid problems with scope\n            options = { style: {} };\n            // If not a leaf, then label should be disabled as default\n            if (!point.node.isLeaf &&\n                !point.node.isGroup ||\n                (point.node.isGroup &&\n                    point.node.level <= series.nodeMap[series.rootNode].level)) {\n                options.enabled = false;\n            }\n            // If options for level exists, include them as well\n            if (level && level.dataLabels) {\n                options = TreemapSeries_merge(options, level.dataLabels);\n                series.hasDataLabels = function () { return true; };\n            }\n            // Set dataLabel width to the width of the point shape minus the\n            // padding\n            if (point.shapeArgs) {\n                var css = {\n                        width: ((point.shapeArgs.width || 0) -\n                            2 * (options.padding || padding || 0)) + 'px',\n                        lineClamp: Math.floor((point.shapeArgs.height || 0) / 16)\n                    };\n                TreemapSeries_extend(options.style, css);\n                (_b = point.dataLabel) === null || _b === void 0 ? void 0 : _b.css(css);\n            }\n            // Merge custom options with point options\n            point.dlOptions = TreemapSeries_merge(options, point.options.dataLabels);\n        }\n        _super.prototype.drawDataLabels.call(this, points);\n    };\n    /**\n     * Override drawPoints\n     * @private\n     */\n    TreemapSeries.prototype.drawPoints = function (points) {\n        if (points === void 0) { points = this.points; }\n        var series = this,\n            chart = series.chart,\n            renderer = chart.renderer,\n            styledMode = chart.styledMode,\n            options = series.options,\n            shadow = styledMode ? {} : options.shadow,\n            borderRadius = options.borderRadius,\n            withinAnimationLimit = chart.pointCount < options.animationLimit,\n            allowTraversingTree = options.allowTraversingTree;\n        for (var _i = 0, points_2 = points; _i < points_2.length; _i++) {\n            var point = points_2[_i];\n            var levelDynamic = point.node.levelDynamic,\n                animatableAttribs = {},\n                attribs = {},\n                css = {},\n                groupKey = 'level-group-' + point.node.level,\n                hasGraphic = !!point.graphic,\n                shouldAnimate = withinAnimationLimit && hasGraphic,\n                shapeArgs = point.shapeArgs;\n            // Don't bother with calculate styling if the point is not drawn\n            if (point.shouldDraw()) {\n                point.isInside = true;\n                if (borderRadius) {\n                    attribs.r = borderRadius;\n                }\n                TreemapSeries_merge(true, // Extend object\n                // Which object to extend\n                shouldAnimate ? animatableAttribs : attribs, \n                // Add shapeArgs to animate/attr if graphic exists\n                hasGraphic ? shapeArgs : {}, \n                // Add style attribs if !styleMode\n                styledMode ?\n                    {} :\n                    series.pointAttribs(point, point.selected ? 'select' : void 0));\n                // In styled mode apply point.color. Use CSS, otherwise the\n                // fill used in the style sheet will take precedence over\n                // the fill attribute.\n                if (series.colorAttribs && styledMode) {\n                    // Heatmap is loaded\n                    TreemapSeries_extend(css, series.colorAttribs(point));\n                }\n                if (!series[groupKey]) {\n                    series[groupKey] = renderer.g(groupKey)\n                        .attr({\n                        // @todo Set the zIndex based upon the number of\n                        // levels, instead of using 1000\n                        zIndex: 1000 - (levelDynamic || 0)\n                    })\n                        .add(series.group);\n                    series[groupKey].survive = true;\n                }\n            }\n            // Draw the point\n            point.draw({\n                animatableAttribs: animatableAttribs,\n                attribs: attribs,\n                css: css,\n                group: series[groupKey],\n                imageUrl: point.imageUrl,\n                renderer: renderer,\n                shadow: shadow,\n                shapeArgs: shapeArgs,\n                shapeType: point.shapeType\n            });\n            // If setRootNode is allowed, set a point cursor on clickables &\n            // add drillId to point\n            if (allowTraversingTree && point.graphic) {\n                point.drillId = options.interactByLeaf ?\n                    series.drillToByLeaf(point) :\n                    series.drillToByGroup(point);\n            }\n        }\n    };\n    /**\n     * Finds the drill id for a parent node. Returns false if point should\n     * not have a click event.\n     * @private\n     */\n    TreemapSeries.prototype.drillToByGroup = function (point) {\n        var drillId = false;\n        if ((!point.node.isLeaf ||\n            point.node.isGroup) &&\n            (point.node.level - this.nodeMap[this.rootNode].level) === 1) {\n            drillId = point.id;\n        }\n        return drillId;\n    };\n    /**\n     * Finds the drill id for a leaf node. Returns false if point should not\n     * have a click event\n     * @private\n     */\n    TreemapSeries.prototype.drillToByLeaf = function (point) {\n        var traverseToLeaf = point.series.options.traverseToLeaf;\n        var drillId = false,\n            nodeParent;\n        if ((point.node.parent !== this.rootNode) &&\n            point.node.isLeaf) {\n            if (traverseToLeaf) {\n                drillId = point.id;\n            }\n            else {\n                nodeParent = point.node;\n                while (!drillId) {\n                    if (typeof nodeParent.parent !== 'undefined') {\n                        nodeParent = this.nodeMap[nodeParent.parent];\n                    }\n                    if (nodeParent.parent === this.rootNode) {\n                        drillId = nodeParent.id;\n                    }\n                }\n            }\n        }\n        return drillId;\n    };\n    /**\n     * @todo remove this function at a suitable version.\n     * @private\n     */\n    TreemapSeries.prototype.drillToNode = function (id, redraw) {\n        error(32, false, void 0, { 'treemap.drillToNode': 'use treemap.setRootNode' });\n        this.setRootNode(id, redraw);\n    };\n    TreemapSeries.prototype.drillUp = function () {\n        var series = this,\n            node = series.nodeMap[series.rootNode];\n        if (node && TreemapSeries_isString(node.parent)) {\n            series.setRootNode(node.parent, true, { trigger: 'traverseUpButton' });\n        }\n    };\n    TreemapSeries.prototype.getExtremes = function () {\n        // Get the extremes from the value data\n        var _a = _super.prototype.getExtremes.call(this,\n            this.colorValueData),\n            dataMin = _a.dataMin,\n            dataMax = _a.dataMax;\n        this.valueMin = dataMin;\n        this.valueMax = dataMax;\n        // Get the extremes from the y data\n        return _super.prototype.getExtremes.call(this);\n    };\n    /**\n     * Creates an object map from parent id to childrens index.\n     *\n     * @private\n     * @function Highcharts.Series#getListOfParents\n     *\n     * @param {Highcharts.SeriesTreemapDataOptions} [data]\n     *        List of points set in options.\n     *\n     * @param {Array<string>} [existingIds]\n     *        List of all point ids.\n     *\n     * @return {Object}\n     *         Map from parent id to children index in data.\n     */\n    TreemapSeries.prototype.getListOfParents = function (data, existingIds) {\n        var arr = TreemapSeries_isArray(data) ? data : [],\n            ids = TreemapSeries_isArray(existingIds) ? existingIds : [],\n            listOfParents = arr.reduce(function (prev,\n            curr,\n            i) {\n                var parent = TreemapSeries_pick(curr.parent, '');\n            if (typeof prev[parent] === 'undefined') {\n                prev[parent] = [];\n            }\n            prev[parent].push(i);\n            return prev;\n        }, {\n            '': [] // Root of tree\n        });\n        // If parent does not exist, hoist parent to root of tree.\n        for (var _i = 0, _a = Object.keys(listOfParents); _i < _a.length; _i++) {\n            var parent_2 = _a[_i];\n            var children = listOfParents[parent_2];\n            if ((parent_2 !== '') && (ids.indexOf(parent_2) === -1)) {\n                for (var _b = 0, children_4 = children; _b < children_4.length; _b++) {\n                    var child = children_4[_b];\n                    listOfParents[''].push(child);\n                }\n                delete listOfParents[parent_2];\n            }\n        }\n        return listOfParents;\n    };\n    /**\n     * Creates a tree structured object from the series points.\n     * @private\n     */\n    TreemapSeries.prototype.getTree = function () {\n        var series = this,\n            allIds = this.data.map(function (d) {\n                return d.id;\n        });\n        series.parentList = series.getListOfParents(this.data, allIds);\n        series.nodeMap = {};\n        series.nodeList = [];\n        return series.buildTree('', -1, 0, series.parentList || {});\n    };\n    TreemapSeries.prototype.buildTree = function (id, index, level, list, parent) {\n        var series = this,\n            children = [],\n            point = series.points[index];\n        var height = 0,\n            child;\n        // Actions\n        for (var _i = 0, _a = (list[id] || []); _i < _a.length; _i++) {\n            var i = _a[_i];\n            child = series.buildTree(series.points[i].id, i, level + 1, list, id);\n            height = Math.max(child.height + 1, height);\n            children.push(child);\n        }\n        var node = new series.NodeClass().init(id,\n            index,\n            children,\n            height,\n            level,\n            series,\n            parent);\n        for (var _b = 0, children_5 = children; _b < children_5.length; _b++) {\n            var child_1 = children_5[_b];\n            child_1.parentNode = node;\n        }\n        series.nodeMap[node.id] = node;\n        series.nodeList.push(node);\n        if (point) {\n            point.node = node;\n            node.point = point;\n        }\n        return node;\n    };\n    /**\n     * Define hasData function for non-cartesian series. Returns true if the\n     * series has points at all.\n     * @private\n     */\n    TreemapSeries.prototype.hasData = function () {\n        return !!this.dataTable.rowCount;\n    };\n    TreemapSeries.prototype.init = function (chart, options) {\n        var series = this,\n            breadcrumbsOptions = TreemapSeries_merge(options.drillUpButton,\n            options.breadcrumbs),\n            setOptionsEvent = TreemapSeries_addEvent(series, 'setOptions',\n            function (event) {\n                var options = event.userOptions;\n            if (TreemapSeries_defined(options.allowDrillToNode) &&\n                !TreemapSeries_defined(options.allowTraversingTree)) {\n                options.allowTraversingTree = options.allowDrillToNode;\n                delete options.allowDrillToNode;\n            }\n            if (TreemapSeries_defined(options.drillUpButton) &&\n                !TreemapSeries_defined(options.traverseUpButton)) {\n                options.traverseUpButton = options.drillUpButton;\n                delete options.drillUpButton;\n            }\n        });\n        _super.prototype.init.call(this, chart, options);\n        // Treemap's opacity is a different option from other series\n        delete series.opacity;\n        // Handle deprecated options.\n        series.eventsToUnbind.push(setOptionsEvent);\n        if (series.options.allowTraversingTree) {\n            series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'click', series.onClickDrillToNode));\n            series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'setRootNode', function (e) {\n                var chart = series.chart;\n                if (chart.breadcrumbs) {\n                    // Create a list using the event after drilldown.\n                    chart.breadcrumbs.updateProperties(series.createList(e));\n                }\n            }));\n            series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'update', \n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            function (e, redraw) {\n                var breadcrumbs = this.chart.breadcrumbs;\n                if (breadcrumbs && e.options.breadcrumbs) {\n                    breadcrumbs.update(e.options.breadcrumbs);\n                }\n            }));\n            series.eventsToUnbind.push(TreemapSeries_addEvent(series, 'destroy', function destroyEvents(e) {\n                var chart = this.chart;\n                if (chart.breadcrumbs && !e.keepEventsForUpdate) {\n                    chart.breadcrumbs.destroy();\n                    chart.breadcrumbs = void 0;\n                }\n            }));\n        }\n        if (!chart.breadcrumbs) {\n            chart.breadcrumbs = new Breadcrumbs_Breadcrumbs(chart, breadcrumbsOptions);\n        }\n        series.eventsToUnbind.push(TreemapSeries_addEvent(chart.breadcrumbs, 'up', function (e) {\n            var drillUpsNumber = this.level - e.newLevel;\n            for (var i = 0; i < drillUpsNumber; i++) {\n                series.drillUp();\n            }\n        }));\n    };\n    /**\n     * Add drilling on the suitable points.\n     * @private\n     */\n    TreemapSeries.prototype.onClickDrillToNode = function (event) {\n        var series = this,\n            point = event.point,\n            drillId = point && point.drillId;\n        // If a drill id is returned, add click event and cursor.\n        if (TreemapSeries_isString(drillId)) {\n            point.setState(''); // Remove hover\n            series.setRootNode(drillId, true, { trigger: 'click' });\n        }\n    };\n    /**\n     * Get presentational attributes\n     * @private\n     */\n    TreemapSeries.prototype.pointAttribs = function (point, state) {\n        var series = this,\n            mapOptionsToLevel = (TreemapSeries_isObject(series.mapOptionsToLevel) ?\n                series.mapOptionsToLevel :\n                {}),\n            level = point && mapOptionsToLevel[point.node.level] || {},\n            options = this.options,\n            stateOptions = state && options.states && options.states[state] || {},\n            className = (point && point.getClassName()) || '', \n            // Set attributes by precedence. Point trumps level trumps series.\n            // Stroke width uses pick because it can be 0.\n            attr = {\n                'stroke': (point && point.borderColor) ||\n                    level.borderColor ||\n                    stateOptions.borderColor ||\n                    options.borderColor,\n                'stroke-width': TreemapSeries_pick(point && point.borderWidth,\n            level.borderWidth,\n            stateOptions.borderWidth,\n            options.borderWidth),\n                'dashstyle': (point && point.borderDashStyle) ||\n                    level.borderDashStyle ||\n                    stateOptions.borderDashStyle ||\n                    options.borderDashStyle,\n                'fill': (point && point.color) || this.color\n            };\n        var opacity;\n        // Hide levels above the current view\n        if (className.indexOf('highcharts-above-level') !== -1) {\n            attr.fill = 'none';\n            attr['stroke-width'] = 0;\n            // Nodes with children that accept interaction\n        }\n        else if (className.indexOf('highcharts-internal-node-interactive') !== -1) {\n            opacity = TreemapSeries_pick(stateOptions.opacity, options.opacity);\n            attr.fill = color(attr.fill).setOpacity(opacity).get();\n            attr.cursor = 'pointer';\n            // Hide nodes that have children\n        }\n        else if (className.indexOf('highcharts-internal-node') !== -1) {\n            attr.fill = 'none';\n        }\n        else if (state) {\n            // Brighten and hoist the hover nodes\n            attr.fill = color(attr.fill)\n                .brighten(stateOptions.brightness)\n                .get();\n        }\n        return attr;\n    };\n    /**\n     * Set the node's color recursively, from the parent down.\n     * @private\n     */\n    TreemapSeries.prototype.setColorRecursive = function (node, parentColor, colorIndex, index, siblings) {\n        var series = this,\n            chart = series && series.chart,\n            colors = chart && chart.options && chart.options.colors;\n        if (node) {\n            var colorInfo = TreemapSeries_getColor(node, {\n                    colors: colors,\n                    index: index,\n                    mapOptionsToLevel: series.mapOptionsToLevel,\n                    parentColor: parentColor,\n                    parentColorIndex: colorIndex,\n                    series: series,\n                    siblings: siblings\n                }),\n                point = series.points[node.i];\n            if (point) {\n                point.color = colorInfo.color;\n                point.colorIndex = colorInfo.colorIndex;\n            }\n            var i = -1;\n            // Do it all again with the children\n            for (var _i = 0, _a = (node.children || []); _i < _a.length; _i++) {\n                var child = _a[_i];\n                series.setColorRecursive(child, colorInfo.color, colorInfo.colorIndex, ++i, node.children.length);\n            }\n        }\n    };\n    TreemapSeries.prototype.setPointValues = function () {\n        var series = this;\n        var points = series.points,\n            xAxis = series.xAxis,\n            yAxis = series.yAxis;\n        var styledMode = series.chart.styledMode;\n        // Get the crisp correction in classic mode. For this to work in\n        // styled mode, we would need to first add the shape (without x,\n        // y, width and height), then read the rendered stroke width\n        // using point.graphic.strokeWidth(), then modify and apply the\n        // shapeArgs. This applies also to column series, but the\n        // downside is performance and code complexity.\n        var getStrokeWidth = function (point) { return (styledMode ?\n                0 :\n                (series.pointAttribs(point)['stroke-width'] || 0)); };\n        for (var _i = 0, points_3 = points; _i < points_3.length; _i++) {\n            var point = points_3[_i];\n            var _a = point.node,\n                values = _a.pointValues,\n                visible = _a.visible;\n            // Points which is ignored, have no values.\n            if (values && visible) {\n                var height = values.height,\n                    width = values.width,\n                    x = values.x,\n                    y = values.y;\n                var strokeWidth = getStrokeWidth(point);\n                var x1 = crisp(xAxis.toPixels(x,\n                    true),\n                    strokeWidth,\n                    true);\n                var x2 = crisp(xAxis.toPixels(x + width,\n                    true),\n                    strokeWidth,\n                    true);\n                var y1 = crisp(yAxis.toPixels(y,\n                    true),\n                    strokeWidth,\n                    true);\n                var y2 = crisp(yAxis.toPixels(y + height,\n                    true),\n                    strokeWidth,\n                    true);\n                // Set point values\n                var shapeArgs = {\n                        x: Math.min(x1,\n                    x2),\n                        y: Math.min(y1,\n                    y2),\n                        width: Math.abs(x2 - x1),\n                        height: Math.abs(y2 - y1)\n                    };\n                point.plotX = shapeArgs.x + (shapeArgs.width / 2);\n                point.plotY = shapeArgs.y + (shapeArgs.height / 2);\n                point.shapeArgs = shapeArgs;\n            }\n            else {\n                // Reset visibility\n                delete point.plotX;\n                delete point.plotY;\n            }\n        }\n    };\n    /**\n     * Sets a new root node for the series.\n     *\n     * @private\n     * @function Highcharts.Series#setRootNode\n     *\n     * @param {string} id\n     * The id of the new root node.\n     *\n     * @param {boolean} [redraw=true]\n     * Whether to redraw the chart or not.\n     *\n     * @param {Object} [eventArguments]\n     * Arguments to be accessed in event handler.\n     *\n     * @param {string} [eventArguments.newRootId]\n     * Id of the new root.\n     *\n     * @param {string} [eventArguments.previousRootId]\n     * Id of the previous root.\n     *\n     * @param {boolean} [eventArguments.redraw]\n     * Whether to redraw the chart after.\n     *\n     * @param {Object} [eventArguments.series]\n     * The series to update the root of.\n     *\n     * @param {string} [eventArguments.trigger]\n     * The action which triggered the event. Undefined if the setRootNode is\n     * called directly.\n     *\n     * @emits Highcharts.Series#event:setRootNode\n     */\n    TreemapSeries.prototype.setRootNode = function (id, redraw, eventArguments) {\n        var series = this,\n            eventArgs = TreemapSeries_extend({\n                newRootId: id,\n                previousRootId: series.rootNode,\n                redraw: TreemapSeries_pick(redraw,\n            true),\n                series: series\n            },\n            eventArguments);\n        /**\n         * The default functionality of the setRootNode event.\n         *\n         * @private\n         * @param {Object} args The event arguments.\n         * @param {string} args.newRootId Id of the new root.\n         * @param {string} args.previousRootId Id of the previous root.\n         * @param {boolean} args.redraw Whether to redraw the chart after.\n         * @param {Object} args.series The series to update the root of.\n         * @param {string} [args.trigger=undefined] The action which\n         * triggered the event. Undefined if the setRootNode is called\n         * directly.\n             */\n        var defaultFn = function (args) {\n                var series = args.series;\n            // Store previous and new root ids on the series.\n            series.idPreviousRoot = args.previousRootId;\n            series.rootNode = args.newRootId;\n            // Redraw the chart\n            series.isDirty = true; // Force redraw\n            if (args.redraw) {\n                series.chart.redraw();\n            }\n        };\n        // Fire setRootNode event.\n        TreemapSeries_fireEvent(series, 'setRootNode', eventArgs, defaultFn);\n    };\n    /**\n     * Workaround for `inactive` state. Since `series.opacity` option is\n     * already reserved, don't use that state at all by disabling\n     * `inactiveOtherPoints` and not inheriting states by points.\n     * @private\n     */\n    TreemapSeries.prototype.setState = function (state) {\n        this.options.inactiveOtherPoints = true;\n        _super.prototype.setState.call(this, state, false);\n        this.options.inactiveOtherPoints = false;\n    };\n    TreemapSeries.prototype.setTreeValues = function (tree) {\n        var _a,\n            _b,\n            _c;\n        var series = this,\n            options = series.options,\n            idRoot = series.rootNode,\n            mapIdToNode = series.nodeMap,\n            nodeRoot = mapIdToNode[idRoot],\n            levelIsConstant = (typeof options.levelIsConstant === 'boolean' ?\n                options.levelIsConstant :\n                true),\n            children = [],\n            point = series.points[tree.i];\n        // First give the children some values\n        var childrenTotal = 0;\n        for (var _i = 0, _d = tree.children; _i < _d.length; _i++) {\n            var child = _d[_i];\n            child = series.setTreeValues(child);\n            children.push(child);\n            if (!child.ignore) {\n                childrenTotal += child.val;\n            }\n        }\n        // Sort the children\n        stableSort(children, function (a, b) { return ((a.sortIndex || 0) - (b.sortIndex || 0)); });\n        // Set the values\n        var val = TreemapSeries_pick(point && point.options.value,\n            childrenTotal);\n        if (point) {\n            point.value = val;\n        }\n        if ((point === null || point === void 0 ? void 0 : point.isGroup) && ((_a = options.cluster) === null || _a === void 0 ? void 0 : _a.reductionFactor)) {\n            val /= options.cluster.reductionFactor;\n        }\n        if (((_c = (_b = tree.parentNode) === null || _b === void 0 ? void 0 : _b.point) === null || _c === void 0 ? void 0 : _c.isGroup) && series.rootNode !== tree.parent) {\n            tree.visible = false;\n        }\n        TreemapSeries_extend(tree, {\n            children: children,\n            childrenTotal: childrenTotal,\n            // Ignore this node if point is not visible\n            ignore: !(TreemapSeries_pick(point && point.visible, true) && (val > 0)),\n            isLeaf: tree.visible && !childrenTotal,\n            isGroup: point === null || point === void 0 ? void 0 : point.isGroup,\n            levelDynamic: (tree.level - (levelIsConstant ? 0 : nodeRoot.level)),\n            name: TreemapSeries_pick(point && point.name, ''),\n            sortIndex: TreemapSeries_pick(point && point.sortIndex, -val),\n            val: val\n        });\n        return tree;\n    };\n    TreemapSeries.prototype.sliceAndDice = function (parent, children) {\n        return this.algorithmFill(true, parent, children);\n    };\n    TreemapSeries.prototype.squarified = function (parent, children) {\n        return this.algorithmLowAspectRatio(true, parent, children);\n    };\n    TreemapSeries.prototype.strip = function (parent, children) {\n        return this.algorithmLowAspectRatio(false, parent, children);\n    };\n    TreemapSeries.prototype.stripes = function (parent, children) {\n        return this.algorithmFill(false, parent, children);\n    };\n    TreemapSeries.prototype.translate = function (tree) {\n        var _a;\n        var series = this,\n            options = series.options,\n            applyGrouping = !tree;\n        var // NOTE: updateRootId modifies series.\n            rootId = TreemapSeries_updateRootId(series),\n            rootNode,\n            pointValues,\n            seriesArea,\n            val;\n        if (!tree && !rootId.startsWith('highcharts-grouped-treemap-points-')) {\n            // Group points are removed, but not destroyed during generatePoints\n            (this.points || []).forEach(function (point) {\n                if (point.isGroup) {\n                    point.destroy();\n                }\n            });\n            // Call prototype function\n            _super.prototype.translate.call(this);\n            // @todo Only if series.isDirtyData is true\n            tree = series.getTree();\n        }\n        // Ensure `tree` and `series.tree` are synchronized\n        series.tree = tree = tree || series.tree;\n        rootNode = series.nodeMap[rootId];\n        if (rootId !== '' && !rootNode) {\n            series.setRootNode('', false);\n            rootId = series.rootNode;\n            rootNode = series.nodeMap[rootId];\n        }\n        if (!((_a = rootNode.point) === null || _a === void 0 ? void 0 : _a.isGroup)) {\n            series.mapOptionsToLevel = TreemapSeries_getLevelOptions({\n                from: rootNode.level + 1,\n                levels: options.levels,\n                to: tree.height,\n                defaults: {\n                    levelIsConstant: series.options.levelIsConstant,\n                    colorByPoint: options.colorByPoint\n                }\n            });\n        }\n        // Parents of the root node is by default visible\n        Treemap_TreemapUtilities.recursive(series.nodeMap[series.rootNode], function (node) {\n            var p = node.parent;\n            var next = false;\n            node.visible = true;\n            if (p || p === '') {\n                next = series.nodeMap[p];\n            }\n            return next;\n        });\n        // Children of the root node is by default visible\n        Treemap_TreemapUtilities.recursive(series.nodeMap[series.rootNode].children, function (children) {\n            var next = false;\n            for (var _i = 0, children_6 = children; _i < children_6.length; _i++) {\n                var child = children_6[_i];\n                child.visible = true;\n                if (child.children.length) {\n                    next = (next || []).concat(child.children);\n                }\n            }\n            return next;\n        });\n        series.setTreeValues(tree);\n        // Calculate plotting values.\n        series.axisRatio = (series.xAxis.len / series.yAxis.len);\n        series.nodeMap[''].pointValues = pointValues = {\n            x: 0,\n            y: 0,\n            width: axisMax,\n            height: axisMax\n        };\n        series.nodeMap[''].values = seriesArea = TreemapSeries_merge(pointValues, {\n            width: (pointValues.width * series.axisRatio),\n            direction: (options.layoutStartingDirection === 'vertical' ? 0 : 1),\n            val: tree.val\n        });\n        series.calculateChildrenAreas(tree, seriesArea);\n        // Logic for point colors\n        if (!series.colorAxis &&\n            !options.colorByPoint) {\n            series.setColorRecursive(series.tree);\n        }\n        // Update axis extremes according to the root node.\n        if (options.allowTraversingTree) {\n            if (rootNode.pointValues) {\n                val = rootNode.pointValues;\n                series.xAxis.setExtremes(val.x, val.x + val.width, false);\n                series.yAxis.setExtremes(val.y, val.y + val.height, false);\n                series.xAxis.setScale();\n                series.yAxis.setScale();\n            }\n        }\n        // Assign values to points.\n        series.setPointValues();\n        if (applyGrouping) {\n            series.applyTreeGrouping();\n        }\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    TreemapSeries.defaultOptions = TreemapSeries_merge(ScatterSeries.defaultOptions, Treemap_TreemapSeriesDefaults);\n    return TreemapSeries;\n}(ScatterSeries));\nTreemapSeries_extend(TreemapSeries.prototype, {\n    buildKDTree: noop,\n    colorAttribs: Series_ColorMapComposition.seriesMembers.colorAttribs,\n    colorKey: 'colorValue', // Point color option key\n    directTouch: true,\n    getExtremesFromAll: true,\n    getSymbol: noop,\n    optionalAxis: 'colorAxis',\n    parallelArrays: ['x', 'y', 'value', 'colorValue'],\n    pointArrayMap: ['value', 'colorValue'],\n    pointClass: Treemap_TreemapPoint,\n    NodeClass: Treemap_TreemapNode,\n    trackerGroups: ['group', 'dataLabelsGroup'],\n    utils: Treemap_TreemapUtilities\n});\nSeries_ColorMapComposition.compose(TreemapSeries);\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('treemap', TreemapSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Treemap_TreemapSeries = ((/* unused pure expression or super */ null && (TreemapSeries)));\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;// ./code/es5/es-modules/Series/Sunburst/SunburstPoint.js\n/* *\n *\n *  This module implements sunburst charts in Highcharts.\n *\n *  (c) 2016-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar SunburstPoint_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 Point = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series.prototype.pointClass, SunburstPoint_TreemapPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.treemap.prototype.pointClass;\n\nvar SunburstPoint_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, SunburstPoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, pInt = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pInt;\n/* *\n *\n *  Class\n *\n * */\nvar SunburstPoint = /** @class */ (function (_super) {\n    SunburstPoint_extends(SunburstPoint, _super);\n    function SunburstPoint() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    SunburstPoint.prototype.getDataLabelPath = function (label) {\n        var _a;\n        var renderer = this.series.chart.renderer,\n            shapeArgs = this.shapeExisting,\n            r = shapeArgs.r + pInt(((_a = label.options) === null || _a === void 0 ? void 0 : _a.distance) || 0);\n        var start = shapeArgs.start,\n            end = shapeArgs.end;\n        var angle = start + (end - start) / 2; // Arc middle value\n            var upperHalf = angle < 0 &&\n                angle > -Math.PI ||\n                angle > Math.PI, moreThanHalf;\n        // Check if point is a full circle\n        if (start === -Math.PI / 2 &&\n            SunburstPoint_correctFloat(end) === SunburstPoint_correctFloat(Math.PI * 1.5)) {\n            start = -Math.PI + Math.PI / 360;\n            end = -Math.PI / 360;\n            upperHalf = true;\n        }\n        // Check if dataLabels should be render in the upper half of the circle\n        if (end - start > Math.PI) {\n            upperHalf = false;\n            moreThanHalf = true;\n            // Close to the full circle, add some padding so that the SVG\n            // renderer treats it as separate points (#18884).\n            if ((end - start) > 2 * Math.PI - 0.01) {\n                start += 0.01;\n                end -= 0.01;\n            }\n        }\n        if (this.dataLabelPath) {\n            this.dataLabelPath = this.dataLabelPath.destroy();\n        }\n        // All times\n        this.dataLabelPath = renderer\n            .arc({\n            open: true,\n            longArc: moreThanHalf ? 1 : 0\n        })\n            .attr({\n            start: (upperHalf ? start : end),\n            end: (upperHalf ? end : start),\n            clockwise: +upperHalf,\n            x: shapeArgs.x,\n            y: shapeArgs.y,\n            r: (r + shapeArgs.innerR) / 2\n        })\n            .add(renderer.defs);\n        return this.dataLabelPath;\n    };\n    SunburstPoint.prototype.isValid = function () {\n        return true;\n    };\n    return SunburstPoint;\n}(SunburstPoint_TreemapPoint));\nSunburstPoint_extend(SunburstPoint.prototype, {\n    getClassName: Point.prototype.getClassName,\n    haloPath: Point.prototype.haloPath,\n    setState: Point.prototype.setState\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sunburst_SunburstPoint = (SunburstPoint);\n\n;// ./code/es5/es-modules/Series/Sunburst/SunburstUtilities.js\n/* *\n *\n *  This module implements sunburst charts in Highcharts.\n *\n *  (c) 2016-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar SunburstUtilities_TreemapSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.treemap;\n\nvar SunburstUtilities_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, SunburstUtilities_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, SunburstUtilities_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n * @function calculateLevelSizes\n *\n * @param {Object} levelOptions\n * Map of level to its options.\n *\n * @param {Highcharts.Dictionary<number>} params\n * Object containing number parameters `innerRadius` and `outerRadius`.\n *\n * @return {Highcharts.SunburstSeriesLevelsOptions|undefined}\n * Returns the modified options, or undefined.\n */\nfunction calculateLevelSizes(levelOptions, params) {\n    var p = SunburstUtilities_isObject(params) ? params : {};\n    var result,\n        totalWeight = 0,\n        diffRadius,\n        levels,\n        levelsNotIncluded,\n        remainingSize,\n        from,\n        to;\n    if (SunburstUtilities_isObject(levelOptions)) {\n        result = SunburstUtilities_merge({}, levelOptions);\n        from = SunburstUtilities_isNumber(p.from) ? p.from : 0;\n        to = SunburstUtilities_isNumber(p.to) ? p.to : 0;\n        levels = range(from, to);\n        levelsNotIncluded = Object.keys(result).filter(function (key) { return (levels.indexOf(+key) === -1); });\n        diffRadius = remainingSize = SunburstUtilities_isNumber(p.diffRadius) ?\n            p.diffRadius : 0;\n        // Convert percentage to pixels.\n        // Calculate the remaining size to divide between \"weight\" levels.\n        // Calculate total weight to use in conversion from weight to\n        // pixels.\n        for (var _i = 0, levels_1 = levels; _i < levels_1.length; _i++) {\n            var level = levels_1[_i];\n            var options = result[level],\n                unit = options.levelSize.unit,\n                value = options.levelSize.value;\n            if (unit === 'weight') {\n                totalWeight += value;\n            }\n            else if (unit === 'percentage') {\n                options.levelSize = {\n                    unit: 'pixels',\n                    value: (value / 100) * diffRadius\n                };\n                remainingSize -= options.levelSize.value;\n            }\n            else if (unit === 'pixels') {\n                remainingSize -= value;\n            }\n        }\n        // Convert weight to pixels.\n        for (var _a = 0, levels_2 = levels; _a < levels_2.length; _a++) {\n            var level = levels_2[_a];\n            var options = result[level];\n            if (options.levelSize.unit === 'weight') {\n                var weight = options.levelSize.value;\n                result[level].levelSize = {\n                    unit: 'pixels',\n                    value: (weight / totalWeight) * remainingSize\n                };\n            }\n        }\n        // Set all levels not included in interval [from,to] to have 0\n        // pixels.\n        for (var _b = 0, levelsNotIncluded_1 = levelsNotIncluded; _b < levelsNotIncluded_1.length; _b++) {\n            var level = levelsNotIncluded_1[_b];\n            result[level].levelSize = {\n                value: 0,\n                unit: 'pixels'\n            };\n        }\n    }\n    return result;\n}\n/**\n * @private\n */\nfunction getLevelFromAndTo(_a) {\n    var level = _a.level,\n        height = _a.height;\n    //  Never displays level below 1\n    var from = level > 0 ? level : 1;\n    var to = level + height;\n    return { from: from, to: to };\n}\n/**\n * TODO introduce step, which should default to 1.\n * @private\n */\nfunction range(from, to) {\n    var result = [];\n    if (SunburstUtilities_isNumber(from) && SunburstUtilities_isNumber(to) && from <= to) {\n        for (var i = from; i <= to; i++) {\n            result.push(i);\n        }\n    }\n    return result;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar SunburstUtilities = {\n    calculateLevelSizes: calculateLevelSizes,\n    getLevelFromAndTo: getLevelFromAndTo,\n    range: range,\n    recursive: SunburstUtilities_TreemapSeries.prototype.utils.recursive\n};\n/* harmony default export */ var Sunburst_SunburstUtilities = (SunburstUtilities);\n\n;// ./code/es5/es-modules/Series/Sunburst/SunburstNode.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar SunburstNode_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 *  Class\n *\n * */\nvar SunburstNode = /** @class */ (function (_super) {\n    SunburstNode_extends(SunburstNode, _super);\n    function SunburstNode() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return SunburstNode;\n}(Treemap_TreemapNode));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sunburst_SunburstNode = (SunburstNode);\n\n;// ./code/es5/es-modules/Series/Sunburst/SunburstSeriesDefaults.js\n/* *\n *\n *  This module implements sunburst charts in Highcharts.\n *\n *  (c) 2016-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard\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 Sunburst displays hierarchical data, where a level in the hierarchy is\n * represented by a circle. The center represents the root node of the tree.\n * The visualization bears a resemblance to both treemap and pie charts.\n *\n * @sample highcharts/demo/sunburst\n *         Sunburst chart\n *\n * @extends      plotOptions.pie\n * @excluding    allAreas, clip, colorAxis, colorKey, compare, compareBase,\n *               dataGrouping, depth, dragDrop, endAngle, gapSize, gapUnit,\n *               ignoreHiddenPoint, innerSize, joinBy, legendType, linecap,\n *               minSize, navigatorOptions, pointRange\n * @product      highcharts\n * @requires     modules/sunburst\n * @optionparent plotOptions.sunburst\n *\n * @private\n */\nvar SunburstSeriesDefaults = {\n    /**\n     * Options for the breadcrumbs, the navigation at the top leading the\n     * way up through the traversed levels.\n     *\n     * @since 10.0.0\n     * @product   highcharts\n     * @extends   navigation.breadcrumbs\n     * @apioption plotOptions.sunburst.breadcrumbs\n     */\n    /**\n     * Set options on specific levels. Takes precedence over series options,\n     * but not point options.\n     *\n     * @sample highcharts/demo/sunburst\n     *         Sunburst chart\n     *\n     * @type      {Array<*>}\n     * @apioption plotOptions.sunburst.levels\n     */\n    /**\n     * Can set a `borderColor` on all points which lies on the same level.\n     *\n     * @type      {Highcharts.ColorString}\n     * @apioption plotOptions.sunburst.levels.borderColor\n     */\n    /**\n     * Can set a `borderWidth` on all points which lies on the same level.\n     *\n     * @type      {number}\n     * @apioption plotOptions.sunburst.levels.borderWidth\n     */\n    /**\n     * Can set a `borderDashStyle` on all points which lies on the same\n     * level.\n     *\n     * @type      {Highcharts.DashStyleValue}\n     * @apioption plotOptions.sunburst.levels.borderDashStyle\n     */\n    /**\n     * Can set a `color` on all points which lies on the same level.\n     *\n     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @apioption plotOptions.sunburst.levels.color\n     */\n    /**\n     * Determines whether the chart should receive one color per point based\n     * on this level.\n     *\n     * @type      {boolean}\n     * @apioption plotOptions.sunburst.levels.colorByPoint\n     */\n    /**\n     * Can set a `colorVariation` on all points which lies on the same\n     * level.\n     *\n     * @apioption plotOptions.sunburst.levels.colorVariation\n     */\n    /**\n     * The key of a color variation. Currently supports `brightness` only.\n     *\n     * @type      {string}\n     * @apioption plotOptions.sunburst.levels.colorVariation.key\n     */\n    /**\n     * The ending value of a color variation. The last sibling will receive\n     * this value.\n     *\n     * @type      {number}\n     * @apioption plotOptions.sunburst.levels.colorVariation.to\n     */\n    /**\n     * Can set `dataLabels` on all points which lies on the same level.\n     *\n     * @extends   plotOptions.sunburst.dataLabels\n     * @apioption plotOptions.sunburst.levels.dataLabels\n     */\n    /**\n     * Decides which level takes effect from the options set in the levels\n     * object.\n     *\n     * @sample highcharts/demo/sunburst\n     *         Sunburst chart\n     *\n     * @type      {number}\n     * @apioption plotOptions.sunburst.levels.level\n     */\n    /**\n     * Can set a `levelSize` on all points which lies on the same level.\n     *\n     * @type      {Object}\n     * @apioption plotOptions.sunburst.levels.levelSize\n     */\n    /**\n     * When enabled the user can click on a point which is a parent and\n     * zoom in on its children. Deprecated and replaced by\n     * [allowTraversingTree](#plotOptions.sunburst.allowTraversingTree).\n     *\n     * @deprecated\n     * @type      {boolean}\n     * @default   false\n     * @since     6.0.0\n     * @product   highcharts\n     * @apioption plotOptions.sunburst.allowDrillToNode\n     */\n    /**\n     * When enabled the user can click on a point which is a parent and\n     * zoom in on its children.\n     *\n     * @type      {boolean}\n     * @default   false\n     * @since     7.0.3\n     * @product   highcharts\n     * @apioption plotOptions.sunburst.allowTraversingTree\n     */\n    /**\n     * The center of the sunburst chart relative to the plot area. Can be\n     * percentages or pixel values.\n     *\n     * @sample {highcharts} highcharts/plotoptions/pie-center/\n     *         Centered at 100, 100\n     *\n     * @type    {Array<number|string>}\n     * @default [\"50%\", \"50%\"]\n     * @product highcharts\n     *\n     * @private\n     */\n    center: ['50%', '50%'],\n    /**\n     * @product highcharts\n     *\n     * @private\n     */\n    clip: false,\n    colorByPoint: false,\n    /**\n     * Disable inherited opacity from Treemap series.\n     *\n     * @ignore-option\n     *\n     * @private\n     */\n    opacity: 1,\n    /**\n     * @declare Highcharts.SeriesSunburstDataLabelsOptionsObject\n     *\n     * @private\n     */\n    dataLabels: {\n        allowOverlap: true,\n        defer: true,\n        /**\n         * Decides how the data label will be rotated relative to the\n         * perimeter of the sunburst. Valid values are `circular`, `auto`,\n         * `parallel` and `perpendicular`. When `circular`, the best fit\n         * will be computed for the point, so that the label is curved\n         * around the center when there is room for it, otherwise\n         * perpendicular. The legacy `auto` option works similar to\n         * `circular`, but instead of curving the labels they are tangent to\n         * the perimeter.\n         *\n         * The `rotation` option takes precedence over `rotationMode`.\n         *\n         * @type       {string}\n         * @sample {highcharts}\n         *         highcharts/plotoptions/sunburst-datalabels-rotationmode-circular/\n         *         Circular rotation mode\n         * @validvalue [\"auto\", \"perpendicular\", \"parallel\", \"circular\"]\n         * @since      6.0.0\n         */\n        rotationMode: 'circular',\n        style: {\n            /** @internal */\n            textOverflow: 'ellipsis'\n        }\n    },\n    /**\n     * Which point to use as a root in the visualization.\n     *\n     * @type {string}\n     *\n     * @private\n     */\n    rootId: void 0,\n    /**\n     * Used together with the levels and `allowDrillToNode` options. When\n     * set to false the first level visible when drilling is considered\n     * to be level one. Otherwise the level will be the same as the tree\n     * structure.\n     *\n     * @private\n     */\n    levelIsConstant: true,\n    /**\n     * Determines the width of the ring per level.\n     *\n     * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/\n     *         Sunburst with various sizes per level\n     *\n     * @since 6.0.5\n     *\n     * @private\n     */\n    levelSize: {\n        /**\n         * The value used for calculating the width of the ring. Its' affect\n         * is determined by `levelSize.unit`.\n         *\n         * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/\n         *         Sunburst with various sizes per level\n         */\n        value: 1,\n        /**\n         * How to interpret `levelSize.value`.\n         *\n         * - `percentage` gives a width relative to result of outer radius\n         *   minus inner radius.\n         *\n         * - `pixels` gives the ring a fixed width in pixels.\n         *\n         * - `weight` takes the remaining width after percentage and pixels,\n         *   and distributes it across all \"weighted\" levels. The value\n         *   relative to the sum of all weights determines the width.\n         *\n         * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/\n         *         Sunburst with various sizes per level\n         *\n         * @validvalue [\"percentage\", \"pixels\", \"weight\"]\n         */\n        unit: 'weight'\n    },\n    /**\n     * Options for the button appearing when traversing down in a sunburst.\n     * Since v9.3.3 the `traverseUpButton` is replaced by `breadcrumbs`.\n     *\n     * @extends   plotOptions.treemap.traverseUpButton\n     * @since     6.0.0\n     * @deprecated\n     * @apioption plotOptions.sunburst.traverseUpButton\n     *\n     */\n    /**\n     * If a point is sliced, moved out from the center, how many pixels\n     * should it be moved?.\n     *\n     * @sample highcharts/plotoptions/sunburst-sliced\n     *         Sliced sunburst\n     *\n     * @since 6.0.4\n     *\n     * @private\n     */\n    slicedOffset: 10\n};\n/**\n * A `sunburst` series. If the [type](#series.sunburst.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.sunburst\n * @excluding dataParser, dataURL, stack, dataSorting, boostThreshold,\n *            boostBlending\n * @product   highcharts\n * @requires  modules/sunburst\n * @apioption series.sunburst\n */\n/**\n * @type      {Array<number|null|*>}\n * @extends   series.treemap.data\n * @excluding x, y\n * @product   highcharts\n * @apioption series.sunburst.data\n */\n/**\n * @type      {Highcharts.SeriesSunburstDataLabelsOptionsObject|Array<Highcharts.SeriesSunburstDataLabelsOptionsObject>}\n * @product   highcharts\n * @apioption series.sunburst.data.dataLabels\n */\n/**\n * The value of the point, resulting in a relative area of the point\n * in the sunburst.\n *\n * @type      {number|null}\n * @since     6.0.0\n * @product   highcharts\n * @apioption series.sunburst.data.value\n */\n/**\n * Use this option to build a tree structure. The value should be the id of the\n * point which is the parent. If no points has a matching id, or this option is\n * undefined, then the parent will be set to the root.\n *\n * @type      {string}\n * @since     6.0.0\n * @product   highcharts\n * @apioption series.sunburst.data.parent\n */\n/**\n  * Whether to display a slice offset from the center. When a sunburst point is\n  * sliced, its children are also offset.\n  *\n  * @sample highcharts/plotoptions/sunburst-sliced\n  *         Sliced sunburst\n  *\n  * @type      {boolean}\n  * @default   false\n  * @since     6.0.4\n  * @product   highcharts\n  * @apioption series.sunburst.data.sliced\n  */\n''; // Detach doclets above\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sunburst_SunburstSeriesDefaults = (SunburstSeriesDefaults);\n\n;// ./code/es5/es-modules/Extensions/TextPath.js\n/* *\n *\n *  Highcharts module with textPath functionality.\n *\n *  (c) 2009-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar TextPath_deg2rad = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).deg2rad;\nvar TextPath_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, TextPath_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey, TextPath_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, TextPath_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend;\n/**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * Text path support is not bundled into `highcharts.js`, and requires the\n * `modules/textpath.js` file. However, it is included in the script files of\n * those series types that use it by default\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n *        Path to follow. If undefined, it allows changing options for the\n *        existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n *        Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\nfunction setTextPath(path, textPathOptions) {\n    var _this = this;\n    // Defaults\n    textPathOptions = TextPath_merge(true, {\n        enabled: true,\n        attributes: {\n            dy: -5,\n            startOffset: '50%',\n            textAnchor: 'middle'\n        }\n    }, textPathOptions);\n    var url = this.renderer.url,\n        textWrapper = this.text || this,\n        textPath = textWrapper.textPath,\n        attributes = textPathOptions.attributes,\n        enabled = textPathOptions.enabled;\n    path = path || (textPath && textPath.path);\n    // Remove previously added event\n    if (textPath) {\n        textPath.undo();\n    }\n    if (path && enabled) {\n        var undo = TextPath_addEvent(textWrapper, 'afterModifyTree',\n            function (e) {\n                if (path && enabled) {\n                    // Set ID for the path\n                    var textPathId = path.attr('id');\n                if (!textPathId) {\n                    path.attr('id', textPathId = uniqueKey());\n                }\n                // Set attributes for the <text>\n                var textAttribs = {\n                        // `dx`/`dy` options must by set on <text> (parent), the\n                        // rest should be set on <textPath>\n                        x: 0,\n                        y: 0\n                    };\n                if (TextPath_defined(attributes.dx)) {\n                    textAttribs.dx = attributes.dx;\n                    delete attributes.dx;\n                }\n                if (TextPath_defined(attributes.dy)) {\n                    textAttribs.dy = attributes.dy;\n                    delete attributes.dy;\n                }\n                textWrapper.attr(textAttribs);\n                // Handle label properties\n                _this.attr({ transform: '' });\n                if (_this.box) {\n                    _this.box = _this.box.destroy();\n                }\n                // Wrap the nodes in a textPath\n                var children = e.nodes.slice(0);\n                e.nodes.length = 0;\n                e.nodes[0] = {\n                    tagName: 'textPath',\n                    attributes: TextPath_extend(attributes, {\n                        'text-anchor': attributes.textAnchor,\n                        href: \"\" + url + \"#\".concat(textPathId)\n                    }),\n                    children: children\n                };\n            }\n        });\n        // Set the reference\n        textWrapper.textPath = { path: path, undo: undo };\n    }\n    else {\n        textWrapper.attr({ dx: 0, dy: 0 });\n        delete textWrapper.textPath;\n    }\n    if (this.added) {\n        // Rebuild text after added\n        textWrapper.textCache = '';\n        this.renderer.buildText(textWrapper);\n    }\n    return this;\n}\n/**\n * Attach a polygon to a bounding box if the element contains a textPath.\n *\n * @function Highcharts.SVGElement#setPolygon\n *\n * @param {any} event\n *        An event containing a bounding box object\n *\n * @return {Highcharts.BBoxObject} Returns the bounding box object.\n */\nfunction setPolygon(event) {\n    var _a;\n    var bBox = event.bBox,\n        tp = (_a = this.element) === null || _a === void 0 ? void 0 : _a.querySelector('textPath');\n    if (tp) {\n        var polygon = [], _b = this.renderer.fontMetrics(this.element), b_1 = _b.b, h = _b.h, descender_1 = h - b_1, lineCleanerRegex = new RegExp('(<tspan>|' +\n                '<tspan(?!\\\\sclass=\"highcharts-br\")[^>]*>|' +\n                '<\\\\/tspan>)', 'g'), lines = tp\n                .innerHTML\n                .replace(lineCleanerRegex, '')\n                .split(/<tspan class=\"highcharts-br\"[^>]*>/), numOfLines = lines.length;\n        // Calculate top and bottom coordinates for\n        // either the start or the end of a single\n        // character, and append it to the polygon.\n        var appendTopAndBottom = function (charIndex,\n            positionOfChar) {\n                var x = positionOfChar.x,\n            y = positionOfChar.y,\n            rotation = (tp.getRotationOfChar(charIndex) - 90) * TextPath_deg2rad,\n            cosRot = Math.cos(rotation),\n            sinRot = Math.sin(rotation);\n            return [\n                [\n                    x - descender_1 * cosRot,\n                    y - descender_1 * sinRot\n                ],\n                [\n                    x + b_1 * cosRot,\n                    y + b_1 * sinRot\n                ]\n            ];\n        };\n        for (var i = 0, lineIndex = 0; lineIndex < numOfLines; lineIndex++) {\n            var line = lines[lineIndex],\n                lineLen = line.length;\n            for (var lineCharIndex = 0; lineCharIndex < lineLen; lineCharIndex += 5) {\n                try {\n                    var srcCharIndex = (i +\n                            lineCharIndex +\n                            lineIndex),\n                        _c = appendTopAndBottom(srcCharIndex,\n                        tp.getStartPositionOfChar(srcCharIndex)),\n                        lower = _c[0],\n                        upper = _c[1];\n                    if (lineCharIndex === 0) {\n                        polygon.push(upper);\n                        polygon.push(lower);\n                    }\n                    else {\n                        if (lineIndex === 0) {\n                            polygon.unshift(upper);\n                        }\n                        if (lineIndex === numOfLines - 1) {\n                            polygon.push(lower);\n                        }\n                    }\n                }\n                catch (e) {\n                    // Safari fails on getStartPositionOfChar even if the\n                    // character is within the `textContent.length`\n                    break;\n                }\n            }\n            i += lineLen - 1;\n            try {\n                var srcCharIndex = i + lineIndex,\n                    charPos = tp.getEndPositionOfChar(srcCharIndex),\n                    _d = appendTopAndBottom(srcCharIndex,\n                    charPos),\n                    lower = _d[0],\n                    upper = _d[1];\n                polygon.unshift(upper);\n                polygon.unshift(lower);\n            }\n            catch (e) {\n                // Safari fails on getStartPositionOfChar even if the character\n                // is within the `textContent.length`\n                break;\n            }\n        }\n        // Close it\n        if (polygon.length) {\n            polygon.push(polygon[0].slice());\n        }\n        bBox.polygon = polygon;\n    }\n    return bBox;\n}\n/**\n * Draw text along a textPath for a dataLabel.\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {any} event\n *        An event containing label options\n *\n * @return {void}\n */\nfunction drawTextPath(event) {\n    var _a;\n    var labelOptions = event.labelOptions,\n        point = event.point,\n        textPathOptions = (labelOptions[point.formatPrefix + 'TextPath'] ||\n            labelOptions.textPath);\n    if (textPathOptions && !labelOptions.useHTML) {\n        this.setTextPath(((_a = point.getDataLabelPath) === null || _a === void 0 ? void 0 : _a.call(point, this)) || point.graphic, textPathOptions);\n        if (point.dataLabelPath &&\n            !textPathOptions.enabled) {\n            // Clean the DOM\n            point.dataLabelPath = (point.dataLabelPath.destroy());\n        }\n    }\n}\nfunction compose(SVGElementClass) {\n    TextPath_addEvent(SVGElementClass, 'afterGetBBox', setPolygon);\n    TextPath_addEvent(SVGElementClass, 'beforeAddingDataLabel', drawTextPath);\n    var svgElementProto = SVGElementClass.prototype;\n    if (!svgElementProto.setTextPath) {\n        svgElementProto.setTextPath = setTextPath;\n    }\n}\nvar TextPath = {\n    compose: compose\n};\n/* harmony default export */ var Extensions_TextPath = (TextPath);\n\n;// ./code/es5/es-modules/Series/Sunburst/SunburstSeries.js\n/* *\n *\n *  This module implements sunburst charts in Highcharts.\n *\n *  (c) 2016-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar SunburstSeries_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 getCenter = Series_CenteredUtilities.getCenter, getStartAndEndRadians = Series_CenteredUtilities.getStartAndEndRadians;\n\nvar SunburstSeries_noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\nvar SunburstSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, SunburstSeries_ColumnSeries = SunburstSeries_a.column, SunburstSeries_TreemapSeries = SunburstSeries_a.treemap;\n\n\n\nvar SunburstSeries_getColor = Series_TreeUtilities.getColor, SunburstSeries_getLevelOptions = Series_TreeUtilities.getLevelOptions, SunburstSeries_setTreeValues = Series_TreeUtilities.setTreeValues, SunburstSeries_updateRootId = Series_TreeUtilities.updateRootId;\n\n\n\nvar SunburstSeries_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, SunburstSeries_error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, SunburstSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, SunburstSeries_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, SunburstSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, SunburstSeries_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, SunburstSeries_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, SunburstSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, SunburstSeries_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n\n\nExtensions_TextPath.compose((highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default()));\n/* *\n *\n *  Constants\n *\n * */\nvar rad2deg = 180 / Math.PI;\n/* *\n *\n *  Functions\n *\n * */\n/** @private */\nfunction isBoolean(x) {\n    return typeof x === 'boolean';\n}\n/**\n * Find a set of coordinates given a start coordinates, an angle, and a\n * distance.\n *\n * @private\n * @function getEndPoint\n *\n * @param {number} x\n *        Start coordinate x\n *\n * @param {number} y\n *        Start coordinate y\n *\n * @param {number} angle\n *        Angle in radians\n *\n * @param {number} distance\n *        Distance from start to end coordinates\n *\n * @return {Highcharts.SVGAttributes}\n *         Returns the end coordinates, x and y.\n */\nvar getEndPoint = function getEndPoint(x, y, angle, distance) {\n    return {\n        x: x + (Math.cos(angle) * distance),\n        y: y + (Math.sin(angle) * distance)\n    };\n};\n/** @private */\nfunction getDlOptions(params) {\n    var _a;\n    // Set options to new object to avoid problems with scope\n    var point = params.point,\n        shape = SunburstSeries_isObject(params.shapeArgs) ? params.shapeArgs : {},\n        optionsPoint = (SunburstSeries_isObject(params.optionsPoint) ?\n            params.optionsPoint.dataLabels :\n            {}), \n        // The splat was used because levels dataLabels\n        // options doesn't work as an array\n        optionsLevel = SunburstSeries_splat(SunburstSeries_isObject(params.level) ?\n            params.level.dataLabels :\n            {})[0],\n        options = SunburstSeries_merge({\n            style: {}\n        },\n        optionsLevel,\n        optionsPoint),\n        _b = point.innerArcLength,\n        innerArcLength = _b === void 0 ? 0 : _b,\n        _c = point.outerArcLength,\n        outerArcLength = _c === void 0 ? 0 : _c;\n    var rotationRad,\n        rotation,\n        rotationMode = options.rotationMode;\n    if (!SunburstSeries_isNumber(options.rotation)) {\n        if (rotationMode === 'auto' || rotationMode === 'circular') {\n            if (options.useHTML &&\n                rotationMode === 'circular') {\n                // Change rotationMode to 'auto' to avoid using text paths\n                // for HTML labels, see #18953\n                rotationMode = 'auto';\n            }\n            if (innerArcLength < 1 &&\n                outerArcLength > shape.radius) {\n                rotationRad = 0;\n                // Trigger setTextPath function to get textOutline etc.\n                if (point.dataLabelPath && rotationMode === 'circular') {\n                    options.textPath = {\n                        enabled: true\n                    };\n                }\n            }\n            else if (innerArcLength > 1 &&\n                outerArcLength > 1.5 * shape.radius) {\n                if (rotationMode === 'circular') {\n                    options.textPath = {\n                        enabled: true,\n                        attributes: {\n                            dy: 5\n                        }\n                    };\n                }\n                else {\n                    rotationMode = 'parallel';\n                }\n            }\n            else {\n                // Trigger the destroyTextPath function\n                if (((_a = point.dataLabel) === null || _a === void 0 ? void 0 : _a.textPath) &&\n                    rotationMode === 'circular') {\n                    options.textPath = {\n                        enabled: false\n                    };\n                }\n                rotationMode = 'perpendicular';\n            }\n        }\n        if (rotationMode !== 'auto' && rotationMode !== 'circular') {\n            if (point.dataLabel && point.dataLabel.textPath) {\n                options.textPath = {\n                    enabled: false\n                };\n            }\n            rotationRad = (shape.end -\n                (shape.end - shape.start) / 2);\n        }\n        if (rotationMode === 'parallel') {\n            options.style.width = Math.min(shape.radius * 2.5, (outerArcLength + innerArcLength) / 2);\n        }\n        else {\n            if (!SunburstSeries_defined(options.style.width) &&\n                shape.radius) {\n                options.style.width = point.node.level === 1 ?\n                    2 * shape.radius :\n                    shape.radius;\n            }\n        }\n        if (rotationMode === 'perpendicular') {\n            // 16 is the inferred line height. We don't know the real line\n            // yet because the label is not rendered. A better approach for this\n            // would be to hide the label from the `alignDataLabel` function\n            // when the actual line height is known.\n            if (outerArcLength < 16) {\n                options.style.width = 1;\n            }\n            else {\n                options.style.lineClamp = Math.floor(innerArcLength / 16) || 1;\n            }\n        }\n        // Apply padding (#8515)\n        options.style.width = Math.max(options.style.width - 2 * (options.padding || 0), 1);\n        rotation = (rotationRad * rad2deg) % 180;\n        if (rotationMode === 'parallel') {\n            rotation -= 90;\n        }\n        // Prevent text from rotating upside down\n        if (rotation > 90) {\n            rotation -= 180;\n        }\n        else if (rotation < -90) {\n            rotation += 180;\n        }\n        options.rotation = rotation;\n    }\n    if (options.textPath) {\n        if (point.shapeExisting.innerR === 0 &&\n            options.textPath.enabled) {\n            // Enable rotation to render text\n            options.rotation = 0;\n            // Center dataLabel - disable textPath\n            options.textPath.enabled = false;\n            // Setting width and padding\n            options.style.width = Math.max((point.shapeExisting.r * 2) -\n                2 * (options.padding || 0), 1);\n        }\n        else if (point.dlOptions &&\n            point.dlOptions.textPath &&\n            !point.dlOptions.textPath.enabled &&\n            (rotationMode === 'circular')) {\n            // Bring dataLabel back if was a center dataLabel\n            options.textPath.enabled = true;\n        }\n        if (options.textPath.enabled) {\n            // Enable rotation to render text\n            options.rotation = 0;\n            // Setting width and padding\n            options.style.width = Math.max((point.outerArcLength +\n                point.innerArcLength) / 2 -\n                2 * (options.padding || 0), 1);\n            options.style.whiteSpace = 'nowrap';\n        }\n    }\n    return options;\n}\n/** @private */\nfunction getAnimation(shape, params) {\n    var point = params.point,\n        radians = params.radians,\n        innerR = params.innerR,\n        idRoot = params.idRoot,\n        idPreviousRoot = params.idPreviousRoot,\n        shapeExisting = params.shapeExisting,\n        shapeRoot = params.shapeRoot,\n        shapePreviousRoot = params.shapePreviousRoot,\n        visible = params.visible;\n    var from = {},\n        to = {\n            end: shape.end,\n            start: shape.start,\n            innerR: shape.innerR,\n            r: shape.r,\n            x: shape.x,\n            y: shape.y\n        };\n    if (visible) {\n        // Animate points in\n        if (!point.graphic && shapePreviousRoot) {\n            if (idRoot === point.id) {\n                from = {\n                    start: radians.start,\n                    end: radians.end\n                };\n            }\n            else {\n                from = (shapePreviousRoot.end <= shape.start) ? {\n                    start: radians.end,\n                    end: radians.end\n                } : {\n                    start: radians.start,\n                    end: radians.start\n                };\n            }\n            // Animate from center and outwards.\n            from.innerR = from.r = innerR;\n        }\n    }\n    else {\n        // Animate points out\n        if (point.graphic) {\n            if (idPreviousRoot === point.id) {\n                to = {\n                    innerR: innerR,\n                    r: innerR\n                };\n            }\n            else if (shapeRoot) {\n                to = (shapeRoot.end <= shapeExisting.start) ?\n                    {\n                        innerR: innerR,\n                        r: innerR,\n                        start: radians.end,\n                        end: radians.end\n                    } : {\n                    innerR: innerR,\n                    r: innerR,\n                    start: radians.start,\n                    end: radians.start\n                };\n            }\n        }\n    }\n    return {\n        from: from,\n        to: to\n    };\n}\n/** @private */\nfunction getDrillId(point, idRoot, mapIdToNode) {\n    var node = point.node;\n    var drillId,\n        nodeRoot;\n    if (!node.isLeaf) {\n        // When it is the root node, the drillId should be set to parent.\n        if (idRoot === point.id) {\n            nodeRoot = mapIdToNode[idRoot];\n            drillId = nodeRoot.parent;\n        }\n        else {\n            drillId = point.id;\n        }\n    }\n    return drillId;\n}\n/** @private */\nfunction cbSetTreeValuesBefore(node, options) {\n    var mapIdToNode = options.mapIdToNode,\n        parent = node.parent,\n        nodeParent = parent ? mapIdToNode[parent] : void 0,\n        series = options.series,\n        chart = series.chart,\n        points = series.points,\n        point = points[node.i],\n        colors = series.options.colors || chart && chart.options.colors,\n        colorInfo = SunburstSeries_getColor(node, {\n            colors: colors,\n            colorIndex: series.colorIndex,\n            index: options.index,\n            mapOptionsToLevel: options.mapOptionsToLevel,\n            parentColor: nodeParent && nodeParent.color,\n            parentColorIndex: nodeParent && nodeParent.colorIndex,\n            series: options.series,\n            siblings: options.siblings\n        });\n    node.color = colorInfo.color;\n    node.colorIndex = colorInfo.colorIndex;\n    if (point) {\n        point.color = node.color;\n        point.colorIndex = node.colorIndex;\n        // Set slicing on node, but avoid slicing the top node.\n        node.sliced = (node.id !== options.idRoot) ? point.sliced : false;\n    }\n    return node;\n}\n/* *\n *\n *  Class\n *\n * */\nvar SunburstSeries = /** @class */ (function (_super) {\n    SunburstSeries_extends(SunburstSeries, _super);\n    function SunburstSeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    SunburstSeries.prototype.alignDataLabel = function (point, dataLabel, labelOptions) {\n        if (labelOptions.textPath && labelOptions.textPath.enabled) {\n            return;\n        }\n        return _super.prototype.alignDataLabel.apply(this, arguments);\n    };\n    /**\n     * Animate the slices in. Similar to the animation of polar charts.\n     * @private\n     */\n    SunburstSeries.prototype.animate = function (init) {\n        var chart = this.chart,\n            center = [\n                chart.plotWidth / 2,\n                chart.plotHeight / 2\n            ],\n            plotLeft = chart.plotLeft,\n            plotTop = chart.plotTop,\n            group = this.group;\n        var attribs;\n        // Initialize the animation\n        if (init) {\n            // Scale down the group and place it in the center\n            attribs = {\n                translateX: center[0] + plotLeft,\n                translateY: center[1] + plotTop,\n                scaleX: 0.001, // #1499\n                scaleY: 0.001,\n                rotation: 10,\n                opacity: 0.01\n            };\n            group.attr(attribs);\n            // Run the animation\n        }\n        else {\n            attribs = {\n                translateX: plotLeft,\n                translateY: plotTop,\n                scaleX: 1,\n                scaleY: 1,\n                rotation: 0,\n                opacity: 1\n            };\n            group.animate(attribs, this.options.animation);\n        }\n    };\n    SunburstSeries.prototype.drawPoints = function () {\n        var series = this,\n            mapOptionsToLevel = series.mapOptionsToLevel,\n            shapeRoot = series.shapeRoot,\n            group = series.group,\n            hasRendered = series.hasRendered,\n            idRoot = series.rootNode,\n            idPreviousRoot = series.idPreviousRoot,\n            nodeMap = series.nodeMap,\n            nodePreviousRoot = nodeMap[idPreviousRoot],\n            shapePreviousRoot = nodePreviousRoot && nodePreviousRoot.shapeArgs,\n            points = series.points,\n            radians = series.startAndEndRadians,\n            chart = series.chart,\n            optionsChart = chart && chart.options && chart.options.chart || {},\n            animation = (isBoolean(optionsChart.animation) ?\n                optionsChart.animation :\n                true),\n            positions = series.center,\n            center = {\n                x: positions[0],\n                y: positions[1]\n            },\n            innerR = positions[3] / 2,\n            renderer = series.chart.renderer,\n            hackDataLabelAnimation = !!(animation &&\n                hasRendered &&\n                idRoot !== idPreviousRoot &&\n                series.dataLabelsGroup);\n        var animateLabels,\n            animateLabelsCalled = false,\n            addedHack = false;\n        if (hackDataLabelAnimation) {\n            series.dataLabelsGroup.attr({ opacity: 0 });\n            animateLabels = function () {\n                var s = series;\n                animateLabelsCalled = true;\n                if (s.dataLabelsGroup) {\n                    s.dataLabelsGroup.animate({\n                        opacity: 1,\n                        visibility: 'inherit'\n                    });\n                }\n            };\n        }\n        for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n            var point = points_1[_i];\n            var node = point.node,\n                level = mapOptionsToLevel[node.level],\n                shapeExisting = (point.shapeExisting || {}),\n                shape = node.shapeArgs || {},\n                visible = !!(node.visible && node.shapeArgs);\n            var animationInfo = void 0,\n                onComplete = void 0;\n            // Border radius requires the border-radius.js module. Adding it\n            // here because the SunburstSeries is a mess and I can't find the\n            // regular shapeArgs. Usually shapeArgs are created in the series'\n            // `translate` function and then passed directly on to the renderer\n            // in the `drawPoints` function.\n            shape.borderRadius = series.options.borderRadius;\n            if (hasRendered && animation) {\n                animationInfo = getAnimation(shape, {\n                    center: center,\n                    point: point,\n                    radians: radians,\n                    innerR: innerR,\n                    idRoot: idRoot,\n                    idPreviousRoot: idPreviousRoot,\n                    shapeExisting: shapeExisting,\n                    shapeRoot: shapeRoot,\n                    shapePreviousRoot: shapePreviousRoot,\n                    visible: visible\n                });\n            }\n            else {\n                // When animation is disabled, attr is called from animation.\n                animationInfo = {\n                    to: shape,\n                    from: {}\n                };\n            }\n            SunburstSeries_extend(point, {\n                shapeExisting: shape, // Store for use in animation\n                tooltipPos: [shape.plotX, shape.plotY],\n                drillId: getDrillId(point, idRoot, nodeMap),\n                name: '' + (point.name || point.id || point.index),\n                plotX: shape.plotX, // Used for data label position\n                plotY: shape.plotY, // Used for data label position\n                value: node.val,\n                isInside: visible,\n                isNull: !visible // Used for dataLabels & point.draw\n            });\n            point.dlOptions = getDlOptions({\n                point: point,\n                level: level,\n                optionsPoint: point.options,\n                shapeArgs: shape\n            });\n            if (!addedHack && visible) {\n                addedHack = true;\n                onComplete = animateLabels;\n            }\n            point.draw({\n                animatableAttribs: animationInfo.to,\n                attribs: SunburstSeries_extend(animationInfo.from, (!chart.styledMode && series.pointAttribs(point, (point.selected && 'select')))),\n                onComplete: onComplete,\n                group: group,\n                renderer: renderer,\n                shapeType: 'arc',\n                shapeArgs: shape\n            });\n        }\n        // Draw data labels after points\n        // TODO draw labels one by one to avoid additional looping\n        if (hackDataLabelAnimation && addedHack) {\n            series.hasRendered = false;\n            series.options.dataLabels.defer = true;\n            SunburstSeries_ColumnSeries.prototype.drawDataLabels.call(series);\n            series.hasRendered = true;\n            // If animateLabels is called before labels were hidden, then call\n            // it again.\n            if (animateLabelsCalled) {\n                animateLabels();\n            }\n        }\n        else {\n            SunburstSeries_ColumnSeries.prototype.drawDataLabels.call(series);\n        }\n        series.idPreviousRoot = idRoot;\n    };\n    /**\n     * The layout algorithm for the levels.\n     * @private\n     */\n    SunburstSeries.prototype.layoutAlgorithm = function (parent, children, options) {\n        var startAngle = parent.start;\n        var range = parent.end - startAngle,\n            total = parent.val,\n            x = parent.x,\n            y = parent.y,\n            radius = ((options &&\n                SunburstSeries_isObject(options.levelSize) &&\n                SunburstSeries_isNumber(options.levelSize.value)) ?\n                options.levelSize.value :\n                0),\n            innerRadius = parent.r,\n            outerRadius = innerRadius + radius,\n            slicedOffset = options && SunburstSeries_isNumber(options.slicedOffset) ?\n                options.slicedOffset :\n                0;\n        return (children || []).reduce(function (arr, child) {\n            var percentage = (1 / total) * child.val, radians = percentage * range, radiansCenter = startAngle + (radians / 2), offsetPosition = getEndPoint(x, y, radiansCenter, slicedOffset), values = {\n                    x: child.sliced ? offsetPosition.x : x,\n                    y: child.sliced ? offsetPosition.y : y,\n                    innerR: innerRadius,\n                    r: outerRadius,\n                    radius: radius,\n                    start: startAngle,\n                    end: startAngle + radians\n                };\n            arr.push(values);\n            startAngle = values.end;\n            return arr;\n        }, []);\n    };\n    SunburstSeries.prototype.setRootNode = function (id, redraw, eventArguments) {\n        var series = this;\n        if ( // If the target node is the only one at level 1, skip it. (#18658)\n        series.nodeMap[id].level === 1 &&\n            series.nodeList\n                .filter(function (node) { return node.level === 1; })\n                .length === 1) {\n            if (series.idPreviousRoot === '') {\n                return;\n            }\n            id = '';\n        }\n        _super.prototype.setRootNode.call(this, id, redraw, eventArguments);\n    };\n    /**\n     * Set the shape arguments on the nodes. Recursive from root down.\n     * @private\n     */\n    SunburstSeries.prototype.setShapeArgs = function (parent, parentValues, mapOptionsToLevel) {\n        var level = parent.level + 1,\n            options = mapOptionsToLevel[level], \n            // Collect all children which should be included\n            children = parent.children.filter(function (n) {\n                return n.visible;\n        }), twoPi = 6.28; // Two times Pi.\n        var childrenValues = [];\n        childrenValues = this.layoutAlgorithm(parentValues, children, options);\n        var i = -1;\n        for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n            var child = children_1[_i];\n            var values = childrenValues[++i], angle = values.start + ((values.end - values.start) / 2), radius = values.innerR + ((values.r - values.innerR) / 2), radians = (values.end - values.start), isCircle = (values.innerR === 0 && radians > twoPi), center = (isCircle ?\n                    { x: values.x, y: values.y } :\n                    getEndPoint(values.x, values.y, angle, radius)), val = (child.val ?\n                    (child.childrenTotal > child.val ?\n                        child.childrenTotal :\n                        child.val) :\n                    child.childrenTotal);\n            // The inner arc length is a convenience for data label filters.\n            if (this.points[child.i]) {\n                this.points[child.i].innerArcLength = radians * values.innerR;\n                this.points[child.i].outerArcLength = radians * values.r;\n            }\n            child.shapeArgs = SunburstSeries_merge(values, {\n                plotX: center.x,\n                plotY: center.y\n            });\n            child.values = SunburstSeries_merge(values, {\n                val: val\n            });\n            // If node has children, then call method recursively\n            if (child.children.length) {\n                this.setShapeArgs(child, child.values, mapOptionsToLevel);\n            }\n        }\n    };\n    SunburstSeries.prototype.translate = function () {\n        var series = this, options = series.options, positions = series.center = series.getCenter(), radians = series.startAndEndRadians = getStartAndEndRadians(options.startAngle, options.endAngle), innerRadius = positions[3] / 2, outerRadius = positions[2] / 2, diffRadius = outerRadius - innerRadius, \n            // NOTE: updateRootId modifies series.\n            rootId = SunburstSeries_updateRootId(series);\n        var mapIdToNode = series.nodeMap,\n            mapOptionsToLevel,\n            nodeRoot = mapIdToNode && mapIdToNode[rootId],\n            nodeIds = {};\n        series.shapeRoot = nodeRoot && nodeRoot.shapeArgs;\n        series.generatePoints();\n        SunburstSeries_fireEvent(series, 'afterTranslate');\n        // @todo Only if series.isDirtyData is true\n        var tree = series.tree = series.getTree();\n        // Render traverseUpButton, after series.nodeMap i calculated.\n        mapIdToNode = series.nodeMap;\n        nodeRoot = mapIdToNode[rootId];\n        var idTop = SunburstSeries_isString(nodeRoot.parent) ? nodeRoot.parent : '',\n            nodeTop = mapIdToNode[idTop],\n            _a = Sunburst_SunburstUtilities.getLevelFromAndTo(nodeRoot),\n            from = _a.from,\n            to = _a.to;\n        mapOptionsToLevel = SunburstSeries_getLevelOptions({\n            from: from,\n            levels: series.options.levels,\n            to: to,\n            defaults: {\n                colorByPoint: options.colorByPoint,\n                dataLabels: options.dataLabels,\n                levelIsConstant: options.levelIsConstant,\n                levelSize: options.levelSize,\n                slicedOffset: options.slicedOffset\n            }\n        });\n        // NOTE consider doing calculateLevelSizes in a callback to\n        // getLevelOptions\n        mapOptionsToLevel = Sunburst_SunburstUtilities.calculateLevelSizes(mapOptionsToLevel, {\n            diffRadius: diffRadius,\n            from: from,\n            to: to\n        });\n        // TODO Try to combine setTreeValues & setColorRecursive to avoid\n        //  unnecessary looping.\n        SunburstSeries_setTreeValues(tree, {\n            before: cbSetTreeValuesBefore,\n            idRoot: rootId,\n            levelIsConstant: options.levelIsConstant,\n            mapOptionsToLevel: mapOptionsToLevel,\n            mapIdToNode: mapIdToNode,\n            points: series.points,\n            series: series\n        });\n        var values = mapIdToNode[''].shapeArgs = {\n                end: radians.end,\n                r: innerRadius,\n                start: radians.start,\n                val: nodeRoot.val,\n                x: positions[0],\n                y: positions[1]\n            };\n        this.setShapeArgs(nodeTop, values, mapOptionsToLevel);\n        // Set mapOptionsToLevel on series for use in drawPoints.\n        series.mapOptionsToLevel = mapOptionsToLevel;\n        // #10669 - verify if all nodes have unique ids\n        for (var _i = 0, _b = series.points; _i < _b.length; _i++) {\n            var point = _b[_i];\n            if (nodeIds[point.id]) {\n                SunburstSeries_error(31, false, series.chart);\n            }\n            // Map\n            nodeIds[point.id] = true;\n        }\n        // Reset object\n        nodeIds = {};\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    SunburstSeries.defaultOptions = SunburstSeries_merge(SunburstSeries_TreemapSeries.defaultOptions, Sunburst_SunburstSeriesDefaults);\n    return SunburstSeries;\n}(SunburstSeries_TreemapSeries));\nSunburstSeries_extend(SunburstSeries.prototype, {\n    axisTypes: [],\n    drawDataLabels: SunburstSeries_noop, // `drawDataLabels` is called in `drawPoints`\n    getCenter: getCenter,\n    isCartesian: false,\n    // Mark that the sunburst is supported by the series on point feature.\n    onPointSupported: true,\n    pointAttribs: SunburstSeries_ColumnSeries.prototype.pointAttribs,\n    pointClass: Sunburst_SunburstPoint,\n    NodeClass: Sunburst_SunburstNode,\n    utils: Sunburst_SunburstUtilities\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('sunburst', SunburstSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sunburst_SunburstSeries = ((/* unused pure expression or super */ null && (SunburstSeries)));\n\n;// ./code/es5/es-modules/masters/modules/sunburst.src.js\n\n\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.Breadcrumbs = G.Breadcrumbs || Breadcrumbs_Breadcrumbs;\nG.Breadcrumbs.compose(G.Chart, G.defaultOptions);\n/* harmony default export */ var sunburst_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__984__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__820__","extendStatics","CenteredUtilities","ColorMapComposition","TreemapUtilities","__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__","sunburst_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","Breadcrumbs_BreadcrumbsDefaults","lang","mainBreadcrumb","options","buttonTheme","fill","height","padding","zIndex","states","select","style","color","buttonSpacing","floating","format","relativeTo","rtl","position","align","verticalAlign","x","y","separator","text","fontSize","showFullPath","useHTML","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","composed","addEvent","defined","extend","fireEvent","isString","merge","objectEach","pick","pushUnique","onChartAfterShowResetZoom","chart","breadcrumbs","bbox","resetZoomButton","getBBox","breadcrumbsOptions","alignBreadcrumbsGroup","width","onChartDestroy","destroy","onChartGetMargins","level","breadcrumbsHeight","marginBottom","yOffset","plotTop","onChartRedraw","redraw","onChartSelection","event","resetSelection","Breadcrumbs","userOptions","elementList","isDirty","list","chartOptions","drilldown","drillUpButton","defaultOptions","navigation","compose","ChartClass","highchartsDefaultOptions","updateProperties","setList","setLevel","length","getLevel","getButtonText","breadcrumb","textFormat","defaultText","drillUpText","returnText","formatter","levelOptions","render","group","renderer","g","addClass","attr","add","renderFullPathButtons","renderSingleButton","destroySingleButton","resetElementListState","updateListElements","destroyListElements","posX","previousBreadcrumb","renderButton","updateSingleButton","xOffset","positionOptions","alignTo","bBox","additionalSpace","newPositions","posY","button","e","callDefaultEvent","buttonEvents","events","click","newLevel","styledMode","renderSeparator","separatorOptions","label","css","update","currentBreadcrumb","force","element","updated","rtlFactor","updateXPosition","spacing","adjustToRTL","translate","i","iEnd","isLast","setState","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","highcharts_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","series","point","moveToTopOnHover","graphic","stateMarkerGraphic","pointerEvents","parentGroup","state","id","href","url","concat","visibility","pointMembers","dataLabelOnNull","isValid","value","Infinity","isNaN","seriesMembers","colorKey","axisTypes","parallelArrays","pointArrayMap","trackerGroups","colorAttribs","ret","colorProp","pointAttribs","SeriesClass","pointClass","Series_ColorMapComposition","TreemapAlgorithmGroup","h","w","p","plot","direction","startDirection","total","nW","lW","nH","lH","elArr","lP","nR","lR","aspectRatio","Math","max","addElement","el","push","reset","TreemapNode","childrenTotal","visible","init","children","parent","__assign","assign","t","s","arguments","apply","params","animatableAttribs","onComplete","animation","hasRendered","attribs","getClassName","shouldDraw","shapeType","image","imageUrl","shapeArgs","animate","isNew","destroy_1","keys","__extends","b","setPrototypeOf","__proto__","Array","__","constructor","create","_a","PiePoint","pie","ScatterPoint","scatter","TreemapPoint_extend","isNumber","TreemapPoint_pick","TreemapPoint","_super","_this","groupedPointsAmount","draw","Series_DrawPointUtilities","className","node","nodeMap","rootNode","isGroup","isLeaf","interactByLeaf","allowTraversingTree","Boolean","plotY","setVisible","TreemapSeriesDefaults_isString","TreemapSeriesDefaults","animationLimit","borderRadius","showInLegend","marker","colorByPoint","dataLabels","defer","enabled","name","inside","textOverflow","tooltip","headerFormat","pointFormat","clusterFormat","ignoreHiddenPoint","layoutAlgorithm","layoutStartingDirection","alternateStartingDirection","levelIsConstant","traverseUpButton","borderColor","borderWidth","opacity","hover","brightness","heatmap","halo","shadow","legendSymbol","traverseToLeaf","cluster","pixelWidth","pixelHeight","reductionFactor","minimumClusterSize","distance","gridSize","kmeansThreshold","lineWidth","radius","recursive","item","func","context","next","Treemap_TreemapUtilities","TreeUtilities_extend","isArray","TreeUtilities_isNumber","isObject","TreeUtilities_merge","TreeUtilities_pick","relativeLength","colorVariation","colorIndexByPoint","colorIndex","index","mapOptionsToLevel","parentColor","parentColorIndex","colors","siblings","points","chartOptionsChart","colorCount","parse","brighten","to","defaults","converted","from","levels","result","reduce","setTreeValues","tree","before","idRoot","nodeRoot","mapIdToNode","optionsPoint","levelDynamic","forEach","child","newOptions","val","rootId","TreemapSeries_extends","TypeError","String","TreemapSeries_composed","noop","TreemapSeries_a","ColumnSeries","ScatterSeries","TreemapSeries_addEvent","correctFloat","crisp","TreemapSeries_defined","error","TreemapSeries_extend","TreemapSeries_fireEvent","TreemapSeries_isArray","TreemapSeries_isObject","TreemapSeries_isString","TreemapSeries_merge","TreemapSeries_pick","TreemapSeries_pushUnique","splat","stableSort","treemapAxisDefaultValues","onSeriesAfterBindAxes","treeAxis","xAxis","yAxis","is","endOnTick","gridLineWidth","min","minPadding","maxPadding","startOnTick","title","tickPositions","setOptions","TreemapSeries","algorithmCalcPoints","directionChange","last","childrenArea","pX","pY","pW","pH","keep","end","gW","gH","_i","algorithmFill","pTot","children_1","algorithmLowAspectRatio","children_2","alignDataLabel","dataLabel","labelOptions","applyTreeGrouping","parentList","parentGroups_1","checkIfHide_1","_b","_c","_d","_e","_f","compareHeight","thresholdArea","area","_loop_1","parent_1","indexOf","splice","id_1","groupPoint","find","PointClass","pointIndex","formatPrefix","amount","name_1","nodeList","buildTree","calculateChildrenAreas","algorithm","alternate","filter","ignore","childrenValues","children_3","values","pointValues","axisRatio","axisMax","createList","currentLevelNumber","target","newRootId","extraNodes","reverse","node_1","drawDataLabels","points_1","hasDataLabels","lineClamp","floor","dlOptions","drawPoints","withinAnimationLimit","pointCount","points_2","groupKey","hasGraphic","shouldAnimate","isInside","r","selected","survive","drillId","drillToByLeaf","drillToByGroup","nodeParent","drillToNode","setRootNode","drillUp","trigger","getExtremes","colorValueData","dataMin","dataMax","valueMin","valueMax","getListOfParents","data","existingIds","arr","ids","listOfParents","prev","curr","parent_2","children_4","getTree","allIds","map","NodeClass","children_5","child_1","parentNode","hasData","dataTable","rowCount","setOptionsEvent","allowDrillToNode","eventsToUnbind","onClickDrillToNode","keepEventsForUpdate","drillUpsNumber","stateOptions","borderDashStyle","setOpacity","cursor","setColorRecursive","colorInfo","TreemapSeries_getColor","setPointValues","points_3","strokeWidth","x1","toPixels","x2","y1","y2","abs","plotX","eventArguments","previousRootId","args","idPreviousRoot","inactiveOtherPoints","sortIndex","sliceAndDice","squarified","strip","stripes","seriesArea","applyGrouping","TreemapSeries_updateRootId","startsWith","TreemapSeries_getLevelOptions","children_6","len","colorAxis","setExtremes","setScale","buildKDTree","directTouch","getExtremesFromAll","getSymbol","optionalAxis","utils","registerSeriesType","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","start","startAngle","endAngle","Series_CenteredUtilities","SunburstPoint_extends","Point","SunburstPoint_TreemapPoint","treemap","SunburstPoint_correctFloat","SunburstPoint_extend","pInt","SunburstPoint","getDataLabelPath","moreThanHalf","shapeExisting","angle","upperHalf","PI","dataLabelPath","arc","open","longArc","clockwise","innerR","defs","haloPath","SunburstUtilities_TreemapSeries","SunburstUtilities_isNumber","SunburstUtilities_isObject","SunburstUtilities_merge","range","SunburstUtilities","calculateLevelSizes","diffRadius","levelsNotIncluded","remainingSize","totalWeight","levels_1","unit","levelSize","levels_2","weight","levelsNotIncluded_1","getLevelFromAndTo","SunburstNode_extends","SunburstNode","Sunburst_SunburstSeriesDefaults","clip","allowOverlap","rotationMode","TextPath_deg2rad","TextPath_addEvent","TextPath_merge","uniqueKey","TextPath_defined","TextPath_extend","setTextPath","path","textPathOptions","attributes","dy","startOffset","textAnchor","textWrapper","textPath","undo","textPathId","textAttribs","dx","transform","box","nodes","slice","tagName","added","textCache","buildText","setPolygon","tp","querySelector","polygon","fontMetrics","b_1","descender_1","lineCleanerRegex","RegExp","lines","innerHTML","replace","split","numOfLines","appendTopAndBottom","charIndex","positionOfChar","rotation","getRotationOfChar","cosRot","cos","sinRot","sin","lineIndex","lineLen","line","lineCharIndex","srcCharIndex","getStartPositionOfChar","lower","upper","unshift","charPos","getEndPositionOfChar","drawTextPath","SunburstSeries_extends","SunburstSeries_noop","SunburstSeries_a","SunburstSeries_ColumnSeries","SunburstSeries_TreemapSeries","SunburstSeries_defined","SunburstSeries_error","SunburstSeries_extend","SunburstSeries_fireEvent","SunburstSeries_isNumber","SunburstSeries_isObject","SunburstSeries_isString","SunburstSeries_merge","SunburstSeries_splat","Extensions_TextPath","SVGElementClass","svgElementProto","rad2deg","getEndPoint","cbSetTreeValuesBefore","SunburstSeries_getColor","sliced","SunburstSeries","plotLeft","translateX","translateY","scaleX","scaleY","animateLabels","shapeRoot","nodePreviousRoot","shapePreviousRoot","radians","startAndEndRadians","optionsChart","isBoolean","hackDataLabelAnimation","dataLabelsGroup","animateLabelsCalled","addedHack","shape","animationInfo","getAnimation","tooltipPos","getDrillId","isNull","getDlOptions","rotationRad","innerArcLength","outerArcLength","whiteSpace","innerRadius","outerRadius","percentage","offsetPosition","setShapeArgs","parentValues","isCircle","SunburstSeries_updateRootId","nodeIds","generatePoints","idTop","nodeTop","Sunburst_SunburstUtilities","SunburstSeries_getLevelOptions","SunburstSeries_setTreeValues","isCartesian","onPointSupported","G","Chart"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox