Hacked By AnonymousFox

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

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/treemap\n * @requires highcharts\n *\n * (c) 2014-2024 Highsoft AS\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"SVGElement\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/treemap\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"Templating\"],amd1[\"Color\"],amd1[\"SeriesRegistry\"],amd1[\"SVGElement\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/treemap\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"SVGElement\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"SVGElement\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__28__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 28:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 512:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 984:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ treemap_src)\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es-modules/Extensions/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 */\nconst 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 */\nconst 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 * */\nconst BreadcrumbsDefaults = {\n    lang,\n    options\n};\n/* harmony default export */ const 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/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\nconst { format } = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default());\n\nconst { composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent, defined, extend, fireEvent, isString, merge, objectEach, pick, pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Shift the drillUpButton to make the space for resetZoomButton, #8095.\n * @private\n */\nfunction onChartAfterShowResetZoom() {\n    const chart = this;\n    if (chart.breadcrumbs) {\n        const bbox = chart.resetZoomButton &&\n            chart.resetZoomButton.getBBox(), 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    const breadcrumbs = this.breadcrumbs;\n    if (breadcrumbs &&\n        !breadcrumbs.options.floating &&\n        breadcrumbs.level) {\n        const breadcrumbsOptions = breadcrumbs.options, buttonTheme = breadcrumbsOptions.buttonTheme, breadcrumbsHeight = ((buttonTheme.height || 0) +\n            2 * (buttonTheme.padding || 0) +\n            breadcrumbsOptions.buttonSpacing), 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 */\nclass Breadcrumbs {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    static compose(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     *  Constructor\n     *\n     * */\n    constructor(chart, userOptions) {\n        this.elementList = {};\n        this.isDirty = true;\n        this.level = 0;\n        this.list = [];\n        const chartOptions = merge(chart.options.drilldown &&\n            chart.options.drilldown.drillUpButton, Breadcrumbs.defaultOptions, chart.options.navigation && chart.options.navigation.breadcrumbs, userOptions);\n        this.chart = chart;\n        this.options = chartOptions || {};\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    updateProperties(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    setList(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    setLevel() {\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    getLevel() {\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    getButtonText(breadcrumb) {\n        const breadcrumbs = this, chart = breadcrumbs.chart, breadcrumbsOptions = breadcrumbs.options, lang = chart.options.lang, textFormat = pick(breadcrumbsOptions.format, breadcrumbsOptions.showFullPath ?\n            '{level.name}' : '← {level.name}'), defaultText = lang && pick(lang.drillUpText, lang.mainBreadcrumb);\n        let returnText = breadcrumbsOptions.formatter &&\n            breadcrumbsOptions.formatter(breadcrumb) ||\n            format(textFormat, { level: breadcrumb.levelOptions }, 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    redraw() {\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    render() {\n        const breadcrumbs = this, chart = breadcrumbs.chart, 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    renderFullPathButtons() {\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    renderSingleButton() {\n        const breadcrumbs = this, chart = breadcrumbs.chart, list = breadcrumbs.list, breadcrumbsOptions = breadcrumbs.options, 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        const posX = breadcrumbs.group ?\n            breadcrumbs.group.getBBox().width :\n            buttonSpacing, posY = buttonSpacing;\n        const 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    alignBreadcrumbsGroup(xOffset) {\n        const breadcrumbs = this;\n        if (breadcrumbs.group) {\n            const breadcrumbsOptions = breadcrumbs.options, buttonTheme = breadcrumbsOptions.buttonTheme, positionOptions = breadcrumbsOptions.position, alignTo = (breadcrumbsOptions.relativeTo === 'chart' ||\n                breadcrumbsOptions.relativeTo === 'spacingBox' ?\n                void 0 :\n                'plotBox'), bBox = breadcrumbs.group.getBBox(), additionalSpace = 2 * (buttonTheme.padding || 0) +\n                breadcrumbsOptions.buttonSpacing;\n            // Store positionOptions\n            positionOptions.width = bBox.width + additionalSpace;\n            positionOptions.height = bBox.height + additionalSpace;\n            const 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    renderButton(breadcrumb, posX, posY) {\n        const breadcrumbs = this, chart = this.chart, breadcrumbsOptions = breadcrumbs.options, buttonTheme = merge(breadcrumbsOptions.buttonTheme);\n        const button = chart.renderer\n            .button(breadcrumbs.getButtonText(breadcrumb), posX, posY, function (e) {\n            // Extract events from button object and call\n            const buttonEvents = breadcrumbsOptions.events &&\n                breadcrumbsOptions.events.click;\n            let 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    renderSeparator(posX, posY) {\n        const breadcrumbs = this, chart = this.chart, breadcrumbsOptions = breadcrumbs.options, separatorOptions = breadcrumbsOptions.separator;\n        const separator = chart.renderer\n            .label(separatorOptions.text, posX, posY, void 0, void 0, void 0, 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    update(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    updateSingleButton() {\n        const chart = this.chart, 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    destroy() {\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    destroyListElements(force) {\n        const elementList = this.elementList;\n        objectEach(elementList, (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    destroySingleButton() {\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    resetElementListState() {\n        objectEach(this.elementList, (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    updateListElements() {\n        const breadcrumbs = this, elementList = breadcrumbs.elementList, buttonSpacing = breadcrumbs.options.buttonSpacing, posY = buttonSpacing, list = breadcrumbs.list, rtl = breadcrumbs.options.rtl, rtlFactor = rtl ? -1 : 1, updateXPosition = function (element, 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        let posX = breadcrumbs.group ?\n            updateXPosition(breadcrumbs.group, buttonSpacing) :\n            buttonSpacing, currentBreadcrumb, breadcrumb;\n        for (let i = 0, iEnd = list.length; i < iEnd; ++i) {\n            const isLast = i === iEnd - 1;\n            let button, separator;\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,\n                    separator,\n                    updated: true\n                };\n            }\n            if (button) {\n                button.setState(isLast ? 2 : 0);\n            }\n        }\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\nBreadcrumbs.defaultOptions = Breadcrumbs_BreadcrumbsDefaults.options;\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const 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/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\nconst { column: { prototype: columnProto } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\n\nconst { addEvent: ColorMapComposition_addEvent, defined: ColorMapComposition_defined } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\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        const 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        const point = this, series = point.series, 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?.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}#${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        const 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 */ const Series_ColorMapComposition = (ColorMapComposition);\n\n;// ./code/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 * */\nclass TreemapAlgorithmGroup {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(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    addElement(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    reset() {\n        this.nW = 0;\n        this.lW = 0;\n        this.elArr = [];\n        this.total = 0;\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapAlgorithmGroup = (TreemapAlgorithmGroup);\n\n;// ./code/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 * */\nclass TreemapNode {\n    constructor() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.childrenTotal = 0;\n        this.visible = false;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    init(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}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapNode = (TreemapNode);\n\n;// ./code/es-modules/Series/DrawPointUtilities.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\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    const { animatableAttribs, onComplete, css, renderer } = params;\n    const 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    let graphic = point.graphic;\n    params.attribs = {\n        ...params.attribs,\n        'class': point.getClassName()\n    } || {};\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        const destroy = () => {\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, () => destroy());\n        }\n        else {\n            destroy();\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst DrawPointUtilities = {\n    draw\n};\n/* harmony default export */ const Series_DrawPointUtilities = (DrawPointUtilities);\n\n;// ./code/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\n\n\nconst { pie: { prototype: { pointClass: PiePoint } }, scatter: { prototype: { pointClass: ScatterPoint } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { extend: TreemapPoint_extend, isNumber, pick: TreemapPoint_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\nclass TreemapPoint extends ScatterPoint {\n    constructor() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        super(...arguments);\n        this.groupedPointsAmount = 0;\n        this.shapeType = 'rect';\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    draw(params) {\n        Series_DrawPointUtilities.draw(this, params);\n    }\n    getClassName() {\n        const series = this.series, options = series.options;\n        let className = super.getClassName();\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    isValid() {\n        return Boolean(this.id || isNumber(this.value));\n    }\n    setState(state) {\n        super.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    shouldDraw() {\n        return isNumber(this.plotY) && this.y !== null;\n    }\n}\nTreemapPoint_extend(TreemapPoint.prototype, {\n    setVisible: PiePoint.prototype.setVisible\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treemap_TreemapPoint = (TreemapPoint);\n\n;// ./code/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\nconst { isString: TreemapSeriesDefaults_isString } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\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 */\nconst 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            const point = this && this.point ?\n                this.point :\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 */ const Treemap_TreemapSeriesDefaults = (TreemapSeriesDefaults);\n\n;// ./code/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        const next = func.call(context || this, 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 */ const Treemap_TreemapUtilities = (TreemapUtilities);\n\n;// ./code/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\nconst { extend: TreeUtilities_extend, isArray, isNumber: TreeUtilities_isNumber, isObject, merge: TreeUtilities_merge, pick: TreeUtilities_pick, relativeLength } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getColor(node, options) {\n    const index = options.index, mapOptionsToLevel = options.mapOptionsToLevel, parentColor = options.parentColor, parentColorIndex = options.parentColorIndex, series = options.series, colors = options.colors, siblings = options.siblings, points = series.points, chartOptionsChart = series.chart.options.chart;\n    let getColorByPoint, point, level, colorByPoint, colorIndexByPoint, color, colorIndex;\n    /**\n     * @private\n     */\n    const variateColor = (color) => {\n        const 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    const result = {};\n    let defaults, converted, i, from, to, 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((obj, item) => {\n                let level, levelIsConstant, 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    const before = options.before, idRoot = options.idRoot, mapIdToNode = options.mapIdToNode, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (options.levelIsConstant !== false), points = options.points, point = points[tree.i], optionsPoint = point && point.options || {}, children = [];\n    let 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((child, i) => {\n        const newOptions = TreeUtilities_extend({}, 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    const value = TreeUtilities_pick(optionsPoint.value, 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    let rootId, 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    const { chart, options } = series, { nodeDistance = 0, nodeWidth = 0 } = options, { plotSizeX = 1 } = chart;\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            const fraction = parseFloat(nodeDistance) / 100, total = columnCount + fraction * (columnCount - 1);\n            return plotSizeX / total;\n        }\n        const 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 * */\nconst TreeUtilities = {\n    getColor,\n    getLevelOptions,\n    getNodeWidth,\n    setTreeValues,\n    updateRootId\n};\n/* harmony default export */ const Series_TreeUtilities = (TreeUtilities);\n\n;// ./code/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\n\n\nconst { parse: color } = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default());\n\n\nconst { composed: TreemapSeries_composed, noop } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { column: ColumnSeries, scatter: ScatterSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\n\n\n\n\n\nconst { getColor: TreemapSeries_getColor, getLevelOptions: TreemapSeries_getLevelOptions, updateRootId: TreemapSeries_updateRootId } = Series_TreeUtilities;\n\nconst { addEvent: TreemapSeries_addEvent, correctFloat, crisp, defined: TreemapSeries_defined, error, extend: TreemapSeries_extend, fireEvent: TreemapSeries_fireEvent, isArray: TreemapSeries_isArray, isObject: TreemapSeries_isObject, isString: TreemapSeries_isString, merge: TreemapSeries_merge, pick: TreemapSeries_pick, pushUnique: TreemapSeries_pushUnique, splat, stableSort } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Constants\n *\n * */\nconst axisMax = 100;\n/* *\n *\n *  Variables\n *\n * */\nlet treemapAxisDefaultValues = false;\n/* *\n *\n *  Functions\n *\n * */\n/** @private */\nfunction onSeriesAfterBindAxes() {\n    const series = this, xAxis = series.xAxis, yAxis = series.yAxis;\n    let 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 */\nclass TreemapSeries extends ScatterSeries {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    static compose(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    algorithmCalcPoints(directionChange, last, group, childrenArea) {\n        const plot = group.plot, end = group.elArr.length - 1;\n        let pX, pY, pW, pH, gW = group.lW, gH = group.lH, keep, i = 0;\n        if (last) {\n            gW = group.nW;\n            gH = group.nH;\n        }\n        else {\n            keep = group.elArr[end];\n        }\n        for (const p of group.elArr) {\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    algorithmFill(directionChange, parent, children) {\n        const childrenArea = [];\n        let pTot, direction = parent.direction, x = parent.x, y = parent.y, width = parent.width, height = parent.height, pX, pY, pW, pH;\n        for (const child of children) {\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    algorithmLowAspectRatio(directionChange, parent, children) {\n        const series = this, childrenArea = [], plot = {\n            x: parent.x,\n            y: parent.y,\n            parent: parent\n        }, direction = parent.direction, end = children.length - 1, group = new Treemap_TreemapAlgorithmGroup(parent.height, parent.width, direction, plot);\n        let pTot, i = 0;\n        // Loop through and calculate all areas\n        for (const child of children) {\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    alignDataLabel(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    applyTreeGrouping() {\n        const series = this, parentList = series.parentList || {}, { cluster } = series.options, minimumClusterSize = cluster?.minimumClusterSize || 5;\n        if (cluster?.enabled) {\n            const parentGroups = {};\n            const checkIfHide = (node) => {\n                if (node?.point?.shapeArgs) {\n                    const { width = 0, height = 0 } = node.point.shapeArgs, area = width * height;\n                    const { pixelWidth = 0, pixelHeight = 0 } = cluster, compareHeight = TreemapSeries_defined(pixelHeight), 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[node.parent]) {\n                                parentGroups[node.parent] = [];\n                            }\n                            parentGroups[node.parent].push(node);\n                        }\n                    }\n                }\n                node?.children.forEach((child) => {\n                    checkIfHide(child);\n                });\n            };\n            checkIfHide(series.tree);\n            for (const parent in parentGroups) {\n                if (parentGroups[parent]) {\n                    if (parentGroups[parent].length > minimumClusterSize) {\n                        parentGroups[parent].forEach((node) => {\n                            const index = parentList[parent].indexOf(node.i);\n                            if (index !== -1) {\n                                parentList[parent].splice(index, 1);\n                                const id = `highcharts-grouped-treemap-points-${node.parent || 'root'}`;\n                                let groupPoint = series.points\n                                    .find((p) => p.id === id);\n                                if (!groupPoint) {\n                                    const PointClass = series.pointClass, pointIndex = series.points.length;\n                                    groupPoint = new PointClass(series, {\n                                        className: cluster.className,\n                                        color: cluster.color,\n                                        id,\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].push(pointIndex);\n                                    parentList[id] = [];\n                                }\n                                const amount = groupPoint.groupedPointsAmount + 1, val = series.points[groupPoint.index]\n                                    .options.value || 0, name = cluster.name ||\n                                    `+ ${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;\n                                parentList[id].push(node.point.index);\n                            }\n                        });\n                    }\n                }\n            }\n            series.nodeMap = {};\n            series.nodeList = [];\n            series.parentList = parentList;\n            const tree = series.buildTree('', -1, 0, 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    calculateChildrenAreas(parent, area) {\n        const series = this, options = series.options, mapOptionsToLevel = series.mapOptionsToLevel, level = mapOptionsToLevel[parent.level + 1], algorithm = TreemapSeries_pick((level?.layoutAlgorithm &&\n            series[level?.layoutAlgorithm] &&\n            level.layoutAlgorithm), series.options.layoutAlgorithm), alternate = options.alternateStartingDirection, \n        // Collect all children which should be included\n        children = parent.children.filter((n) => parent.isGroup || !n.ignore);\n        if (!algorithm) {\n            return;\n        }\n        let childrenValues = [];\n        if (level && level.layoutStartingDirection) {\n            area.direction = level.layoutStartingDirection === 'vertical' ?\n                0 :\n                1;\n        }\n        childrenValues = series[algorithm](area, children);\n        let i = -1;\n        for (const child of children) {\n            const 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    createList(e) {\n        const chart = this.chart, breadcrumbs = chart.breadcrumbs, list = [];\n        if (breadcrumbs) {\n            let currentLevelNumber = 0;\n            list.push({\n                level: currentLevelNumber,\n                levelOptions: chart.series[0]\n            });\n            let node = e.target.nodeMap[e.newRootId];\n            const 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 (const node of extraNodes.reverse()) {\n                list.push({\n                    level: ++currentLevelNumber,\n                    levelOptions: node\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    drawDataLabels() {\n        const series = this, mapOptionsToLevel = series.mapOptionsToLevel, points = series.points.filter(function (n) {\n            return n.node.visible || TreemapSeries_defined(n.dataLabel);\n        }), padding = splat(series.options.dataLabels || {})[0]?.padding;\n        let options, level;\n        for (const point of points) {\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 = () => true;\n            }\n            // Set dataLabel width to the width of the point shape minus the\n            // padding\n            if (point.shapeArgs) {\n                const 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                point.dataLabel?.css(css);\n            }\n            // Merge custom options with point options\n            point.dlOptions = TreemapSeries_merge(options, point.options.dataLabels);\n        }\n        super.drawDataLabels(points);\n    }\n    /**\n     * Override drawPoints\n     * @private\n     */\n    drawPoints(points = this.points) {\n        const series = this, chart = series.chart, renderer = chart.renderer, styledMode = chart.styledMode, options = series.options, shadow = styledMode ? {} : options.shadow, borderRadius = options.borderRadius, withinAnimationLimit = chart.pointCount < options.animationLimit, allowTraversingTree = options.allowTraversingTree;\n        for (const point of points) {\n            const levelDynamic = point.node.levelDynamic, animatableAttribs = {}, attribs = {}, css = {}, groupKey = 'level-group-' + point.node.level, hasGraphic = !!point.graphic, shouldAnimate = withinAnimationLimit && hasGraphic, 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,\n                attribs,\n                css,\n                group: series[groupKey],\n                imageUrl: point.imageUrl,\n                renderer,\n                shadow,\n                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    drillToByGroup(point) {\n        let 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    drillToByLeaf(point) {\n        const { traverseToLeaf } = point.series.options;\n        let drillId = false, 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    drillToNode(id, redraw) {\n        error(32, false, void 0, { 'treemap.drillToNode': 'use treemap.setRootNode' });\n        this.setRootNode(id, redraw);\n    }\n    drillUp() {\n        const series = this, node = series.nodeMap[series.rootNode];\n        if (node && TreemapSeries_isString(node.parent)) {\n            series.setRootNode(node.parent, true, { trigger: 'traverseUpButton' });\n        }\n    }\n    getExtremes() {\n        // Get the extremes from the value data\n        const { dataMin, dataMax } = super.getExtremes(this.colorValueData);\n        this.valueMin = dataMin;\n        this.valueMax = dataMax;\n        // Get the extremes from the y data\n        return super.getExtremes();\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    getListOfParents(data, existingIds) {\n        const arr = TreemapSeries_isArray(data) ? data : [], ids = TreemapSeries_isArray(existingIds) ? existingIds : [], listOfParents = arr.reduce(function (prev, curr, i) {\n            const 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 (const parent of Object.keys(listOfParents)) {\n            const children = listOfParents[parent];\n            if ((parent !== '') && (ids.indexOf(parent) === -1)) {\n                for (const child of children) {\n                    listOfParents[''].push(child);\n                }\n                delete listOfParents[parent];\n            }\n        }\n        return listOfParents;\n    }\n    /**\n     * Creates a tree structured object from the series points.\n     * @private\n     */\n    getTree() {\n        const series = this, 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    buildTree(id, index, level, list, parent) {\n        const series = this, children = [], point = series.points[index];\n        let height = 0, child;\n        // Actions\n        for (const i of (list[id] || [])) {\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        const node = new series.NodeClass().init(id, index, children, height, level, series, parent);\n        for (const child of children) {\n            child.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    hasData() {\n        return !!this.dataTable.rowCount;\n    }\n    init(chart, options) {\n        const series = this, breadcrumbsOptions = TreemapSeries_merge(options.drillUpButton, options.breadcrumbs), setOptionsEvent = TreemapSeries_addEvent(series, 'setOptions', (event) => {\n            const 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.init(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                const 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                const 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                const 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            const drillUpsNumber = this.level - e.newLevel;\n            for (let i = 0; i < drillUpsNumber; i++) {\n                series.drillUp();\n            }\n        }));\n    }\n    /**\n     * Add drilling on the suitable points.\n     * @private\n     */\n    onClickDrillToNode(event) {\n        const series = this, point = event.point, 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    pointAttribs(point, state) {\n        const series = this, mapOptionsToLevel = (TreemapSeries_isObject(series.mapOptionsToLevel) ?\n            series.mapOptionsToLevel :\n            {}), level = point && mapOptionsToLevel[point.node.level] || {}, options = this.options, stateOptions = state && options.states && options.states[state] || {}, 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, level.borderWidth, stateOptions.borderWidth, 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        let 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    setColorRecursive(node, parentColor, colorIndex, index, siblings) {\n        const series = this, chart = series && series.chart, colors = chart && chart.options && chart.options.colors;\n        if (node) {\n            const 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            }), point = series.points[node.i];\n            if (point) {\n                point.color = colorInfo.color;\n                point.colorIndex = colorInfo.colorIndex;\n            }\n            let i = -1;\n            // Do it all again with the children\n            for (const child of (node.children || [])) {\n                series.setColorRecursive(child, colorInfo.color, colorInfo.colorIndex, ++i, node.children.length);\n            }\n        }\n    }\n    setPointValues() {\n        const series = this;\n        const { points, xAxis, yAxis } = series;\n        const 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        const getStrokeWidth = (point) => (styledMode ?\n            0 :\n            (series.pointAttribs(point)['stroke-width'] || 0));\n        for (const point of points) {\n            const { pointValues: values, visible } = point.node;\n            // Points which is ignored, have no values.\n            if (values && visible) {\n                const { height, width, x, y } = values;\n                const strokeWidth = getStrokeWidth(point);\n                const x1 = crisp(xAxis.toPixels(x, true), strokeWidth, true);\n                const x2 = crisp(xAxis.toPixels(x + width, true), strokeWidth, true);\n                const y1 = crisp(yAxis.toPixels(y, true), strokeWidth, true);\n                const y2 = crisp(yAxis.toPixels(y + height, true), strokeWidth, true);\n                // Set point values\n                const shapeArgs = {\n                    x: Math.min(x1, x2),\n                    y: Math.min(y1, 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    setRootNode(id, redraw, eventArguments) {\n        const series = this, eventArgs = TreemapSeries_extend({\n            newRootId: id,\n            previousRootId: series.rootNode,\n            redraw: TreemapSeries_pick(redraw, true),\n            series: series\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        const defaultFn = function (args) {\n            const 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    setState(state) {\n        this.options.inactiveOtherPoints = true;\n        super.setState(state, false);\n        this.options.inactiveOtherPoints = false;\n    }\n    setTreeValues(tree) {\n        const series = this, options = series.options, idRoot = series.rootNode, mapIdToNode = series.nodeMap, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (typeof options.levelIsConstant === 'boolean' ?\n            options.levelIsConstant :\n            true), children = [], point = series.points[tree.i];\n        // First give the children some values\n        let childrenTotal = 0;\n        for (let child of tree.children) {\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, (a, b) => ((a.sortIndex || 0) - (b.sortIndex || 0)));\n        // Set the values\n        let val = TreemapSeries_pick(point && point.options.value, childrenTotal);\n        if (point) {\n            point.value = val;\n        }\n        if (point?.isGroup && options.cluster?.reductionFactor) {\n            val /= options.cluster.reductionFactor;\n        }\n        if (tree.parentNode?.point?.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?.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    sliceAndDice(parent, children) {\n        return this.algorithmFill(true, parent, children);\n    }\n    squarified(parent, children) {\n        return this.algorithmLowAspectRatio(true, parent, children);\n    }\n    strip(parent, children) {\n        return this.algorithmLowAspectRatio(false, parent, children);\n    }\n    stripes(parent, children) {\n        return this.algorithmFill(false, parent, children);\n    }\n    translate(tree) {\n        const series = this, options = series.options, applyGrouping = !tree;\n        let // NOTE: updateRootId modifies series.\n        rootId = TreemapSeries_updateRootId(series), rootNode, pointValues, seriesArea, val;\n        if (!tree && !rootId.startsWith('highcharts-grouped-treemap-points-')) {\n            // Group points are removed, but not destroyed during generatePoints\n            (this.points || []).forEach((point) => {\n                if (point.isGroup) {\n                    point.destroy();\n                }\n            });\n            // Call prototype function\n            super.translate();\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 (!rootNode.point?.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], (node) => {\n            const p = node.parent;\n            let 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, (children) => {\n            let next = false;\n            for (const child of children) {\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 *\n *  Static Properties\n *\n * */\nTreemapSeries.defaultOptions = TreemapSeries_merge(ScatterSeries.defaultOptions, Treemap_TreemapSeriesDefaults);\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 */ const Treemap_TreemapSeries = (TreemapSeries);\n\n;// ./code/es-modules/masters/modules/treemap.src.js\n\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.Breadcrumbs = G.Breadcrumbs || Breadcrumbs_Breadcrumbs;\nG.Breadcrumbs.compose(G.Chart, G.defaultOptions);\nTreemap_TreemapSeries.compose(G.Series);\n/* harmony default export */ const treemap_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","define","amd","amd1","window","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__28__","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__","treemap_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","compose","ChartClass","highchartsDefaultOptions","constructor","userOptions","elementList","isDirty","list","chartOptions","drilldown","drillUpButton","defaultOptions","navigation","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","column","columnProto","seriesTypes","ColorMapComposition_addEvent","ColorMapComposition_defined","onPointAfterSetState","series","point","moveToTopOnHover","graphic","stateMarkerGraphic","pointerEvents","parentGroup","state","id","href","url","visibility","pointMembers","dataLabelOnNull","isValid","value","Infinity","isNaN","seriesMembers","colorKey","axisTypes","parallelArrays","pointArrayMap","trackerGroups","colorAttribs","ret","colorProp","pointAttribs","SeriesClass","pointClass","Series_ColorMapComposition","Treemap_TreemapAlgorithmGroup","h","w","p","plot","direction","startDirection","total","nW","lW","nH","lH","elArr","lP","nR","lR","aspectRatio","Math","max","addElement","el","push","reset","Series_DrawPointUtilities","draw","params","animatableAttribs","onComplete","animation","hasRendered","attribs","getClassName","shouldDraw","shapeType","image","imageUrl","shapeArgs","animate","isNew","keys","pie","PiePoint","scatter","ScatterPoint","TreemapPoint_extend","isNumber","TreemapPoint_pick","TreemapPoint","arguments","groupedPointsAmount","className","node","nodeMap","rootNode","children","isGroup","isLeaf","interactByLeaf","allowTraversingTree","Boolean","apply","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","parse","TreemapSeries_composed","noop","ColumnSeries","ScatterSeries","getColor","TreemapSeries_getColor","getLevelOptions","TreemapSeries_getLevelOptions","updateRootId","TreemapSeries_updateRootId","colorIndexByPoint","colorIndex","index","mapOptionsToLevel","parentColor","parentColorIndex","colors","siblings","points","chartOptionsChart","colorCount","variateColor","colorVariation","brighten","to","defaults","converted","from","levels","result","reduce","getNodeWidth","columnCount","nodeDistance","nodeWidth","plotSizeX","test","fraction","parseFloat","nDistance","Number","setTreeValues","tree","before","idRoot","nodeRoot","mapIdToNode","optionsPoint","childrenTotal","levelDynamic","visible","forEach","child","newOptions","val","rootId","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","end","pX","pY","pW","pH","gW","gH","keep","parent","algorithmFill","pTot","algorithmLowAspectRatio","alignDataLabel","dataLabel","labelOptions","applyTreeGrouping","parentList","parentGroups","checkIfHide","compareHeight","thresholdArea","area","indexOf","splice","groupPoint","find","PointClass","pointIndex","formatPrefix","amount","nodeList","buildTree","calculateChildrenAreas","algorithm","alternate","filter","ignore","childrenValues","values","pointValues","axisRatio","axisMax","createList","currentLevelNumber","target","newRootId","extraNodes","reverse","drawDataLabels","hasDataLabels","lineClamp","floor","dlOptions","drawPoints","withinAnimationLimit","pointCount","groupKey","hasGraphic","shouldAnimate","isInside","r","selected","survive","drillId","drillToByLeaf","drillToByGroup","nodeParent","drillToNode","setRootNode","drillUp","trigger","getExtremes","dataMin","dataMax","colorValueData","valueMin","valueMax","getListOfParents","data","existingIds","arr","ids","listOfParents","prev","curr","getTree","allIds","map","NodeClass","init","parentNode","hasData","dataTable","rowCount","setOptionsEvent","allowDrillToNode","eventsToUnbind","onClickDrillToNode","keepEventsForUpdate","drillUpsNumber","stateOptions","borderDashStyle","setOpacity","cursor","setColorRecursive","colorInfo","setPointValues","getStrokeWidth","strokeWidth","x1","toPixels","x2","y1","y2","abs","plotX","eventArguments","previousRootId","args","idPreviousRoot","inactiveOtherPoints","b","sortIndex","sliceAndDice","squarified","strip","stripes","applyGrouping","seriesArea","startsWith","concat","len","colorAxis","setExtremes","setScale","buildKDTree","directTouch","getExtremesFromAll","getSymbol","optionalAxis","utils","registerSeriesType","G","Chart","Treemap_TreemapSeries","Series"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox