Hacked By AnonymousFox

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

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * Treegraph chart series type\n * @module highcharts/modules/treegraph\n * @requires highcharts\n * @requires highcharts/modules/treemap\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"SVGRenderer\"], root[\"_Highcharts\"][\"Point\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SVGElement\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/treegraph\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"SeriesRegistry\"],amd1[\"SVGRenderer\"],amd1[\"Point\"],amd1[\"Color\"],amd1[\"SVGElement\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/treegraph\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"SVGRenderer\"], root[\"_Highcharts\"][\"Point\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SVGElement\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"SVGRenderer\"], root[\"Highcharts\"][\"Point\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SVGElement\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__540__, __WEBPACK_EXTERNAL_MODULE__260__, __WEBPACK_EXTERNAL_MODULE__620__, __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/***/ 260:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 28:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 540:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__540__;\n\n/***/ }),\n\n/***/ 512:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\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 */ treegraph_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/Series/PathUtilities.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\nconst getLinkPath = {\n    'default': getDefaultPath,\n    straight: getStraightPath,\n    curved: getCurvedPath\n};\n/**\n *\n */\nfunction getDefaultPath(pathParams) {\n    const { x1, y1, x2, y2, width = 0, inverted = false, radius, parentVisible } = pathParams;\n    const path = [\n        ['M', x1, y1],\n        ['L', x1, y1],\n        ['C', x1, y1, x1, y2, x1, y2],\n        ['L', x1, y2],\n        ['C', x1, y1, x1, y2, x1, y2],\n        ['L', x1, y2]\n    ];\n    return parentVisible ?\n        applyRadius([\n            ['M', x1, y1],\n            ['L', x1 + width * (inverted ? -0.5 : 0.5), y1],\n            ['L', x1 + width * (inverted ? -0.5 : 0.5), y2],\n            ['L', x2, y2]\n        ], radius) :\n        path;\n}\n/**\n *\n */\nfunction getStraightPath(pathParams) {\n    const { x1, y1, x2, y2, width = 0, inverted = false, parentVisible } = pathParams;\n    return parentVisible ? [\n        ['M', x1, y1],\n        ['L', x1 + width * (inverted ? -1 : 1), y2],\n        ['L', x2, y2]\n    ] : [\n        ['M', x1, y1],\n        ['L', x1, y2],\n        ['L', x1, y2]\n    ];\n}\n/**\n *\n */\nfunction getCurvedPath(pathParams) {\n    const { x1, y1, x2, y2, offset = 0, width = 0, inverted = false, parentVisible } = pathParams;\n    return parentVisible ?\n        [\n            ['M', x1, y1],\n            [\n                'C',\n                x1 + offset,\n                y1,\n                x1 - offset + width * (inverted ? -1 : 1),\n                y2,\n                x1 + width * (inverted ? -1 : 1),\n                y2\n            ],\n            ['L', x2, y2]\n        ] :\n        [\n            ['M', x1, y1],\n            ['C', x1, y1, x1, y2, x1, y2],\n            ['L', x2, y2]\n        ];\n}\n/**\n * General function to apply corner radius to a path\n * @private\n */\nfunction applyRadius(path, r) {\n    const d = [];\n    for (let i = 0; i < path.length; i++) {\n        const x = path[i][1];\n        const y = path[i][2];\n        if (typeof x === 'number' && typeof y === 'number') {\n            // MoveTo\n            if (i === 0) {\n                d.push(['M', x, y]);\n            }\n            else if (i === path.length - 1) {\n                d.push(['L', x, y]);\n                // CurveTo\n            }\n            else if (r) {\n                const prevSeg = path[i - 1];\n                const nextSeg = path[i + 1];\n                if (prevSeg && nextSeg) {\n                    const x1 = prevSeg[1], y1 = prevSeg[2], x2 = nextSeg[1], y2 = nextSeg[2];\n                    // Only apply to breaks\n                    if (typeof x1 === 'number' &&\n                        typeof x2 === 'number' &&\n                        typeof y1 === 'number' &&\n                        typeof y2 === 'number' &&\n                        x1 !== x2 &&\n                        y1 !== y2) {\n                        const directionX = x1 < x2 ? 1 : -1, directionY = y1 < y2 ? 1 : -1;\n                        d.push([\n                            'L',\n                            x - directionX * Math.min(Math.abs(x - x1), r),\n                            y - directionY * Math.min(Math.abs(y - y1), r)\n                        ], [\n                            'C',\n                            x,\n                            y,\n                            x,\n                            y,\n                            x + directionX * Math.min(Math.abs(x - x2), r),\n                            y + directionY * Math.min(Math.abs(y - y2), r)\n                        ]);\n                    }\n                }\n                // LineTo\n            }\n            else {\n                d.push(['L', x, y]);\n            }\n        }\n    }\n    return d;\n}\nconst PathUtilities = {\n    applyRadius,\n    getLinkPath\n};\n/* harmony default export */ const Series_PathUtilities = (PathUtilities);\n\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\",\"SVGRenderer\"],\"commonjs\":[\"highcharts\",\"SVGRenderer\"],\"commonjs2\":[\"highcharts\",\"SVGRenderer\"],\"root\":[\"Highcharts\",\"SVGRenderer\"]}\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_ = __webpack_require__(540);\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_);\n;// ./code/es-modules/Series/Treegraph/TreegraphNode.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { seriesTypes: { treemap: { prototype: { NodeClass: TreemapNode } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nclass TreegraphNode extends TreemapNode {\n    constructor() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        super(...arguments);\n        this.mod = 0;\n        this.shift = 0;\n        this.change = 0;\n        this.children = [];\n        this.preX = 0;\n        this.hidden = false;\n        this.wasVisited = false;\n        this.collapsed = false;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Get the next left node which is either first child or thread.\n     *\n     * @return {TreegraphNode|undefined}\n     *         Next left node child or thread.\n     */\n    nextLeft() {\n        return this.getLeftMostChild() || this.thread;\n    }\n    /**\n     * Get the next right node which is either last child or thread.\n     *\n     * @return {TreegraphNode|undefined}\n     *         Next right node child or thread.\n     */\n    nextRight() {\n        return this.getRightMostChild() || this.thread;\n    }\n    /**\n     * Return the left one of the greatest uncommon ancestors of a\n     * leftInternal node and it's right neighbor.\n     *\n     * @param {TreegraphNode} leftIntNode\n     * @param {TreegraphNode} defaultAncestor\n     * @return {TreegraphNode}\n     *         Left one of the greatest uncommon ancestors of a leftInternal\n     *         node and it's right neighbor.\n     *\n     */\n    getAncestor(leftIntNode, defaultAncestor) {\n        const leftAnc = leftIntNode.ancestor;\n        if (leftAnc.children[0] === this.children[0]) {\n            return leftIntNode.ancestor;\n        }\n        return defaultAncestor;\n    }\n    /**\n     * Get node's first sibling, which is not hidden.\n     *\n     * @return {TreegraphNode|undefined}\n     *         First sibling of the node which is not hidden or undefined, if it\n     *         does not exists.\n     */\n    getLeftMostSibling() {\n        const parent = this.getParent();\n        if (parent) {\n            for (const child of parent.children) {\n                if (child && child.point.visible) {\n                    return child;\n                }\n            }\n        }\n    }\n    /**\n     * Check if the node is a leaf (if it has any children).\n     *\n     * @return {boolean}\n     *         If the node has no visible children return true.\n     */\n    hasChildren() {\n        const children = this.children;\n        for (let i = 0; i < children.length; i++) {\n            if (children[i].point.visible) {\n                return true;\n            }\n        }\n        return false;\n    }\n    /**\n     * Get node's left sibling (if it exists).\n     *\n     * @return {TreegraphNode|undefined}\n     *         Left sibling of the node\n     */\n    getLeftSibling() {\n        const parent = this.getParent();\n        if (parent) {\n            const children = parent.children;\n            for (let i = this.relativeXPosition - 1; i >= 0; i--) {\n                if (children[i] && children[i].point.visible) {\n                    return children[i];\n                }\n            }\n        }\n    }\n    /**\n     * Get the node's first child (if it exists).\n     *\n     * @return {TreegraphNode|undefined}\n     *         Node's first child which isn't hidden.\n     */\n    getLeftMostChild() {\n        const children = this.children;\n        for (let i = 0; i < children.length; i++) {\n            if (children[i].point.visible) {\n                return children[i];\n            }\n        }\n    }\n    /**\n     * Get the node's last child (if it exists).\n     *\n     * @return {TreegraphNode|undefined}\n     *         Node's last child which isn't hidden.\n     */\n    getRightMostChild() {\n        const children = this.children;\n        for (let i = children.length - 1; i >= 0; i--) {\n            if (children[i].point.visible) {\n                return children[i];\n            }\n        }\n    }\n    /**\n     * Get the parent of current node or return undefined for root of the\n     * tree.\n     *\n     * @return {TreegraphNode|undefined}\n     *         Node's parent or undefined for root.\n     */\n    getParent() {\n        return this.parentNode;\n    }\n    /**\n     * Get node's first child which is not hidden.\n     *\n     * @return {TreegraphNode|undefined}\n     *         First child.\n     */\n    getFirstChild() {\n        const children = this.children;\n        for (let i = 0; i < children.length; i++) {\n            if (children[i].point.visible) {\n                return children[i];\n            }\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treegraph_TreegraphNode = (TreegraphNode);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Point\"],\"commonjs\":[\"highcharts\",\"Point\"],\"commonjs2\":[\"highcharts\",\"Point\"],\"root\":[\"Highcharts\",\"Point\"]}\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_ = __webpack_require__(260);\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default = /*#__PURE__*/__webpack_require__.n(highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_);\n;// ./code/es-modules/Series/Treegraph/TreegraphPoint.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { seriesTypes: { treemap: { prototype: { pointClass: TreemapPoint } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { addEvent, fireEvent, merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nclass TreegraphPoint extends TreemapPoint {\n    constructor() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        super(...arguments);\n        this.dataLabelOnHidden = true;\n        this.isLink = false;\n        this.setState = (highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default()).prototype.setState;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    draw() {\n        super.draw.apply(this, arguments);\n        // Run animation of hiding/showing of the point.\n        const graphic = this.graphic;\n        if (graphic) {\n            graphic.animate({\n                visibility: this.visible ? 'inherit' : 'hidden'\n            });\n        }\n        this.renderCollapseButton();\n    }\n    renderCollapseButton() {\n        const point = this, series = point.series, parentGroup = point.graphic && point.graphic.parentGroup, levelOptions = series.mapOptionsToLevel[point.node.level || 0] || {}, btnOptions = merge(series.options.collapseButton, levelOptions.collapseButton, point.options.collapseButton), { width, height, shape, style } = btnOptions, padding = 2, chart = this.series.chart, calculatedOpacity = (point.visible &&\n            (point.collapsed ||\n                !btnOptions.onlyOnHover ||\n                point.state === 'hover')) ? 1 : 0;\n        if (!point.shapeArgs) {\n            return;\n        }\n        this.collapseButtonOptions = btnOptions;\n        if (!point.collapseButton) {\n            if (!point.node.children.length || !btnOptions.enabled) {\n                return;\n            }\n            const { x, y } = this.getCollapseBtnPosition(btnOptions), fill = (btnOptions.fillColor ||\n                point.color ||\n                \"#cccccc\" /* Palette.neutralColor20 */);\n            point.collapseButton = chart.renderer\n                .label(point.collapsed ? '+' : '-', x, y, shape)\n                .attr({\n                height: height - 2 * padding,\n                width: width - 2 * padding,\n                padding: padding,\n                fill,\n                rotation: chart.inverted ? 90 : 0,\n                rotationOriginX: width / 2,\n                rotationOriginY: height / 2,\n                stroke: btnOptions.lineColor || \"#ffffff\" /* Palette.backgroundColor */,\n                'stroke-width': btnOptions.lineWidth,\n                'text-align': 'center',\n                align: 'center',\n                zIndex: 1,\n                opacity: calculatedOpacity,\n                visibility: point.visible ? 'inherit' : 'hidden'\n            })\n                .addClass('highcharts-tracker')\n                .addClass('highcharts-collapse-button')\n                .removeClass('highcharts-no-tooltip')\n                .css(merge({\n                color: typeof fill === 'string' ?\n                    chart.renderer.getContrast(fill) :\n                    \"#333333\" /* Palette.neutralColor80 */\n            }, style))\n                .add(parentGroup);\n            point.collapseButton.element.point = point;\n        }\n        else {\n            if (!point.node.children.length || !btnOptions.enabled) {\n                point.collapseButton.destroy();\n                delete point.collapseButton;\n            }\n            else {\n                const { x, y } = this.getCollapseBtnPosition(btnOptions);\n                point.collapseButton\n                    .attr({\n                    text: point.collapsed ? '+' : '-',\n                    rotation: chart.inverted ? 90 : 0,\n                    rotationOriginX: width / 2,\n                    rotationOriginY: height / 2,\n                    visibility: point.visible ? 'inherit' : 'hidden'\n                })\n                    .animate({\n                    x,\n                    y,\n                    opacity: calculatedOpacity\n                });\n            }\n        }\n    }\n    toggleCollapse(state) {\n        const series = this.series;\n        this.update({\n            collapsed: state ?? !this.collapsed\n        }, false, void 0, false);\n        fireEvent(series, 'toggleCollapse');\n        series.redraw();\n    }\n    destroy() {\n        if (this.collapseButton) {\n            this.collapseButton.destroy();\n            delete this.collapseButton;\n            this.collapseButton = void 0;\n        }\n        if (this.linkToParent) {\n            this.linkToParent.destroy();\n            delete this.linkToParent;\n        }\n        super.destroy.apply(this, arguments);\n    }\n    getCollapseBtnPosition(btnOptions) {\n        const point = this, chart = point.series.chart, inverted = chart.inverted, btnWidth = btnOptions.width, btnHeight = btnOptions.height, { x = 0, y = 0, width = 0, height = 0 } = point.shapeArgs || {};\n        return {\n            x: x +\n                btnOptions.x +\n                (inverted ? -btnHeight * 0.3 : width + btnWidth * -0.3),\n            y: y + height / 2 - btnHeight / 2 + btnOptions.y\n        };\n    }\n}\naddEvent(TreegraphPoint, 'mouseOut', function () {\n    const btn = this.collapseButton, btnOptions = this.collapseButtonOptions;\n    if (btn && btnOptions?.onlyOnHover && !this.collapsed) {\n        btn.animate({ opacity: 0 });\n    }\n});\naddEvent(TreegraphPoint, 'mouseOver', function () {\n    if (this.collapseButton && this.visible) {\n        this.collapseButton.animate({ opacity: 1 }, this.series.options.states?.hover?.animation);\n    }\n});\n// Handle showing and hiding of the points\naddEvent(TreegraphPoint, 'click', function () {\n    this.toggleCollapse();\n});\n/* *\n *\n *  Export Default\n *\n * */\n/* harmony default export */ const Treegraph_TreegraphPoint = (TreegraphPoint);\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;// ./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, isArray, isNumber, isObject, merge: TreeUtilities_merge, 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 = pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);\n        }\n        colorIndex = 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 = 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) && isNumber(item.level)) {\n                    options = TreeUtilities_merge({}, item);\n                    levelIsConstant = 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 = 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 = 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 = extend({}, options);\n        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 = 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 = 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/Treegraph/TreegraphLink.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { pick: TreegraphLink_pick, extend: TreegraphLink_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { seriesTypes: { column: { prototype: { pointClass: ColumnPoint } } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nclass LinkPoint extends ColumnPoint {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(series, options, x, point) {\n        super(series, options, x);\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.dataLabelOnNull = true;\n        this.formatPrefix = 'link';\n        this.isLink = true;\n        this.node = {};\n        this.formatPrefix = 'link';\n        this.dataLabelOnNull = true;\n        if (point) {\n            this.fromNode = point.node.parentNode.point;\n            this.visible = point.visible;\n            this.toNode = point;\n            this.id = this.toNode.id + '-' + this.fromNode.id;\n        }\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    update(options, redraw, animation, runEvent) {\n        const oldOptions = {\n            id: this.id,\n            formatPrefix: this.formatPrefix\n        };\n        highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.update.call(this, options, this.isLink ? false : redraw, // Hold the redraw for nodes\n        animation, runEvent);\n        this.visible = this.toNode.visible;\n        TreegraphLink_extend(this, oldOptions);\n        if (TreegraphLink_pick(redraw, true)) {\n            this.series.chart.redraw(animation);\n        }\n    }\n}\n/* *\n *\n *  Export Default\n *\n * */\n/* harmony default export */ const TreegraphLink = (LinkPoint);\n\n;// ./code/es-modules/Series/Treegraph/TreegraphLayout.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nclass TreegraphLayout {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Create dummy node, which allows to manually set the level of the node.\n     *\n     * @param {TreegraphNode} parent\n     *        Parent node, to which the dummyNode should be connected.\n     * @param {TreegraphNode} child\n     *        Child node, which should be connected to dummyNode.\n     * @param {number} gapSize\n     *        Remaining gap size.\n     *\n     * @return {TreegraphNode}\n     *         DummyNode as a parent of nodes, which column changes.\n     */\n    static createDummyNode(parent, child, gapSize) {\n        // Initialise dummy node.\n        const dummyNode = new Treegraph_TreegraphNode();\n        dummyNode.id = parent.id + '-' + gapSize;\n        dummyNode.ancestor = parent;\n        // Add connection from new node to the previous points.\n        // First connection to itself.\n        dummyNode.children.push(child);\n        dummyNode.parent = parent.id;\n        dummyNode.parentNode = parent;\n        dummyNode.point = child.point;\n        dummyNode.level = child.level - gapSize;\n        dummyNode.relativeXPosition = child.relativeXPosition;\n        dummyNode.visible = child.visible;\n        // Then connection from parent to dummyNode.\n        parent.children[child.relativeXPosition] = dummyNode;\n        child.oldParentNode = parent;\n        child.relativeXPosition = 0;\n        // Then connection from child to dummyNode.\n        child.parentNode = dummyNode;\n        child.parent = dummyNode.id;\n        return dummyNode;\n    }\n    /**\n     * Walker algorithm of positioning the nodes in the treegraph improved by\n     * Buchheim to run in the linear time. Basic algorithm consists of post\n     * order traversal, which starts from going bottom up (first walk), and then\n     * pre order traversal top to bottom (second walk) where adding all of the\n     * modifiers is performed.\n     * link to the paper: http://dirk.jivas.de/papers/buchheim02improving.pdf\n     *\n     * @param {TreegraphSeries} series the Treegraph series\n     */\n    calculatePositions(series) {\n        const treeLayout = this;\n        const nodes = series.nodeList;\n        this.resetValues(nodes);\n        const root = series.tree;\n        if (root) {\n            treeLayout.calculateRelativeX(root, 0);\n            treeLayout.beforeLayout(nodes);\n            treeLayout.firstWalk(root);\n            treeLayout.secondWalk(root, -root.preX);\n            treeLayout.afterLayout(nodes);\n        }\n    }\n    /**\n     * Create dummyNodes as parents for nodes, which column is changed.\n     *\n     * @param {Array<TreegraphNode>} nodes\n     *        All of the nodes.\n     */\n    beforeLayout(nodes) {\n        for (const node of nodes) {\n            for (let child of node.children) {\n                // Support for children placed in distant columns.\n                if (child && child.level - node.level > 1) {\n                    // For further columns treat the nodes as a\n                    // single parent-child pairs till the column is achieved.\n                    let gapSize = child.level - node.level - 1;\n                    // Parent -> dummyNode -> child\n                    while (gapSize > 0) {\n                        child = TreegraphLayout.createDummyNode(node, child, gapSize);\n                        gapSize--;\n                    }\n                }\n            }\n        }\n    }\n    /**\n     * Reset the calculated values from the previous run.\n     * @param {TreegraphNode[]} nodes all of the nodes.\n     */\n    resetValues(nodes) {\n        for (const node of nodes) {\n            node.mod = 0;\n            node.ancestor = node;\n            node.shift = 0;\n            node.thread = void 0;\n            node.change = 0;\n            node.preX = 0;\n        }\n    }\n    /**\n     * Assigns the value to each node, which indicates, what is his sibling\n     * number.\n     *\n     * @param {TreegraphNode} node\n     *        Root node\n     * @param {number} index\n     *        Index to which the nodes position should be set\n     */\n    calculateRelativeX(node, index) {\n        const treeLayout = this, children = node.children;\n        for (let i = 0, iEnd = children.length; i < iEnd; ++i) {\n            treeLayout.calculateRelativeX(children[i], i);\n        }\n        node.relativeXPosition = index;\n    }\n    /**\n     * Recursive post order traversal of the tree, where the initial position\n     * of the nodes is calculated.\n     *\n     * @param {TreegraphNode} node\n     *        The node for which the position should be calculated.\n     */\n    firstWalk(node) {\n        const treeLayout = this, \n        // Arbitrary value used to position nodes in respect to each other.\n        siblingDistance = 1;\n        let leftSibling;\n        // If the node is a leaf, set it's position based on the left siblings.\n        if (!node.hasChildren()) {\n            leftSibling = node.getLeftSibling();\n            if (leftSibling) {\n                node.preX = leftSibling.preX + siblingDistance;\n                node.mod = node.preX;\n            }\n            else {\n                node.preX = 0;\n            }\n        }\n        else {\n            // If the node has children, perform the recursive first walk for\n            // its children, and then calculate its shift in the apportion\n            // function (most crucial part of the algorithm).\n            let defaultAncestor = node.getLeftMostChild();\n            for (const child of node.children) {\n                treeLayout.firstWalk(child);\n                defaultAncestor = treeLayout.apportion(child, defaultAncestor);\n            }\n            treeLayout.executeShifts(node);\n            const leftChild = node.getLeftMostChild(), rightChild = node.getRightMostChild(), \n            // Set the position of the parent as a middle point of its\n            // children and move it by the value of the leftSibling (if it\n            // exists).\n            midPoint = (leftChild.preX + rightChild.preX) / 2;\n            leftSibling = node.getLeftSibling();\n            if (leftSibling) {\n                node.preX = leftSibling.preX + siblingDistance;\n                node.mod = node.preX - midPoint;\n            }\n            else {\n                node.preX = midPoint;\n            }\n        }\n    }\n    /**\n     * Pre order traversal of the tree, which sets the final xPosition of the\n     * node as its preX value and sum of all if it's parents' modifiers.\n     *\n     * @param {TreegraphNode} node\n     *        The node, for which the final position should be calculated.\n     * @param {number} modSum\n     *        The sum of modifiers of all of the parents.\n     */\n    secondWalk(node, modSum) {\n        const treeLayout = this;\n        // When the chart is not inverted we want the tree to be positioned from\n        // left to right with root node close to the chart border, this is why\n        // x and y positions are switched.\n        node.yPosition = node.preX + modSum;\n        node.xPosition = node.level;\n        for (const child of node.children) {\n            treeLayout.secondWalk(child, modSum + node.mod);\n        }\n    }\n    /**\n     *  Shift all children of the current node from right to left.\n     *\n     * @param {TreegraphNode} node\n     *        The parent node.\n     */\n    executeShifts(node) {\n        let shift = 0, change = 0;\n        for (let i = node.children.length - 1; i >= 0; i--) {\n            const childNode = node.children[i];\n            childNode.preX += shift;\n            childNode.mod += shift;\n            change += childNode.change;\n            shift += childNode.shift + change;\n        }\n    }\n    /**\n     * The core of the algorithm. The new subtree is combined with the previous\n     * subtrees. Threads are used to traverse the inside and outside contours of\n     * the left and right subtree up to the highest common level. The vertecies\n     * are left(right)Int(Out)node where Int means internal and Out means\n     * outernal. For summing up the modifiers along the contour we use the\n     * `left(right)Int(Out)mod` variable. Whenever two nodes of the inside\n     * contours are in conflict we commute the left one of the greatest uncommon\n     * ancestors using the getAncestor function and we call the moveSubtree\n     * method to shift the subtree and prepare the shifts of smaller subtrees.\n     * Finally we add a new thread (if necessary) and we adjust ancestor of\n     * right outernal node or defaultAncestor.\n     *\n     * @param {TreegraphNode} node\n     * @param {TreegraphNode} defaultAncestor\n     *        The default ancestor of the passed node.\n     */\n    apportion(node, defaultAncestor) {\n        const treeLayout = this, leftSibling = node.getLeftSibling();\n        if (leftSibling) {\n            let rightIntNode = node, rightOutNode = node, leftIntNode = leftSibling, leftOutNode = rightIntNode.getLeftMostSibling(), rightIntMod = rightIntNode.mod, rightOutMod = rightOutNode.mod, leftIntMod = leftIntNode.mod, leftOutMod = leftOutNode.mod;\n            while (leftIntNode &&\n                leftIntNode.nextRight() &&\n                rightIntNode &&\n                rightIntNode.nextLeft()) {\n                leftIntNode = leftIntNode.nextRight();\n                leftOutNode = leftOutNode.nextLeft();\n                rightIntNode = rightIntNode.nextLeft();\n                rightOutNode = rightOutNode.nextRight();\n                rightOutNode.ancestor = node;\n                const siblingDistance = 1, shift = leftIntNode.preX +\n                    leftIntMod -\n                    (rightIntNode.preX + rightIntMod) +\n                    siblingDistance;\n                if (shift > 0) {\n                    treeLayout.moveSubtree(node.getAncestor(leftIntNode, defaultAncestor), node, shift);\n                    rightIntMod += shift;\n                    rightOutMod += shift;\n                }\n                leftIntMod += leftIntNode.mod;\n                rightIntMod += rightIntNode.mod;\n                leftOutMod += leftOutNode.mod;\n                rightOutMod += rightOutNode.mod;\n            }\n            if (leftIntNode &&\n                leftIntNode.nextRight() &&\n                !rightOutNode.nextRight()) {\n                rightOutNode.thread = leftIntNode.nextRight();\n                rightOutNode.mod += leftIntMod - rightOutMod;\n            }\n            if (rightIntNode &&\n                rightIntNode.nextLeft() &&\n                !leftOutNode.nextLeft()) {\n                leftOutNode.thread = rightIntNode.nextLeft();\n                leftOutNode.mod += rightIntMod - leftOutMod;\n            }\n            defaultAncestor = node;\n        }\n        return defaultAncestor;\n    }\n    /**\n     * Shifts the subtree from leftNode to rightNode.\n     *\n     * @param {TreegraphNode} leftNode\n     * @param {TreegraphNode} rightNode\n     * @param {number} shift\n     *        The value, by which the subtree should be moved.\n     */\n    moveSubtree(leftNode, rightNode, shift) {\n        const subtrees = rightNode.relativeXPosition - leftNode.relativeXPosition;\n        rightNode.change -= shift / subtrees;\n        rightNode.shift += shift;\n        rightNode.preX += shift;\n        rightNode.mod += shift;\n        leftNode.change += shift / subtrees;\n    }\n    /**\n     * Clear values created in a beforeLayout.\n     *\n     * @param {TreegraphNode[]} nodes\n     *        All of the nodes of the Treegraph Series.\n     */\n    afterLayout(nodes) {\n        for (const node of nodes) {\n            if (node.oldParentNode) {\n                // Restore default connections\n                node.relativeXPosition = node.parentNode.relativeXPosition;\n                node.parent = node.oldParentNode.parent;\n                node.parentNode = node.oldParentNode;\n                // Delete dummyNode\n                delete node.oldParentNode.children[node.relativeXPosition];\n                node.oldParentNode.children[node.relativeXPosition] = node;\n                node.oldParentNode = void 0;\n            }\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treegraph_TreegraphLayout = (TreegraphLayout);\n\n;// ./code/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\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 * A treegraph series is a diagram, which shows a relation between ancestors\n * and descendants with a clear parent - child relation.\n * The best examples of the dataStructures, which best reflect this chart\n * are e.g. genealogy tree or directory structure.\n *\n * TODO change back the demo path\n * @sample highcharts/demo/treegraph-chart\n *         Treegraph Chart\n *\n * @extends      plotOptions.treemap\n * @excluding    layoutAlgorithm, dashStyle, linecap, lineWidth,\n *               negativeColor, threshold, zones, zoneAxis, colorAxis,\n *               colorKey, compare, dataGrouping, endAngle, gapSize, gapUnit,\n *               ignoreHiddenPoint, innerSize, joinBy, legendType, linecap,\n *               minSize, navigatorOptions, pointRange, allowTraversingTree,\n *               alternateStartingDirection, borderRadius, breadcrumbs,\n *               interactByLeaf, layoutStartingDirection, levelIsConstant,\n *               lineWidth, negativeColor, nodes, sortIndex, zoneAxis,\n *               zones, cluster\n *\n * @product      highcharts\n * @since 10.3.0\n * @requires     modules/treemap\n * @requires     modules/treegraph\n * @optionparent plotOptions.treegraph\n */\nconst TreegraphSeriesDefaults = {\n    /**\n     * Flips the positions of the nodes of a treegraph along the\n     * horizontal axis (vertical if chart is inverted).\n     *\n     * @sample highcharts/series-treegraph/reversed-nodes\n     *         Treegraph series with reversed nodes.\n     *\n     * @type    {boolean}\n     * @default false\n     * @product highcharts\n     * @since 10.3.0\n     */\n    reversed: false,\n    /**\n     * @extends   plotOptions.series.marker\n     * @excluding enabled, enabledThreshold\n     */\n    marker: {\n        radius: 10,\n        lineWidth: 0,\n        symbol: 'circle',\n        fillOpacity: 1,\n        states: {}\n    },\n    link: {\n        /**\n         * Modifier of the shape of the curved link. Works best for\n         * values between 0 and 1, where 0 is a straight line, and 1 is\n         * a shape close to the default one.\n         *\n         * @type      {number}\n         * @default   0.5\n         * @product   highcharts\n         * @since 10.3.0\n         * @apioption series.treegraph.link.curveFactor\n         */\n        /**\n         * The color of the links between nodes.\n         *\n         * @type {Highcharts.ColorString}\n         * @private\n         */\n        color: \"#666666\" /* Palette.neutralColor60 */,\n        /**\n         * The line width of the links connecting nodes, in pixels.\n         * @type {number}\n         *\n         * @private\n         */\n        lineWidth: 1,\n        /**\n         * Radius for the rounded corners of the links between nodes.\n         * Works for `default` link type.\n         *\n         * @private\n         */\n        radius: 10,\n        cursor: 'default',\n        /**\n         * Type of the link shape.\n         *\n         * @sample   highcharts/series-treegraph/link-types\n         *           Different link types\n         *\n         * @type {'default' | 'curved' | 'straight'}\n         * @product highcharts\n         *\n         */\n        type: 'curved'\n    },\n    /**\n     * Options applied to collapse Button. The collape button is the\n     * small button which indicates, that the node is collapsable.\n     */\n    collapseButton: {\n        /**\n         * Whether the button should be visible only when the node is\n         * hovered. When set to true, the button is hidden for nodes,\n         * which are not collapsed, and shown for the collapsed ones.\n         */\n        onlyOnHover: true,\n        /**\n         * Whether the button should be visible.\n         */\n        enabled: true,\n        /**\n         * The line width of the button in pixels\n         */\n        lineWidth: 1,\n        /**\n         * Offset of the button in the x direction.\n         */\n        x: 0,\n        /**\n         * Offset of the button in the y direction.\n         */\n        y: 0,\n        /**\n         * Height of the button.\n         */\n        height: 18,\n        /**\n         * Width of the button.\n         */\n        width: 18,\n        /**\n         * The symbol of the collapse button.\n         */\n        shape: 'circle',\n        /**\n         * CSS styles for the collapse button.\n         *\n         * In styled mode, the collapse button style is given in the\n         * `.highcharts-collapse-button` class.\n         */\n        style: {\n            cursor: 'pointer',\n            fontWeight: 'bold',\n            fontSize: '1em'\n        }\n    },\n    /**\n     * Whether the treegraph series should fill the entire plot area in the X\n     * axis direction, even when there are collapsed points.\n     *\n     * @sample  highcharts/series-treegraph/fillspace\n     *          Fill space demonstrated\n     *\n     * @product highcharts\n     */\n    fillSpace: false,\n    /**\n     * @extends plotOptions.series.tooltip\n     * @excluding clusterFormat\n     */\n    tooltip: {\n        /**\n         * The HTML of the point's line in the tooltip. Variables are\n         * enclosed by curly brackets. Available variables are\n         * `point.id`,  `point.fromNode.id`, `point.toNode.id`,\n         * `series.name`, `series.color` and other properties on the\n         * same form. Furthermore, This can also be overridden for each\n         * series, which makes it a good hook for displaying units. In\n         * styled mode, the dot is colored by a class name rather than\n         * the point color.\n         *\n         * @type {string}\n         * @since 10.3.0\n         * @product highcharts\n         */\n        linkFormat: '{point.fromNode.id} \\u2192 {point.toNode.id}',\n        pointFormat: '{point.id}'\n        /**\n         * A callback function for formatting the HTML output for a\n         * single link in the tooltip. Like the `linkFormat` string,\n         * but with more flexibility.\n         *\n         * @type {Highcharts.FormatterCallbackFunction.<Highcharts.Point>}\n         * @apioption series.treegraph.tooltip.linkFormatter\n         *\n         */\n    },\n    /**\n     * Options for the data labels appearing on top of the nodes and\n     * links. For treegraph charts, data labels are visible for the\n     * nodes by default, but hidden for links. This is controlled by\n     * modifying the `nodeFormat`, and the `format` that applies to\n     * links and is an empty string by default.\n     *\n     * @declare Highcharts.SeriesTreegraphDataLabelsOptionsObject\n     */\n    dataLabels: {\n        defer: true,\n        /**\n         * Options for a _link_ label text which should follow link\n         * connection. Border and background are disabled for a label\n         * that follows a path.\n         *\n         * **Note:** Only SVG-based renderer supports this option.\n         * Setting `useHTML` to true will disable this option.\n         *\n         * @sample highcharts/series-treegraph/link-text-path\n         *         Treegraph series with link text path dataLabels.\n         *\n         * @extends plotOptions.treegraph.dataLabels.textPath\n         * @since 10.3.0\n         */\n        linkTextPath: {\n            attributes: {\n                startOffset: '50%'\n            }\n        },\n        enabled: true,\n        linkFormatter: () => '',\n        padding: 5,\n        style: {\n            textOverflow: 'none'\n        }\n    },\n    /**\n     * The distance between nodes in a tree graph in the longitudinal direction.\n     * The longitudinal direction means the direction that the chart flows - in\n     * a horizontal chart the distance is horizontal, in an inverted chart\n     * (vertical), the distance is vertical.\n     *\n     * If a number is given, it denotes pixels. If a percentage string is given,\n     * the distance is a percentage of the rendered node width. A `nodeDistance`\n     * of `100%` will render equal widths for the nodes and the gaps between\n     * them.\n     *\n     * This option applies only when the `nodeWidth` option is `auto`, making\n     * the node width respond to the number of columns.\n     *\n     * @since 11.4.0\n     * @sample highcharts/series-treegraph/node-distance\n     *         Node distance of 100% means equal to node width\n     * @type   {number|string}\n     */\n    nodeDistance: 30,\n    /**\n     * The pixel width of each node in a, or the height in case the chart is\n     * inverted. For tree graphs, the node width is only applied if the marker\n     * symbol is `rect`, otherwise the `marker` sizing options apply.\n     *\n     * Can be a number or a percentage string, or `auto`. If `auto`, the nodes\n     * are sized to fill up the plot area in the longitudinal direction,\n     * regardless of the number of levels.\n     *\n     * @since 11.4.0\n     * @see    [treegraph.nodeDistance](#nodeDistance)\n     * @sample highcharts/series-treegraph/node-distance\n     *         Node width is auto and combined with node distance\n     *\n     * @type {number|string}\n     */\n    nodeWidth: void 0\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treegraph_TreegraphSeriesDefaults = (TreegraphSeriesDefaults);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es-modules/Extensions/TextPath.js\n/* *\n *\n *  Highcharts module with textPath functionality.\n *\n *  (c) 2009-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { deg2rad } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nconst { addEvent: TextPath_addEvent, merge: TextPath_merge, uniqueKey, defined, extend: TextPath_extend } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * Text path support is not bundled into `highcharts.js`, and requires the\n * `modules/textpath.js` file. However, it is included in the script files of\n * those series types that use it by default\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n *        Path to follow. If undefined, it allows changing options for the\n *        existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n *        Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\nfunction setTextPath(path, textPathOptions) {\n    // Defaults\n    textPathOptions = TextPath_merge(true, {\n        enabled: true,\n        attributes: {\n            dy: -5,\n            startOffset: '50%',\n            textAnchor: 'middle'\n        }\n    }, textPathOptions);\n    const url = this.renderer.url, textWrapper = this.text || this, textPath = textWrapper.textPath, { attributes, enabled } = textPathOptions;\n    path = path || (textPath && textPath.path);\n    // Remove previously added event\n    if (textPath) {\n        textPath.undo();\n    }\n    if (path && enabled) {\n        const undo = TextPath_addEvent(textWrapper, 'afterModifyTree', (e) => {\n            if (path && enabled) {\n                // Set ID for the path\n                let textPathId = path.attr('id');\n                if (!textPathId) {\n                    path.attr('id', textPathId = uniqueKey());\n                }\n                // Set attributes for the <text>\n                const textAttribs = {\n                    // `dx`/`dy` options must by set on <text> (parent), the\n                    // rest should be set on <textPath>\n                    x: 0,\n                    y: 0\n                };\n                if (defined(attributes.dx)) {\n                    textAttribs.dx = attributes.dx;\n                    delete attributes.dx;\n                }\n                if (defined(attributes.dy)) {\n                    textAttribs.dy = attributes.dy;\n                    delete attributes.dy;\n                }\n                textWrapper.attr(textAttribs);\n                // Handle label properties\n                this.attr({ transform: '' });\n                if (this.box) {\n                    this.box = this.box.destroy();\n                }\n                // Wrap the nodes in a textPath\n                const children = e.nodes.slice(0);\n                e.nodes.length = 0;\n                e.nodes[0] = {\n                    tagName: 'textPath',\n                    attributes: TextPath_extend(attributes, {\n                        'text-anchor': attributes.textAnchor,\n                        href: `${url}#${textPathId}`\n                    }),\n                    children\n                };\n            }\n        });\n        // Set the reference\n        textWrapper.textPath = { path, undo };\n    }\n    else {\n        textWrapper.attr({ dx: 0, dy: 0 });\n        delete textWrapper.textPath;\n    }\n    if (this.added) {\n        // Rebuild text after added\n        textWrapper.textCache = '';\n        this.renderer.buildText(textWrapper);\n    }\n    return this;\n}\n/**\n * Attach a polygon to a bounding box if the element contains a textPath.\n *\n * @function Highcharts.SVGElement#setPolygon\n *\n * @param {any} event\n *        An event containing a bounding box object\n *\n * @return {Highcharts.BBoxObject} Returns the bounding box object.\n */\nfunction setPolygon(event) {\n    const bBox = event.bBox, tp = this.element?.querySelector('textPath');\n    if (tp) {\n        const polygon = [], { b, h } = this.renderer.fontMetrics(this.element), descender = h - b, lineCleanerRegex = new RegExp('(<tspan>|' +\n            '<tspan(?!\\\\sclass=\"highcharts-br\")[^>]*>|' +\n            '<\\\\/tspan>)', 'g'), lines = tp\n            .innerHTML\n            .replace(lineCleanerRegex, '')\n            .split(/<tspan class=\"highcharts-br\"[^>]*>/), numOfLines = lines.length;\n        // Calculate top and bottom coordinates for\n        // either the start or the end of a single\n        // character, and append it to the polygon.\n        const appendTopAndBottom = (charIndex, positionOfChar) => {\n            const { x, y } = positionOfChar, rotation = (tp.getRotationOfChar(charIndex) - 90) * deg2rad, cosRot = Math.cos(rotation), sinRot = Math.sin(rotation);\n            return [\n                [\n                    x - descender * cosRot,\n                    y - descender * sinRot\n                ],\n                [\n                    x + b * cosRot,\n                    y + b * sinRot\n                ]\n            ];\n        };\n        for (let i = 0, lineIndex = 0; lineIndex < numOfLines; lineIndex++) {\n            const line = lines[lineIndex], lineLen = line.length;\n            for (let lineCharIndex = 0; lineCharIndex < lineLen; lineCharIndex += 5) {\n                try {\n                    const srcCharIndex = (i +\n                        lineCharIndex +\n                        lineIndex), [lower, upper] = appendTopAndBottom(srcCharIndex, tp.getStartPositionOfChar(srcCharIndex));\n                    if (lineCharIndex === 0) {\n                        polygon.push(upper);\n                        polygon.push(lower);\n                    }\n                    else {\n                        if (lineIndex === 0) {\n                            polygon.unshift(upper);\n                        }\n                        if (lineIndex === numOfLines - 1) {\n                            polygon.push(lower);\n                        }\n                    }\n                }\n                catch (e) {\n                    // Safari fails on getStartPositionOfChar even if the\n                    // character is within the `textContent.length`\n                    break;\n                }\n            }\n            i += lineLen - 1;\n            try {\n                const srcCharIndex = i + lineIndex, charPos = tp.getEndPositionOfChar(srcCharIndex), [lower, upper] = appendTopAndBottom(srcCharIndex, charPos);\n                polygon.unshift(upper);\n                polygon.unshift(lower);\n            }\n            catch (e) {\n                // Safari fails on getStartPositionOfChar even if the character\n                // is within the `textContent.length`\n                break;\n            }\n        }\n        // Close it\n        if (polygon.length) {\n            polygon.push(polygon[0].slice());\n        }\n        bBox.polygon = polygon;\n    }\n    return bBox;\n}\n/**\n * Draw text along a textPath for a dataLabel.\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {any} event\n *        An event containing label options\n *\n * @return {void}\n */\nfunction drawTextPath(event) {\n    const labelOptions = event.labelOptions, point = event.point, textPathOptions = (labelOptions[point.formatPrefix + 'TextPath'] ||\n        labelOptions.textPath);\n    if (textPathOptions && !labelOptions.useHTML) {\n        this.setTextPath(point.getDataLabelPath?.(this) || point.graphic, textPathOptions);\n        if (point.dataLabelPath &&\n            !textPathOptions.enabled) {\n            // Clean the DOM\n            point.dataLabelPath = (point.dataLabelPath.destroy());\n        }\n    }\n}\nfunction compose(SVGElementClass) {\n    TextPath_addEvent(SVGElementClass, 'afterGetBBox', setPolygon);\n    TextPath_addEvent(SVGElementClass, 'beforeAddingDataLabel', drawTextPath);\n    const svgElementProto = SVGElementClass.prototype;\n    if (!svgElementProto.setTextPath) {\n        svgElementProto.setTextPath = setTextPath;\n    }\n}\nconst TextPath = {\n    compose\n};\n/* harmony default export */ const Extensions_TextPath = (TextPath);\n\n;// ./code/es-modules/Series/Treegraph/TreegraphSeries.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy Grzegorz Blachlinski\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { getLinkPath: TreegraphSeries_getLinkPath } = Series_PathUtilities;\n\nconst { series: { prototype: seriesProto }, seriesTypes: { treemap: TreemapSeries, column: ColumnSeries } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { prototype: { symbols } } = (highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default());\n\n\n\nconst { getLevelOptions: TreegraphSeries_getLevelOptions, getNodeWidth: TreegraphSeries_getNodeWidth } = Series_TreeUtilities;\n\nconst { arrayMax, crisp, extend: TreegraphSeries_extend, merge: TreegraphSeries_merge, pick: TreegraphSeries_pick, relativeLength: TreegraphSeries_relativeLength, splat } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n\n\nExtensions_TextPath.compose((highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default()));\n/* *\n *\n *  Class\n *\n * */\n/**\n * The Treegraph series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.treegraph\n *\n * @augments Highcharts.Series\n */\nclass TreegraphSeries extends TreemapSeries {\n    constructor() {\n        /* *\n         *\n         *  Static Properties\n         *\n         * */\n        super(...arguments);\n        this.nodeList = [];\n        this.links = [];\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    init() {\n        super.init.apply(this, arguments);\n        this.layoutAlgorythm = new Treegraph_TreegraphLayout();\n        // Register the link data labels in the label collector for overlap\n        // detection.\n        const series = this, collectors = this.chart.labelCollectors, collectorFunc = function () {\n            const linkLabels = [];\n            // Check links for overlap\n            if (series.options.dataLabels &&\n                !splat(series.options.dataLabels)[0].allowOverlap) {\n                for (const link of (series.links || [])) {\n                    if (link.dataLabel) {\n                        linkLabels.push(link.dataLabel);\n                    }\n                }\n            }\n            return linkLabels;\n        };\n        // Only add the collector function if it is not present\n        if (!collectors.some((f) => f.name === 'collectorFunc')) {\n            collectors.push(collectorFunc);\n        }\n    }\n    /**\n     * Calculate `a` and `b` parameters of linear transformation, where\n     * `finalPosition = a * calculatedPosition + b`.\n     *\n     * @return {LayoutModifiers} `a` and `b` parameter for x and y direction.\n     */\n    getLayoutModifiers() {\n        const chart = this.chart, series = this, plotSizeX = chart.plotSizeX, plotSizeY = chart.plotSizeY, columnCount = arrayMax(this.points.map((p) => p.node.xPosition));\n        let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity, maxXSize = 0, minXSize = 0, maxYSize = 0, minYSize = 0;\n        this.points.forEach((point) => {\n            // When fillSpace is on, stop the layout calculation when the hidden\n            // points are reached. (#19038)\n            if (this.options.fillSpace && !point.visible) {\n                return;\n            }\n            const node = point.node, level = series.mapOptionsToLevel[point.node.level] || {}, markerOptions = TreegraphSeries_merge(this.options.marker, level.marker, point.options.marker), nodeWidth = markerOptions.width ?? TreegraphSeries_getNodeWidth(this, columnCount), radius = TreegraphSeries_relativeLength(markerOptions.radius || 0, Math.min(plotSizeX, plotSizeY)), symbol = markerOptions.symbol, nodeSizeY = (symbol === 'circle' || !markerOptions.height) ?\n                radius * 2 :\n                TreegraphSeries_relativeLength(markerOptions.height, plotSizeY), nodeSizeX = symbol === 'circle' || !nodeWidth ?\n                radius * 2 :\n                TreegraphSeries_relativeLength(nodeWidth, plotSizeX);\n            node.nodeSizeX = nodeSizeX;\n            node.nodeSizeY = nodeSizeY;\n            let lineWidth;\n            if (node.xPosition <= minX) {\n                minX = node.xPosition;\n                lineWidth = markerOptions.lineWidth || 0;\n                minXSize = Math.max(nodeSizeX + lineWidth, minXSize);\n            }\n            if (node.xPosition >= maxX) {\n                maxX = node.xPosition;\n                lineWidth = markerOptions.lineWidth || 0;\n                maxXSize = Math.max(nodeSizeX + lineWidth, maxXSize);\n            }\n            if (node.yPosition <= minY) {\n                minY = node.yPosition;\n                lineWidth = markerOptions.lineWidth || 0;\n                minYSize = Math.max(nodeSizeY + lineWidth, minYSize);\n            }\n            if (node.yPosition >= maxY) {\n                maxY = node.yPosition;\n                lineWidth = markerOptions.lineWidth || 0;\n                maxYSize = Math.max(nodeSizeY + lineWidth, maxYSize);\n            }\n        });\n        // Calculate the values of linear transformation, which will later be\n        // applied as `nodePosition = a * x + b` for each direction.\n        const ay = maxY === minY ?\n            1 :\n            (plotSizeY - (minYSize + maxYSize) / 2) / (maxY - minY), by = maxY === minY ? plotSizeY / 2 : -ay * minY + minYSize / 2, ax = maxX === minX ?\n            1 :\n            (plotSizeX - (maxXSize + maxXSize) / 2) / (maxX - minX), bx = maxX === minX ? plotSizeX / 2 : -ax * minX + minXSize / 2;\n        return { ax, bx, ay, by };\n    }\n    getLinks() {\n        const series = this;\n        const links = [];\n        this.data.forEach((point) => {\n            const levelOptions = series.mapOptionsToLevel[point.node.level || 0] || {};\n            if (point.node.parent) {\n                const pointOptions = TreegraphSeries_merge(levelOptions, point.options);\n                if (!point.linkToParent || point.linkToParent.destroyed) {\n                    const link = new series.LinkClass(series, pointOptions, void 0, point);\n                    point.linkToParent = link;\n                }\n                else {\n                    // #19552\n                    point.collapsed = TreegraphSeries_pick(point.collapsed, (this.mapOptionsToLevel[point.node.level] || {}).collapsed);\n                    point.linkToParent.visible =\n                        point.linkToParent.toNode.visible;\n                }\n                point.linkToParent.index = links.push(point.linkToParent) - 1;\n            }\n            else {\n                if (point.linkToParent) {\n                    series.links.splice(point.linkToParent.index);\n                    point.linkToParent.destroy();\n                    delete point.linkToParent;\n                }\n            }\n        });\n        return links;\n    }\n    buildTree(id, index, level, list, parent) {\n        const point = this.points[index];\n        level = (point && point.level) || level;\n        return super.buildTree.call(this, id, index, level, list, parent);\n    }\n    markerAttribs() {\n        // The super Series.markerAttribs returns { width: NaN, height: NaN },\n        // so just disable this for now.\n        return {};\n    }\n    setCollapsedStatus(node, visibility) {\n        const point = node.point;\n        if (point) {\n            // Take the level options into account.\n            point.collapsed = TreegraphSeries_pick(point.collapsed, (this.mapOptionsToLevel[node.level] || {}).collapsed);\n            point.visible = visibility;\n            visibility = visibility === false ? false : !point.collapsed;\n        }\n        node.children.forEach((childNode) => {\n            this.setCollapsedStatus(childNode, visibility);\n        });\n    }\n    drawTracker() {\n        ColumnSeries.prototype.drawTracker.apply(this, arguments);\n        ColumnSeries.prototype.drawTracker.call(this, this.links);\n    }\n    /**\n     * Run pre-translation by generating the nodeColumns.\n     * @private\n     */\n    translate() {\n        const series = this, options = series.options;\n        // NOTE: updateRootId modifies series.\n        let rootId = Series_TreeUtilities.updateRootId(series), rootNode;\n        // Call prototype function\n        seriesProto.translate.call(series);\n        const tree = series.tree = series.getTree();\n        rootNode = series.nodeMap[rootId];\n        if (rootId !== '' && (!rootNode || !rootNode.children.length)) {\n            series.setRootNode('', false);\n            rootId = series.rootNode;\n            rootNode = series.nodeMap[rootId];\n        }\n        series.mapOptionsToLevel = TreegraphSeries_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        this.setCollapsedStatus(tree, true);\n        series.links = series.getLinks();\n        series.setTreeValues(tree);\n        this.layoutAlgorythm.calculatePositions(series);\n        series.layoutModifier = this.getLayoutModifiers();\n        this.points.forEach((point) => {\n            this.translateNode(point);\n        });\n        this.points.forEach((point) => {\n            if (point.linkToParent) {\n                this.translateLink(point.linkToParent);\n            }\n        });\n        if (!options.colorByPoint) {\n            series.setColorRecursive(series.tree);\n        }\n    }\n    translateLink(link) {\n        const fromNode = link.fromNode, toNode = link.toNode, linkWidth = this.options.link?.lineWidth || 0, factor = TreegraphSeries_pick(this.options.link?.curveFactor, 0.5), type = TreegraphSeries_pick(link.options.link?.type, this.options.link?.type, 'default');\n        if (fromNode.shapeArgs && toNode.shapeArgs) {\n            const fromNodeWidth = (fromNode.shapeArgs.width || 0), inverted = this.chart.inverted, y1 = crisp((fromNode.shapeArgs.y || 0) +\n                (fromNode.shapeArgs.height || 0) / 2, linkWidth), y2 = crisp((toNode.shapeArgs.y || 0) +\n                (toNode.shapeArgs.height || 0) / 2, linkWidth);\n            let x1 = crisp((fromNode.shapeArgs.x || 0) + fromNodeWidth, linkWidth), x2 = crisp(toNode.shapeArgs.x || 0, linkWidth);\n            if (inverted) {\n                x1 -= fromNodeWidth;\n                x2 += (toNode.shapeArgs.width || 0);\n            }\n            const diff = toNode.node.xPosition - fromNode.node.xPosition;\n            link.shapeType = 'path';\n            const fullWidth = Math.abs(x2 - x1) + fromNodeWidth, width = (fullWidth / diff) - fromNodeWidth, offset = width * factor * (inverted ? -1 : 1);\n            const xMiddle = crisp((x2 + x1) / 2, linkWidth);\n            link.plotX = xMiddle;\n            link.plotY = y2;\n            link.shapeArgs = {\n                d: TreegraphSeries_getLinkPath[type]({\n                    x1,\n                    y1,\n                    x2,\n                    y2,\n                    width,\n                    offset,\n                    inverted,\n                    parentVisible: toNode.visible,\n                    radius: this.options.link?.radius\n                })\n            };\n            link.dlBox = {\n                x: (x1 + x2) / 2,\n                y: (y1 + y2) / 2,\n                height: linkWidth,\n                width: 0\n            };\n            link.tooltipPos = inverted ? [\n                (this.chart.plotSizeY || 0) - link.dlBox.y,\n                (this.chart.plotSizeX || 0) - link.dlBox.x\n            ] : [\n                link.dlBox.x,\n                link.dlBox.y\n            ];\n        }\n    }\n    /**\n     * Private method responsible for adjusting the dataLabel options for each\n     * node-point individually.\n     */\n    drawNodeLabels(points) {\n        const series = this, mapOptionsToLevel = series.mapOptionsToLevel;\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 options for level exists, include them as well\n            if (level && level.dataLabels) {\n                options = TreegraphSeries_merge(options, level.dataLabels);\n                series.hasDataLabels = () => true;\n            }\n            // Set dataLabel width to the width of the point shape.\n            if (point.shapeArgs &&\n                series.options.dataLabels) {\n                const css = {};\n                let { width = 0, height = 0 } = point.shapeArgs;\n                if (series.chart.inverted) {\n                    [width, height] = [height, width];\n                }\n                if (!splat(series.options.dataLabels)[0].style?.width) {\n                    css.width = `${width}px`;\n                }\n                if (!splat(series.options.dataLabels)[0].style?.lineClamp) {\n                    css.lineClamp = Math.floor(height / 16);\n                }\n                TreegraphSeries_extend(options.style, css);\n                point.dataLabel?.css(css);\n            }\n            // Merge custom options with point options\n            point.dlOptions = TreegraphSeries_merge(options, point.options.dataLabels);\n        }\n        seriesProto.drawDataLabels.call(this, points);\n    }\n    /**\n     * Override alignDataLabel so that position is always calculated and the\n     * label is faded in and out instead of hidden/shown when collapsing and\n     * expanding nodes.\n     */\n    alignDataLabel(point, dataLabel) {\n        const visible = point.visible;\n        // Force position calculation and visibility\n        point.visible = true;\n        super.alignDataLabel.apply(this, arguments);\n        // Fade in or out\n        dataLabel.animate({\n            opacity: visible === false ? 0 : 1\n        }, void 0, function () {\n            // Hide data labels that belong to hidden points (#18891)\n            visible || dataLabel.hide();\n        });\n        // Reset\n        point.visible = visible;\n    }\n    /**\n     * Treegraph has two separate collecions of nodes and lines,\n     * render dataLabels for both sets.\n     */\n    drawDataLabels() {\n        if (this.options.dataLabels) {\n            this.options.dataLabels = splat(this.options.dataLabels);\n            // Render node labels.\n            this.drawNodeLabels(this.points);\n            // Render link labels.\n            seriesProto.drawDataLabels.call(this, this.links);\n        }\n    }\n    destroy() {\n        // Links must also be destroyed.\n        if (this.links) {\n            for (const link of this.links) {\n                link.destroy();\n            }\n            this.links.length = 0;\n        }\n        return seriesProto.destroy.apply(this, arguments);\n    }\n    /**\n     * Return the presentational attributes.\n     * @private\n     */\n    pointAttribs(point, state) {\n        const series = this, levelOptions = point &&\n            series.mapOptionsToLevel[point.node.level || 0] || {}, options = point && point.options, stateOptions = (levelOptions.states &&\n            levelOptions.states[state]) ||\n            {};\n        if (point) {\n            point.options.marker = TreegraphSeries_merge(series.options.marker, levelOptions.marker, point.options.marker);\n        }\n        const linkColor = TreegraphSeries_pick(stateOptions && stateOptions.link && stateOptions.link.color, options && options.link && options.link.color, levelOptions && levelOptions.link && levelOptions.link.color, series.options.link && series.options.link.color), linkLineWidth = TreegraphSeries_pick(stateOptions && stateOptions.link &&\n            stateOptions.link.lineWidth, options && options.link && options.link.lineWidth, levelOptions && levelOptions.link &&\n            levelOptions.link.lineWidth, series.options.link && series.options.link.lineWidth), attribs = seriesProto.pointAttribs.call(series, point, state);\n        if (point) {\n            if (point.isLink) {\n                attribs.stroke = linkColor;\n                attribs['stroke-width'] = linkLineWidth;\n                delete attribs.fill;\n            }\n            if (!point.visible) {\n                attribs.opacity = 0;\n            }\n        }\n        return attribs;\n    }\n    drawPoints() {\n        TreemapSeries.prototype.drawPoints.apply(this, arguments);\n        ColumnSeries.prototype.drawPoints.call(this, this.links);\n    }\n    /**\n     * Run translation operations for one node.\n     * @private\n     */\n    translateNode(point) {\n        const chart = this.chart, node = point.node, plotSizeY = chart.plotSizeY, plotSizeX = chart.plotSizeX, \n        // Get the layout modifiers which are common for all nodes.\n        { ax, bx, ay, by } = this.layoutModifier, x = ax * node.xPosition + bx, y = ay * node.yPosition + by, level = this.mapOptionsToLevel[node.level] || {}, markerOptions = TreegraphSeries_merge(this.options.marker, level.marker, point.options.marker), symbol = markerOptions.symbol, height = node.nodeSizeY, width = node.nodeSizeX, reversed = this.options.reversed, nodeX = node.x = (chart.inverted ?\n            plotSizeX - width / 2 - x :\n            x - width / 2), nodeY = node.y = (!reversed ?\n            plotSizeY - y - height / 2 :\n            y - height / 2), borderRadius = TreegraphSeries_pick(point.options.borderRadius, level.borderRadius, this.options.borderRadius), symbolFn = symbols[symbol || 'circle'];\n        if (symbolFn === void 0) {\n            point.hasImage = true;\n            point.shapeType = 'image';\n            point.imageUrl = symbol.match(/^url\\((.*?)\\)$/)[1];\n        }\n        else {\n            point.shapeType = 'path';\n        }\n        if (!point.visible && point.linkToParent) {\n            const parentNode = point.linkToParent.fromNode;\n            if (parentNode) {\n                const parentShapeArgs = parentNode.shapeArgs || {}, { x = 0, y = 0, width = 0, height = 0 } = parentShapeArgs;\n                if (!point.shapeArgs) {\n                    point.shapeArgs = {};\n                }\n                if (!point.hasImage) {\n                    TreegraphSeries_extend(point.shapeArgs, {\n                        d: symbolFn(x, y, width, height, borderRadius ? { r: borderRadius } : void 0)\n                    });\n                }\n                TreegraphSeries_extend(point.shapeArgs, { x, y });\n                point.plotX = parentNode.plotX;\n                point.plotY = parentNode.plotY;\n            }\n        }\n        else {\n            point.plotX = nodeX;\n            point.plotY = nodeY;\n            point.shapeArgs = {\n                x: nodeX,\n                y: nodeY,\n                width,\n                height,\n                cursor: !point.node.isLeaf ? 'pointer' : 'default'\n            };\n            if (!point.hasImage) {\n                point.shapeArgs.d = symbolFn(nodeX, nodeY, width, height, borderRadius ? { r: borderRadius } : void 0);\n            }\n        }\n        // Set the anchor position for tooltip.\n        point.tooltipPos = chart.inverted ?\n            [plotSizeY - nodeY - height / 2, plotSizeX - nodeX - width / 2] :\n            [nodeX + width / 2, nodeY];\n    }\n}\nTreegraphSeries.defaultOptions = TreegraphSeries_merge(TreemapSeries.defaultOptions, Treegraph_TreegraphSeriesDefaults);\nTreegraphSeries_extend(TreegraphSeries.prototype, {\n    pointClass: Treegraph_TreegraphPoint,\n    NodeClass: Treegraph_TreegraphNode,\n    LinkClass: TreegraphLink\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('treegraph', TreegraphSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Treegraph_TreegraphSeries = ((/* unused pure expression or super */ null && (TreegraphSeries)));\n/* *\n *\n *  API Options\n *\n * */\n/**\n * A `treegraph` series. If the [type](#series.treegraph.type)\n * option is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.treegraph\n * @exclude   allowDrillToNode, boostBlending, boostThreshold, curveFactor,\n * centerInCategory, connectEnds, connectNulls, colorAxis, colorKey,\n * dataSorting, dragDrop, findNearestPointBy, getExtremesFromAll, layout,\n * nodePadding,  pointInterval, pointIntervalUnit, pointPlacement, pointStart,\n * relativeXValue, softThreshold, stack, stacking, step,\n * traverseUpButton, xAxis, yAxis, zoneAxis, zones\n * @product   highcharts\n * @requires  modules/treemap\n * @requires  modules/treegraph\n * @apioption series.treegraph\n */\n/**\n * @extends   plotOptions.series.marker\n * @excluding enabled, enabledThreshold\n * @apioption series.treegraph.marker\n */\n/**\n * @type      {Highcharts.SeriesTreegraphDataLabelsOptionsObject|Array<Highcharts.SeriesTreegraphDataLabelsOptionsObject>}\n * @product   highcharts\n * @apioption series.treegraph.data.dataLabels\n */\n/**\n * @sample highcharts/series-treegraph/level-options\n *          Treegraph chart with level options applied\n *\n * @type      {Array<*>}\n * @excluding layoutStartingDirection, layoutAlgorithm\n * @apioption series.treegraph.levels\n */\n/**\n * Set collapsed status for nodes level-wise.\n * @type {boolean}\n * @apioption series.treegraph.levels.collapsed\n */\n/**\n * Set marker options for nodes at the level.\n * @extends   series.treegraph.marker\n * @apioption series.treegraph.levels.marker\n */\n/**\n * An array of data points for the series. For the `treegraph` series type,\n * points can be given in the following ways:\n *\n * 1. The array of arrays, with `keys` property, which defines how the fields in\n *     array should be interpreted\n *    ```js\n *       keys: ['id', 'parent'],\n *       data: [\n *           ['Category1'],\n *           ['Category1', 'Category2']\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\n *    series' [turboThreshold](#series.area.turboThreshold),\n *    this option is not available.\n *    The data of the treegraph series needs to be formatted in such a way, that\n *    there are no circular dependencies on the nodes\n *\n *  ```js\n *     data: [{\n *         id: 'Category1'\n *     }, {\n *         id: 'Category1',\n *         parent: 'Category2',\n *     }]\n *  ```\n *\n * @type      {Array<*>}\n * @extends   series.treemap.data\n * @product   highcharts\n * @excluding outgoing, weight, value\n * @apioption series.treegraph.data\n */\n/**\n * Options used for button, which toggles the collapse status of the node.\n *\n *\n * @apioption series.treegraph.data.collapseButton\n */\n/**\n * If point's children should be initially hidden\n *\n * @sample highcharts/series-treegraph/level-options\n *          Treegraph chart with initially hidden children\n *\n * @type {boolean}\n * @apioption series.treegraph.data.collapsed\n */\n''; // Gets doclets above into transpiled version\n\n;// ./code/es-modules/masters/modules/treegraph.src.js\n\n\n\n\n/* harmony default export */ const treegraph_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__512__","__WEBPACK_EXTERNAL_MODULE__540__","__WEBPACK_EXTERNAL_MODULE__260__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__28__","__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__","treegraph_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","applyRadius","path","r","i","length","x","y","push","prevSeg","nextSeg","x1","y1","x2","y2","directionX","directionY","Math","min","abs","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default","seriesTypes","treemap","NodeClass","TreemapNode","Treegraph_TreegraphNode","constructor","arguments","mod","shift","change","children","preX","hidden","wasVisited","collapsed","nextLeft","getLeftMostChild","thread","nextRight","getRightMostChild","getAncestor","leftIntNode","defaultAncestor","leftAnc","ancestor","getLeftMostSibling","parent","getParent","child","point","visible","hasChildren","getLeftSibling","relativeXPosition","parentNode","getFirstChild","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","pointClass","TreemapPoint","addEvent","fireEvent","merge","TreegraphPoint","dataLabelOnHidden","isLink","setState","draw","apply","graphic","animate","visibility","renderCollapseButton","series","parentGroup","levelOptions","mapOptionsToLevel","node","level","btnOptions","options","collapseButton","width","height","shape","style","chart","calculatedOpacity","onlyOnHover","state","shapeArgs","collapseButtonOptions","enabled","getCollapseBtnPosition","attr","text","rotation","inverted","rotationOriginX","rotationOriginY","opacity","destroy","fill","fillColor","color","renderer","label","padding","stroke","lineColor","lineWidth","align","zIndex","addClass","removeClass","css","getContrast","add","element","toggleCollapse","update","redraw","linkToParent","btnWidth","btnHeight","btn","states","hover","animation","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","extend","isArray","isNumber","isObject","TreeUtilities_merge","pick","relativeLength","Series_TreeUtilities","getColor","colorByPoint","colorIndexByPoint","colorIndex","index","parentColor","parentColorIndex","colors","siblings","points","chartOptionsChart","colorCount","styledMode","variateColor","colorVariation","parse","brighten","to","getLevelOptions","params","defaults","converted","from","levels","result","reduce","item","levelIsConstant","getNodeWidth","columnCount","nodeDistance","nodeWidth","plotSizeX","test","fraction","parseFloat","nDistance","Number","setTreeValues","tree","before","idRoot","nodeRoot","mapIdToNode","optionsPoint","childrenTotal","levelDynamic","name","id","forEach","newOptions","val","value","isLeaf","updateRootId","rootId","rootNode","userOptions","TreegraphLink_pick","TreegraphLink_extend","column","ColumnPoint","TreegraphLink","dataLabelOnNull","formatPrefix","fromNode","toNode","runEvent","oldOptions","TreegraphLayout","createDummyNode","gapSize","dummyNode","oldParentNode","calculatePositions","nodes","nodeList","resetValues","treeLayout","calculateRelativeX","beforeLayout","firstWalk","secondWalk","afterLayout","iEnd","leftSibling","apportion","executeShifts","leftChild","rightChild","midPoint","modSum","yPosition","xPosition","childNode","rightIntNode","rightOutNode","leftOutNode","rightIntMod","rightOutMod","leftIntMod","leftOutMod","moveSubtree","leftNode","rightNode","subtrees","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","deg2rad","TextPath_addEvent","TextPath_merge","uniqueKey","defined","TextPath_extend","setTextPath","textPathOptions","attributes","dy","startOffset","textAnchor","url","textWrapper","textPath","undo","e","textPathId","textAttribs","dx","transform","box","slice","tagName","href","added","textCache","buildText","setPolygon","event","bBox","tp","querySelector","polygon","b","h","fontMetrics","descender","lineCleanerRegex","RegExp","lines","innerHTML","replace","split","numOfLines","appendTopAndBottom","charIndex","positionOfChar","getRotationOfChar","cosRot","cos","sinRot","sin","lineIndex","lineLen","line","lineCharIndex","srcCharIndex","lower","upper","getStartPositionOfChar","unshift","charPos","getEndPositionOfChar","drawTextPath","labelOptions","useHTML","getDataLabelPath","dataLabelPath","getLinkPath","TreegraphSeries_getLinkPath","pathParams","radius","parentVisible","straight","curved","offset","seriesProto","TreemapSeries","ColumnSeries","symbols","TreegraphSeries_getLevelOptions","TreegraphSeries_getNodeWidth","arrayMax","crisp","TreegraphSeries_extend","TreegraphSeries_merge","TreegraphSeries_pick","TreegraphSeries_relativeLength","splat","Extensions_TextPath","compose","SVGElementClass","svgElementProto","TreegraphSeries","links","init","layoutAlgorythm","collectors","labelCollectors","some","f","linkLabels","dataLabels","allowOverlap","link","dataLabel","getLayoutModifiers","plotSizeY","map","p","minX","Infinity","maxX","minY","maxY","maxXSize","minXSize","maxYSize","minYSize","fillSpace","markerOptions","marker","symbol","nodeSizeY","nodeSizeX","max","ay","by","ax","bx","getLinks","data","pointOptions","destroyed","LinkClass","splice","buildTree","list","markerAttribs","setCollapsedStatus","drawTracker","translate","getTree","nodeMap","setRootNode","layoutModifier","translateNode","translateLink","setColorRecursive","linkWidth","factor","curveFactor","type","fromNodeWidth","diff","shapeType","xMiddle","plotX","plotY","dlBox","tooltipPos","drawNodeLabels","hasDataLabels","lineClamp","floor","dlOptions","drawDataLabels","alignDataLabel","hide","pointAttribs","stateOptions","linkColor","linkLineWidth","attribs","drawPoints","reversed","nodeX","nodeY","borderRadius","symbolFn","hasImage","imageUrl","match","cursor","defaultOptions","fillOpacity","fontWeight","fontSize","tooltip","linkFormat","pointFormat","defer","linkTextPath","linkFormatter","textOverflow","registerSeriesType"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox