Hacked By AnonymousFox

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

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/sankey\n * @requires highcharts\n *\n * Sankey diagram module\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"), require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SVGElement\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/sankey\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"SeriesRegistry\"], [\"highcharts/highcharts\",\"Point\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"SVGElement\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/sankey\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SVGElement\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"Point\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SVGElement\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__260__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__28__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 28:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 512:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 944:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ sankey_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es5/es-modules/Series/NodesComposition.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar _a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, seriesProto = _a.prototype, pointProto = _a.prototype.pointClass.prototype;\n\nvar defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Composition\n *\n * */\nvar NodesComposition;\n(function (NodesComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(PointClass, SeriesClass) {\n        var pointProto = PointClass.prototype,\n            seriesProto = SeriesClass.prototype;\n        pointProto.setNodeState = setNodeState;\n        pointProto.setState = setNodeState;\n        pointProto.update = updateNode;\n        seriesProto.destroy = destroy;\n        seriesProto.setData = setData;\n        return SeriesClass;\n    }\n    NodesComposition.compose = compose;\n    /**\n     * Create a single node that holds information on incoming and outgoing\n     * links.\n     * @private\n     */\n    function createNode(id) {\n        var PointClass = this.pointClass,\n            findById = function (nodes,\n            id) { return find(nodes,\n            function (node) { return node.id === id; }); };\n        var node = findById(this.nodes,\n            id),\n            options;\n        if (!node) {\n            options = this.options.nodes && findById(this.options.nodes, id);\n            var newNode_1 = new PointClass(this,\n                extend({\n                    className: 'highcharts-node',\n                    isNode: true,\n                    id: id,\n                    y: 1 // Pass isNull test\n                },\n                options));\n            newNode_1.linksTo = [];\n            newNode_1.linksFrom = [];\n            /**\n             * Return the largest sum of either the incoming or outgoing links.\n             * @private\n             */\n            newNode_1.getSum = function () {\n                var sumTo = 0,\n                    sumFrom = 0;\n                newNode_1.linksTo.forEach(function (link) {\n                    sumTo += link.weight || 0;\n                });\n                newNode_1.linksFrom.forEach(function (link) {\n                    sumFrom += link.weight || 0;\n                });\n                return Math.max(sumTo, sumFrom);\n            };\n            /**\n             * Get the offset in weight values of a point/link.\n             * @private\n             */\n            newNode_1.offset = function (point, coll) {\n                var offset = 0;\n                for (var i = 0; i < newNode_1[coll].length; i++) {\n                    if (newNode_1[coll][i] === point) {\n                        return offset;\n                    }\n                    offset += newNode_1[coll][i].weight;\n                }\n            };\n            // Return true if the node has a shape, otherwise all links are\n            // outgoing.\n            newNode_1.hasShape = function () {\n                var outgoing = 0;\n                newNode_1.linksTo.forEach(function (link) {\n                    if (link.outgoing) {\n                        outgoing++;\n                    }\n                });\n                return (!newNode_1.linksTo.length ||\n                    outgoing !== newNode_1.linksTo.length);\n            };\n            newNode_1.index = this.nodes.push(newNode_1) - 1;\n            node = newNode_1;\n        }\n        node.formatPrefix = 'node';\n        // For use in formats\n        node.name = node.name || node.options.id || '';\n        // Mass is used in networkgraph:\n        node.mass = pick(\n        // Node:\n        node.options.mass, node.options.marker && node.options.marker.radius, \n        // Series:\n        this.options.marker && this.options.marker.radius, \n        // Default:\n        4);\n        return node;\n    }\n    NodesComposition.createNode = createNode;\n    /**\n     * Destroy all nodes and links.\n     * @private\n     */\n    function destroy() {\n        // Nodes must also be destroyed (#8682, #9300)\n        this.data = []\n            .concat(this.points || [], this.nodes);\n        return seriesProto.destroy.apply(this, arguments);\n    }\n    NodesComposition.destroy = destroy;\n    /**\n     * Extend generatePoints by adding the nodes, which are Point objects but\n     * pushed to the this.nodes array.\n     * @private\n     */\n    function generatePoints() {\n        var _this = this;\n        var chart = this.chart,\n            nodeLookup = {};\n        seriesProto.generatePoints.call(this);\n        if (!this.nodes) {\n            this.nodes = []; // List of Point-like node items\n        }\n        this.colorCounter = 0;\n        // Reset links from previous run\n        this.nodes.forEach(function (node) {\n            node.linksFrom.length = 0;\n            node.linksTo.length = 0;\n            node.level = node.options.level;\n        });\n        // Create the node list and set up links\n        this.points.forEach(function (point) {\n            if (defined(point.from)) {\n                if (!nodeLookup[point.from]) {\n                    nodeLookup[point.from] = _this.createNode(point.from);\n                }\n                nodeLookup[point.from].linksFrom.push(point);\n                point.fromNode = nodeLookup[point.from];\n                // Point color defaults to the fromNode's color\n                if (chart.styledMode) {\n                    point.colorIndex = pick(point.options.colorIndex, nodeLookup[point.from].colorIndex);\n                }\n                else {\n                    point.color =\n                        point.options.color || nodeLookup[point.from].color;\n                }\n            }\n            if (defined(point.to)) {\n                if (!nodeLookup[point.to]) {\n                    nodeLookup[point.to] = _this.createNode(point.to);\n                }\n                nodeLookup[point.to].linksTo.push(point);\n                point.toNode = nodeLookup[point.to];\n            }\n            point.name = point.name || point.id; // For use in formats\n        }, this);\n        // Store lookup table for later use\n        this.nodeLookup = nodeLookup;\n    }\n    NodesComposition.generatePoints = generatePoints;\n    /**\n     * Destroy all nodes on setting new data\n     * @private\n     */\n    function setData() {\n        if (this.nodes) {\n            this.nodes.forEach(function (node) {\n                node.destroy();\n            });\n            this.nodes.length = 0;\n        }\n        seriesProto.setData.apply(this, arguments);\n    }\n    /**\n     * When hovering node, highlight all connected links. When hovering a link,\n     * highlight all connected nodes.\n     * @private\n     */\n    function setNodeState(state) {\n        var args = arguments,\n            others = this.isNode ? this.linksTo.concat(this.linksFrom) :\n                [this.fromNode,\n            this.toNode];\n        if (state !== 'select') {\n            others.forEach(function (linkOrNode) {\n                if (linkOrNode && linkOrNode.series) {\n                    pointProto.setState.apply(linkOrNode, args);\n                    if (!linkOrNode.isNode) {\n                        if (linkOrNode.fromNode.graphic) {\n                            pointProto.setState.apply(linkOrNode.fromNode, args);\n                        }\n                        if (linkOrNode.toNode && linkOrNode.toNode.graphic) {\n                            pointProto.setState.apply(linkOrNode.toNode, args);\n                        }\n                    }\n                }\n            });\n        }\n        pointProto.setState.apply(this, args);\n    }\n    NodesComposition.setNodeState = setNodeState;\n    /**\n     * When updating a node, don't update `series.options.data`, but\n     * `series.options.nodes`\n     * @private\n     */\n    function updateNode(options, redraw, animation, runEvent) {\n        var _this = this;\n        var nodes = this.series.options.nodes,\n            data = this.series.options.data,\n            dataLength = (data === null || data === void 0 ? void 0 : data.length) || 0,\n            linkConfig = data === null || data === void 0 ? void 0 : data[this.index];\n        pointProto.update.call(this, options, this.isNode ? false : redraw, // Hold the redraw for nodes\n        animation, runEvent);\n        if (this.isNode) {\n            // `this.index` refers to `series.nodes`, not `options.nodes` array\n            var nodeIndex = (nodes || [])\n                    .reduce(// Array.findIndex needs a polyfill\n                function (prevIndex,\n                n,\n                index) {\n                    return (_this.id === n.id ? index : prevIndex);\n            }, -1), \n            // Merge old config with new config. New config is stored in\n            // options.data, because of default logic in point.update()\n            nodeConfig = merge(nodes && nodes[nodeIndex] || {}, (data === null || data === void 0 ? void 0 : data[this.index]) || {});\n            // Restore link config\n            if (data) {\n                if (linkConfig) {\n                    data[this.index] = linkConfig;\n                }\n                else {\n                    // Remove node from config if there's more nodes than links\n                    data.length = dataLength;\n                }\n            }\n            // Set node config\n            if (nodes) {\n                if (nodeIndex >= 0) {\n                    nodes[nodeIndex] = nodeConfig;\n                }\n                else {\n                    nodes.push(nodeConfig);\n                }\n            }\n            else {\n                this.series.options.nodes = [nodeConfig];\n            }\n            if (pick(redraw, true)) {\n                this.series.chart.redraw(animation);\n            }\n        }\n    }\n    NodesComposition.updateNode = updateNode;\n})(NodesComposition || (NodesComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Series_NodesComposition = (NodesComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Point\"],\"commonjs\":[\"highcharts\",\"Point\"],\"commonjs2\":[\"highcharts\",\"Point\"],\"root\":[\"Highcharts\",\"Point\"]}\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_ = __webpack_require__(260);\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default = /*#__PURE__*/__webpack_require__.n(highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_);\n;// ./code/es5/es-modules/Series/Sankey/SankeyPoint.js\n/* *\n *\n *  Sankey diagram module\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar ColumnSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column;\n\nvar SankeyPoint_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n/* *\n *\n *  Class\n *\n * */\nvar SankeyPoint = /** @class */ (function (_super) {\n    __extends(SankeyPoint, _super);\n    function SankeyPoint() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    SankeyPoint.prototype.applyOptions = function (options, x) {\n        highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.applyOptions.call(this, options, x);\n        // Treat point.level as a synonym of point.column\n        if (SankeyPoint_defined(this.options.level)) {\n            this.options.column = this.column = this.options.level;\n        }\n        return this;\n    };\n    /**\n     * @private\n     */\n    SankeyPoint.prototype.getClassName = function () {\n        return (this.isNode ? 'highcharts-node ' : 'highcharts-link ') +\n            highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default().prototype.getClassName.call(this);\n    };\n    /**\n     * If there are incoming links, place it to the right of the\n     * highest order column that links to this one.\n     *\n     * @private\n     */\n    SankeyPoint.prototype.getFromNode = function () {\n        var node = this;\n        var fromColumn = -1,\n            fromNode;\n        for (var i = 0; i < node.linksTo.length; i++) {\n            var point = node.linksTo[i];\n            if (point.fromNode.column > fromColumn &&\n                point.fromNode !== node // #16080\n            ) {\n                fromNode = point.fromNode;\n                fromColumn = fromNode.column;\n            }\n        }\n        return { fromNode: fromNode, fromColumn: fromColumn };\n    };\n    /**\n     * Calculate node.column if it's not set by user\n     * @private\n     */\n    SankeyPoint.prototype.setNodeColumn = function () {\n        var node = this;\n        if (!SankeyPoint_defined(node.options.column)) {\n            // No links to this node, place it left\n            if (node.linksTo.length === 0) {\n                node.column = 0;\n            }\n            else {\n                node.column = node.getFromNode().fromColumn + 1;\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    SankeyPoint.prototype.isValid = function () {\n        return this.isNode || typeof this.weight === 'number';\n    };\n    return SankeyPoint;\n}(ColumnSeries.prototype.pointClass));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sankey_SankeyPoint = (SankeyPoint);\n\n;// ./code/es5/es-modules/Series/Sankey/SankeySeriesDefaults.js\n/* *\n *\n *  Sankey diagram module\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * A sankey diagram is a type of flow diagram, in which the width of the\n * link between two nodes is shown proportionally to the flow quantity.\n *\n * @sample highcharts/demo/sankey-diagram/\n *         Sankey diagram\n * @sample highcharts/plotoptions/sankey-inverted/\n *         Inverted sankey diagram\n * @sample highcharts/plotoptions/sankey-outgoing\n *         Sankey diagram with outgoing links\n *\n * @extends      plotOptions.column\n * @since        6.0.0\n * @product      highcharts\n * @excluding    animationLimit, boostBlending, boostThreshold, borderRadius,\n *               crisp, cropThreshold, colorAxis, colorKey, dataSorting, depth,\n *               dragDrop, edgeColor, edgeWidth, findNearestPointBy, grouping,\n *               groupPadding, groupZPadding, legendSymbolColor, maxPointWidth,\n *               minPointLength, negativeColor, pointInterval,\n *               pointIntervalUnit, pointPadding, pointPlacement, pointRange,\n *               pointStart, pointWidth, shadow, softThreshold, stacking,\n *               threshold, zoneAxis, zones\n * @requires     modules/sankey\n * @optionparent plotOptions.sankey\n *\n * @private\n */\nvar SankeySeriesDefaults = {\n    borderWidth: 0,\n    colorByPoint: true,\n    /**\n     * Higher numbers makes the links in a sankey diagram or dependency\n     * wheelrender more curved. A `curveFactor` of 0 makes the lines\n     * straight.\n     *\n     * @private\n     */\n    curveFactor: 0.33,\n    /**\n     * Options for the data labels appearing on top of the nodes and links.\n     * For sankey charts, data labels are visible for the nodes by default,\n     * but hidden for links. This is controlled by modifying the\n     * `nodeFormat`, and the `format` that applies to links and is an empty\n     * string by default.\n     *\n     * @declare Highcharts.SeriesSankeyDataLabelsOptionsObject\n     *\n     * @private\n     */\n    dataLabels: {\n        enabled: true,\n        backgroundColor: 'none', // Enable padding\n        crop: false,\n        /**\n         * The\n         * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n         * specifying what to show for _nodes_ in the sankey diagram. By\n         * default the `nodeFormatter` returns `{point.name}`.\n         *\n         * @sample highcharts/plotoptions/sankey-link-datalabels/\n         *         Node and link data labels\n         *\n         * @type {string}\n         */\n        nodeFormat: void 0,\n        /**\n         * Callback to format data labels for _nodes_ in the sankey diagram.\n         * The `nodeFormat` option takes precedence over the\n         * `nodeFormatter`.\n         *\n         * @type  {Highcharts.SeriesSankeyDataLabelsFormatterCallbackFunction}\n         * @since 6.0.2\n         */\n        nodeFormatter: function () {\n            return this.point.name;\n        },\n        format: void 0,\n        /**\n         * @type {Highcharts.SeriesSankeyDataLabelsFormatterCallbackFunction}\n         */\n        formatter: function () {\n            return;\n        },\n        inside: true\n    },\n    /**\n     * @default   true\n     * @extends   plotOptions.series.inactiveOtherPoints\n     * @private\n     */\n    inactiveOtherPoints: true,\n    /**\n     * Set options on specific levels. Takes precedence over series options,\n     * but not node and link options.\n     *\n     * @sample highcharts/demo/sunburst\n     *         Sunburst chart\n     *\n     * @type      {Array<*>}\n     * @since     7.1.0\n     * @apioption plotOptions.sankey.levels\n     */\n    /**\n     * Can set `borderColor` on all nodes which lay on the same level.\n     *\n     * @type      {Highcharts.ColorString}\n     * @apioption plotOptions.sankey.levels.borderColor\n     */\n    /**\n     * Can set `borderWidth` on all nodes which lay on the same level.\n     *\n     * @type      {number}\n     * @apioption plotOptions.sankey.levels.borderWidth\n     */\n    /**\n     * Can set `color` on all nodes which lay on the same level.\n     *\n     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @apioption plotOptions.sankey.levels.color\n     */\n    /**\n     * Can set `colorByPoint` on all nodes which lay on the same level.\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption plotOptions.sankey.levels.colorByPoint\n     */\n    /**\n     * Can set `dataLabels` on all points which lay on the same level.\n     *\n     * @extends   plotOptions.sankey.dataLabels\n     * @apioption plotOptions.sankey.levels.dataLabels\n     */\n    /**\n     * Decides which level takes effect from the options set in the levels\n     * object.\n     *\n     * @type      {number}\n     * @apioption plotOptions.sankey.levels.level\n     */\n    /**\n     * Can set `linkOpacity` on all points which lay on the same level.\n     *\n     * @type      {number}\n     * @default   0.5\n     * @apioption plotOptions.sankey.levels.linkOpacity\n     */\n    /**\n     * Can set `states` on all nodes and points which lay on the same level.\n     *\n     * @extends   plotOptions.sankey.states\n     * @apioption plotOptions.sankey.levels.states\n     */\n    /**\n     * Determines color mode for sankey links. Available options:\n     *\n     * - `from` color of the sankey link will be the same as the 'from node'\n     *\n     * - `gradient` color of the sankey link will be set to gradient between\n     * colors of 'from node' and 'to node'\n     *\n     * - `to` color of the sankey link will be same as the 'to node'.\n     *\n     * @sample highcharts/demo/vertical-sankey\n     *         Vertical sankey diagram with gradients\n     * @sample highcharts/series-sankey/link-color-mode\n     *         Sankey diagram with gradients and explanation\n     *\n     * @type      {('from'|'gradient'|'to')}\n     * @since     11.2.0\n     */\n    linkColorMode: 'from',\n    /**\n     * Opacity for the links between nodes in the sankey diagram.\n     *\n     * @private\n     */\n    linkOpacity: 0.5,\n    /**\n     * Opacity for the nodes in the sankey diagram.\n     *\n     * @private\n     */\n    opacity: 1,\n    /**\n     * The minimal width for a line of a sankey. By default,\n     * 0 values are not shown.\n     *\n     * @sample highcharts/plotoptions/sankey-minlinkwidth\n     *         Sankey diagram with minimal link height\n     *\n     * @type      {number}\n     * @since     7.1.3\n     * @default   0\n     * @apioption plotOptions.sankey.minLinkWidth\n     *\n     * @private\n     */\n    minLinkWidth: 0,\n    /**\n     * Determines which side of the chart the nodes are to be aligned to. When\n     * the chart is inverted, `top` aligns to the left and `bottom` to the\n     * right.\n     *\n     * @sample highcharts/plotoptions/sankey-nodealignment\n     *         Node alignment demonstrated\n     *\n     * @type      {'top'|'center'|'bottom'}\n     * @apioption plotOptions.sankey.nodeAlignment\n     */\n    nodeAlignment: 'center',\n    /**\n     * The pixel width of each node in a sankey diagram or dependency wheel, or\n     * the height in case the chart is inverted.\n     *\n     * Can be a number or a percentage string.\n     *\n     * Sankey series also support setting it to `auto`. With this setting, the\n     * nodes are sized to fill up the plot area in the longitudinal direction,\n     * regardless of the number of levels.\n     *\n     * @see    [sankey.nodeDistance](#nodeDistance)\n     * @sample highcharts/series-sankey/node-distance\n     *         Sankey with auto node width combined with node distance\n     * @sample highcharts/series-organization/node-distance\n     *         Organization chart with node distance of 50%\n     *\n     * @type {number|string}\n     */\n    nodeWidth: 20,\n    /**\n     * The padding between nodes in a sankey diagram or dependency wheel, in\n     * pixels. For sankey charts, this applies to the nodes of the same column,\n     * so vertical distance by default, or horizontal distance in an inverted\n     * (vertical) sankey.\n     *\n     * If the number of nodes is so great that it is impossible to lay them out\n     * within the plot area with the given `nodePadding`, they will be rendered\n     * with a smaller padding as a strategy to avoid overflow.\n     */\n    nodePadding: 10,\n    /**\n     * The distance between nodes in a sankey diagram in the longitudinal\n     * direction. The longitudinal direction means the direction that the chart\n     * flows - in a horizontal chart the distance is horizontal, in an inverted\n     * chart (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-sankey/node-distance\n     *         Sankey with dnode distance of 100% means equal to node width\n     * @sample highcharts/series-organization/node-distance\n     *         Organization chart with node distance of 50%\n     * @type   {number|string}\n     */\n    nodeDistance: 30,\n    showInLegend: false,\n    states: {\n        hover: {\n            /**\n             * Opacity for the links between nodes in the sankey diagram in\n             * hover mode.\n             */\n            linkOpacity: 1,\n            /**\n             * Opacity for the nodes in the sankey diagram in hover mode.\n             */\n            opacity: 1\n        },\n        /**\n         * The opposite state of a hover for a single point node/link.\n         *\n         * @declare Highcharts.SeriesStatesInactiveOptionsObject\n         */\n        inactive: {\n            /**\n             * Opacity for the links between nodes in the sankey diagram in\n             * inactive mode.\n             */\n            linkOpacity: 0.1,\n            /**\n             * Opacity of the nodes in the sankey diagram in inactive mode.\n             */\n            opacity: 0.1,\n            /**\n             * Animation when not hovering over the marker.\n             *\n             * @type      {boolean|Partial<Highcharts.AnimationOptionsObject>}\n             * @apioption plotOptions.series.states.inactive.animation\n             */\n            animation: {\n                /** @internal */\n                duration: 50\n            }\n        }\n    },\n    tooltip: {\n        /**\n         * A callback for defining the format for _nodes_ in the chart's\n         * tooltip, as opposed to links.\n         *\n         * @type      {Highcharts.FormatterCallbackFunction<Highcharts.SankeyNodeObject>}\n         * @since     6.0.2\n         * @apioption plotOptions.sankey.tooltip.nodeFormatter\n         */\n        /**\n         * Whether the tooltip should follow the pointer or stay fixed on\n         * the item.\n         */\n        followPointer: true,\n        headerFormat: '<span style=\"font-size: 0.8em\">{series.name}</span><br/>',\n        pointFormat: '{point.fromNode.name} \\u2192 {point.toNode.name}: <b>{point.weight}</b><br/>',\n        /**\n         * The\n         * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n         * specifying what to show for _nodes_ in tooltip of a diagram\n         * series, as opposed to links.\n         */\n        nodeFormat: '{point.name}: <b>{point.sum}</b><br/>'\n    }\n};\n/**\n * A `sankey` series. If the [type](#series.sankey.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.sankey\n * @excluding animationLimit, boostBlending, boostThreshold, borderColor,\n *            borderRadius, borderWidth, crisp, cropThreshold, dataParser,\n *            dataURL, depth, dragDrop, edgeColor, edgeWidth,\n *            findNearestPointBy, getExtremesFromAll, grouping, groupPadding,\n *            groupZPadding, label, maxPointWidth, negativeColor, pointInterval,\n *            pointIntervalUnit, pointPadding, pointPlacement, pointRange,\n *            pointStart, pointWidth, shadow, softThreshold, stacking,\n *            threshold, zoneAxis, zones, dataSorting\n * @product   highcharts\n * @requires  modules/sankey\n * @apioption series.sankey\n */\n/**\n * A collection of options for the individual nodes. The nodes in a sankey\n * diagram are auto-generated instances of `Highcharts.Point`, but options can\n * be applied here and linked by the `id`.\n *\n * @sample highcharts/css/sankey/\n *         Sankey diagram with node options\n *\n * @declare   Highcharts.SeriesSankeyNodesOptionsObject\n * @type      {Array<*>}\n * @product   highcharts\n * @apioption series.sankey.nodes\n */\n/**\n * The id of the auto-generated node, referring to the `from` or `to` setting of\n * the link.\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.sankey.nodes.id\n */\n/**\n * The color of the auto generated node.\n *\n * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product   highcharts\n * @apioption series.sankey.nodes.color\n */\n/**\n * The color index of the auto generated node, especially for use in styled\n * mode.\n *\n * @type      {number}\n * @product   highcharts\n * @apioption series.sankey.nodes.colorIndex\n */\n/**\n * An optional column index of where to place the node. The default behaviour is\n * to place it next to the preceding node. Note that this option name is\n * counter intuitive in inverted charts, like for example an organization chart\n * rendered top down. In this case the \"columns\" are horizontal.\n *\n * @sample highcharts/plotoptions/sankey-node-column/\n *         Specified node column\n *\n * @type      {number}\n * @since     6.0.5\n * @product   highcharts\n * @apioption series.sankey.nodes.column\n */\n/**\n * Individual data label for each node. The options are the same as\n * the ones for [series.sankey.dataLabels](#series.sankey.dataLabels).\n *\n * @extends   plotOptions.sankey.dataLabels\n * @apioption series.sankey.nodes.dataLabels\n */\n/**\n * The height of the node.\n *\n * @sample highcharts/series-sankey/height/\n *         Sankey diagram with height options\n *\n * @type      {number}\n * @since     11.3.0\n * @apioption series.sankey.nodes.height\n */\n/**\n * An optional level index of where to place the node. The default behaviour is\n * to place it next to the preceding node. Alias of `nodes.column`, but in\n * inverted sankeys and org charts, the levels are laid out as rows.\n *\n * @type      {number}\n * @since     7.1.0\n * @product   highcharts\n * @apioption series.sankey.nodes.level\n */\n/**\n * The name to display for the node in data labels and tooltips. Use this when\n * the name is different from the `id`. Where the id must be unique for each\n * node, this is not necessary for the name.\n *\n * @sample highcharts/css/sankey/\n *         Sankey diagram with node options\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.sankey.nodes.name\n */\n/**\n * This option is deprecated, use\n * [offsetHorizontal](#series.sankey.nodes.offsetHorizontal) and\n * [offsetVertical](#series.sankey.nodes.offsetVertical) instead.\n *\n * In a horizontal layout, the vertical offset of a node in terms of weight.\n * Positive values shift the node downwards, negative shift it upwards. In a\n * vertical layout, like organization chart, the offset is horizontal.\n *\n * If a percentage string is given, the node is offset by the percentage of the\n * node size plus `nodePadding`.\n *\n * @deprecated\n * @type      {number|string}\n * @default   0\n * @since     6.0.5\n * @product   highcharts\n * @apioption series.sankey.nodes.offset\n */\n/**\n * The horizontal offset of a node. Positive values shift the node right,\n * negative shift it left.\n *\n * If a percentage string is given, the node is offset by the percentage of the\n * node size.\n *\n * @sample highcharts/plotoptions/sankey-node-column/\n *         Specified node offset\n *\n * @type      {number|string}\n * @since 9.3.0\n * @product   highcharts\n * @apioption series.sankey.nodes.offsetHorizontal\n */\n/**\n * The vertical offset of a node. Positive values shift the node down,\n * negative shift it up.\n *\n * If a percentage string is given, the node is offset by the percentage of the\n * node size.\n *\n * @sample highcharts/plotoptions/sankey-node-column/\n *         Specified node offset\n *\n * @type      {number|string}\n * @since 9.3.0\n * @product   highcharts\n * @apioption series.sankey.nodes.offsetVertical\n */\n/**\n * An array of data points for the series. For the `sankey` series type,\n * points can be given in the following way:\n *\n * An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of data\n * points exceeds the series' [turboThreshold](#series.area.turboThreshold),\n * this option is not available.\n *\n *  ```js\n *     data: [{\n *         from: 'Category1',\n *         to: 'Category2',\n *         weight: 2\n *     }, {\n *         from: 'Category1',\n *         to: 'Category3',\n *         weight: 5\n *     }]\n *  ```\n *\n *  When you provide the data as tuples, the keys option has to be set as well.\n *\n *  ```js\n *     keys: ['from', 'to', 'weight'],\n *     data: [\n *         ['Category1', 'Category2', 2],\n *         ['Category1', 'Category3', 5]\n *     ]\n *  ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n *         Config objects\n *\n * @declare   Highcharts.SeriesSankeyPointOptionsObject\n * @type      {Array<*>|Array<Array<(string|number)>>}\n * @extends   series.line.data\n * @excluding dragDrop, drilldown, marker, x, y\n * @product   highcharts\n * @apioption series.sankey.data\n */\n/**\n * The color for the individual _link_. By default, the link color is the same\n * as the node it extends from. The `series.fillOpacity` option also applies to\n * the points, so when setting a specific link color, consider setting the\n * `fillOpacity` to 1.\n *\n * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product   highcharts\n * @apioption series.sankey.data.color\n */\n/**\n * @type      {Highcharts.SeriesSankeyDataLabelsOptionsObject|Array<Highcharts.SeriesSankeyDataLabelsOptionsObject>}\n * @product   highcharts\n * @apioption series.sankey.data.dataLabels\n */\n/**\n * The node that the link runs from.\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.sankey.data.from\n */\n/**\n * The node that the link runs to.\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.sankey.data.to\n */\n/**\n * Whether the link goes out of the system.\n *\n * @sample highcharts/plotoptions/sankey-outgoing\n *         Sankey chart with outgoing links\n *\n * @type      {boolean}\n * @default   false\n * @product   highcharts\n * @apioption series.sankey.data.outgoing\n */\n/**\n * The weight of the link.\n *\n * @type      {number|null}\n * @product   highcharts\n * @apioption series.sankey.data.weight\n */\n''; // Adds doclets above to transpiled file\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sankey_SankeySeriesDefaults = (SankeySeriesDefaults);\n\n;// ./code/es5/es-modules/Series/Sankey/SankeyColumnComposition.js\n/* *\n *\n *  Sankey diagram module\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar SankeyColumnComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, getAlignFactor = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getAlignFactor, relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n *  Composition\n *\n * */\nvar SankeyColumnComposition;\n(function (SankeyColumnComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * SankeyColumn Composition\n     * @private\n     * @function Highcharts.SankeyColumn#compose\n     *\n     * @param {Array<SankeyPoint>} points\n     * The array of nodes\n     * @param {SankeySeries} series\n     * Series connected to column\n     * @return {ArrayComposition} SankeyColumnArray\n     */\n    function compose(points, series) {\n        var sankeyColumnArray = points;\n        sankeyColumnArray.sankeyColumn =\n            new SankeyColumnAdditions(sankeyColumnArray, series);\n        return sankeyColumnArray;\n    }\n    SankeyColumnComposition.compose = compose;\n    /* *\n     *\n     *  Classes\n     *\n     * */\n    var SankeyColumnAdditions = /** @class */ (function () {\n            /* *\n             *\n             *  Constructor\n             *\n             * */\n            function SankeyColumnAdditions(points, series) {\n                this.points = points;\n            this.series = series;\n        }\n        /* *\n         *\n         *  Functions\n         *\n         * */\n        /**\n         * Calculate translation factor used in column and nodes distribution\n         * @private\n         * @function Highcharts.SankeyColumn#getTranslationFactor\n         *\n         * @param {SankeySeries} series\n         * The Series\n         * @return {number} TranslationFactor\n         * Translation Factor\n         */\n        SankeyColumnAdditions.prototype.getTranslationFactor = function (series) {\n            var column = this.points,\n                nodes = column.slice(),\n                chart = series.chart,\n                minLinkWidth = series.options.minLinkWidth || 0;\n            var skipPoint,\n                factor = 0,\n                i,\n                remainingHeight = ((chart.plotSizeY || 0) -\n                    (series.options.borderWidth || 0) -\n                    (column.length - 1) * series.nodePadding);\n            // Because the minLinkWidth option doesn't obey the direct\n            // translation, we need to run translation iteratively, check\n            // node heights, remove those nodes affected by minLinkWidth,\n            // check again, etc.\n            while (column.length) {\n                factor = remainingHeight / column.sankeyColumn.sum();\n                skipPoint = false;\n                i = column.length;\n                while (i--) {\n                    if (column[i].getSum() * factor < minLinkWidth) {\n                        column.splice(i, 1);\n                        remainingHeight =\n                            Math.max(0, remainingHeight - minLinkWidth);\n                        skipPoint = true;\n                    }\n                }\n                if (!skipPoint) {\n                    break;\n                }\n            }\n            // Re-insert original nodes\n            column.length = 0;\n            for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n                var node = nodes_1[_i];\n                column.push(node);\n            }\n            return factor;\n        };\n        /**\n         * Get the top position of the column in pixels\n         * @private\n         * @function Highcharts.SankeyColumn#top\n         *\n         * @param {number} factor\n         * The Translation Factor\n         * @return {number} top\n         * The top position of the column\n         */\n        SankeyColumnAdditions.prototype.top = function (factor) {\n            var series = this.series,\n                nodePadding = series.nodePadding,\n                height = this.points.reduce(function (height,\n                node) {\n                    if (height > 0) {\n                        height += nodePadding;\n                }\n                var nodeHeight = Math.max(node.getSum() * factor,\n                    series.options.minLinkWidth || 0);\n                height += nodeHeight;\n                return height;\n            }, 0);\n            // Node alignment option handling #19096\n            return getAlignFactor(series.options.nodeAlignment || 'center') * ((series.chart.plotSizeY || 0) - height);\n        };\n        /**\n         * Get the left position of the column in pixels\n         * @private\n         * @function Highcharts.SankeyColumn#top\n         *\n         * @param {number} factor\n         * The Translation Factor\n         * @return {number} left\n         * The left position of the column\n         */\n        SankeyColumnAdditions.prototype.left = function (factor) {\n            var series = this.series,\n                chart = series.chart,\n                equalNodes = series.options.equalNodes,\n                maxNodesLength = (chart.inverted ? chart.plotHeight : chart.plotWidth),\n                nodePadding = series.nodePadding,\n                width = this.points.reduce(function (width,\n                node) {\n                    if (width > 0) {\n                        width += nodePadding;\n                }\n                var nodeWidth = equalNodes ?\n                        maxNodesLength / node.series.nodes.length -\n                            nodePadding :\n                        Math.max(node.getSum() * factor,\n                    series.options.minLinkWidth || 0);\n                width += nodeWidth;\n                return width;\n            }, 0);\n            return ((chart.plotSizeX || 0) - Math.round(width)) / 2;\n        };\n        /**\n         * Calculate sum of all nodes inside specific column\n         * @private\n         * @function Highcharts.SankeyColumn#sum\n         *\n         * @param {ArrayComposition} this\n         * Sankey Column Array\n         *\n         * @return {number} sum\n         * Sum of all nodes inside column\n         */\n        SankeyColumnAdditions.prototype.sum = function () {\n            return this.points.reduce(function (sum, node) { return (sum + node.getSum()); }, 0);\n        };\n        /**\n         * Get the offset in pixels of a node inside the column\n         * @private\n         * @function Highcharts.SankeyColumn#offset\n         *\n         * @param {SankeyPoint} node\n         * Sankey node\n         * @param {number} factor\n         * Translation Factor\n         * @return {number} offset\n         * Offset of a node inside column\n         */\n        SankeyColumnAdditions.prototype.offset = function (node, factor) {\n            var column = this.points,\n                series = this.series,\n                nodePadding = series.nodePadding;\n            var offset = 0,\n                totalNodeOffset;\n            if (series.is('organization') && node.hangsFrom) {\n                return {\n                    absoluteTop: node.hangsFrom.nodeY\n                };\n            }\n            for (var i = 0; i < column.length; i++) {\n                var sum = column[i].getSum();\n                var height = Math.max(sum * factor,\n                    series.options.minLinkWidth || 0);\n                var directionOffset = node.options[series.chart.inverted ?\n                        'offsetHorizontal' :\n                        'offsetVertical'],\n                    optionOffset = node.options.offset || 0;\n                if (sum) {\n                    totalNodeOffset = height + nodePadding;\n                }\n                else {\n                    // If node sum equals 0 nodePadding is missed #12453\n                    totalNodeOffset = 0;\n                }\n                if (column[i] === node) {\n                    return {\n                        relativeTop: offset + (SankeyColumnComposition_defined(directionOffset) ?\n                            // `directionOffset` is a percent of the node\n                            // height\n                            relativeLength(directionOffset, height) :\n                            relativeLength(optionOffset, totalNodeOffset))\n                    };\n                }\n                offset += totalNodeOffset;\n            }\n        };\n        return SankeyColumnAdditions;\n    }());\n    SankeyColumnComposition.SankeyColumnAdditions = SankeyColumnAdditions;\n})(SankeyColumnComposition || (SankeyColumnComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sankey_SankeyColumnComposition = (SankeyColumnComposition);\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/es5/es-modules/Series/TreeUtilities.js\n/* *\n *\n *  (c) 2014-2024 Highsoft AS\n *\n *  Authors: Jon Arild Nygard / Oystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar TreeUtilities_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, TreeUtilities_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, TreeUtilities_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, TreeUtilities_relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getColor(node, options) {\n    var index = options.index,\n        mapOptionsToLevel = options.mapOptionsToLevel,\n        parentColor = options.parentColor,\n        parentColorIndex = options.parentColorIndex,\n        series = options.series,\n        colors = options.colors,\n        siblings = options.siblings,\n        points = series.points,\n        chartOptionsChart = series.chart.options.chart;\n    var getColorByPoint,\n        point,\n        level,\n        colorByPoint,\n        colorIndexByPoint,\n        color,\n        colorIndex;\n    /**\n     * @private\n     */\n    var variateColor = function (color) {\n            var colorVariation = level && level.colorVariation;\n        if (colorVariation &&\n            colorVariation.key === 'brightness' &&\n            index &&\n            siblings) {\n            return highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(color).brighten(colorVariation.to * (index / siblings)).get();\n        }\n        return color;\n    };\n    if (node) {\n        point = points[node.i];\n        level = mapOptionsToLevel[node.level] || {};\n        getColorByPoint = point && level.colorByPoint;\n        if (getColorByPoint) {\n            colorIndexByPoint = point.index % (colors ?\n                colors.length :\n                chartOptionsChart.colorCount);\n            colorByPoint = colors && colors[colorIndexByPoint];\n        }\n        // Select either point color, level color or inherited color.\n        if (!series.chart.styledMode) {\n            color = TreeUtilities_pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);\n        }\n        colorIndex = TreeUtilities_pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);\n    }\n    return {\n        color: color,\n        colorIndex: colorIndex\n    };\n}\n/**\n * Creates a map from level number to its given options.\n *\n * @private\n *\n * @param {Object} params\n * Object containing parameters.\n * - `defaults` Object containing default options. The default options are\n *   merged with the userOptions to get the final options for a specific\n *   level.\n * - `from` The lowest level number.\n * - `levels` User options from series.levels.\n * - `to` The highest level number.\n *\n * @return {Highcharts.Dictionary<object>|null}\n * Returns a map from level number to its given options.\n */\nfunction getLevelOptions(params) {\n    var result = {};\n    var defaults,\n        converted,\n        i,\n        from,\n        to,\n        levels;\n    if (isObject(params)) {\n        from = isNumber(params.from) ? params.from : 1;\n        levels = params.levels;\n        converted = {};\n        defaults = isObject(params.defaults) ? params.defaults : {};\n        if (isArray(levels)) {\n            converted = levels.reduce(function (obj, item) {\n                var level,\n                    levelIsConstant,\n                    options;\n                if (isObject(item) && isNumber(item.level)) {\n                    options = TreeUtilities_merge({}, item);\n                    levelIsConstant = TreeUtilities_pick(options.levelIsConstant, defaults.levelIsConstant);\n                    // Delete redundant properties.\n                    delete options.levelIsConstant;\n                    delete options.level;\n                    // Calculate which level these options apply to.\n                    level = item.level + (levelIsConstant ? 0 : from - 1);\n                    if (isObject(obj[level])) {\n                        TreeUtilities_merge(true, obj[level], options); // #16329\n                    }\n                    else {\n                        obj[level] = options;\n                    }\n                }\n                return obj;\n            }, {});\n        }\n        to = isNumber(params.to) ? params.to : 1;\n        for (i = 0; i <= to; i++) {\n            result[i] = TreeUtilities_merge({}, defaults, isObject(converted[i]) ? converted[i] : {});\n        }\n    }\n    return result;\n}\n/**\n * @private\n * @todo Combine buildTree and buildNode with setTreeValues\n * @todo Remove logic from Treemap and make it utilize this mixin.\n */\nfunction setTreeValues(tree, options) {\n    var before = options.before,\n        idRoot = options.idRoot,\n        mapIdToNode = options.mapIdToNode,\n        nodeRoot = mapIdToNode[idRoot],\n        levelIsConstant = (options.levelIsConstant !== false),\n        points = options.points,\n        point = points[tree.i],\n        optionsPoint = point && point.options || {},\n        children = [];\n    var childrenTotal = 0;\n    tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);\n    tree.name = TreeUtilities_pick(point && point.name, '');\n    tree.visible = (idRoot === tree.id ||\n        options.visible === true);\n    if (typeof before === 'function') {\n        tree = before(tree, options);\n    }\n    // First give the children some values\n    tree.children.forEach(function (child, i) {\n        var newOptions = TreeUtilities_extend({},\n            options);\n        TreeUtilities_extend(newOptions, {\n            index: i,\n            siblings: tree.children.length,\n            visible: tree.visible\n        });\n        child = setTreeValues(child, newOptions);\n        children.push(child);\n        if (child.visible) {\n            childrenTotal += child.val;\n        }\n    });\n    // Set the values\n    var value = TreeUtilities_pick(optionsPoint.value,\n        childrenTotal);\n    tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);\n    tree.children = children;\n    tree.childrenTotal = childrenTotal;\n    tree.isLeaf = tree.visible && !childrenTotal;\n    tree.val = value;\n    return tree;\n}\n/**\n * Update the rootId property on the series. Also makes sure that it is\n * accessible to exporting.\n *\n * @private\n *\n * @param {Object} series\n * The series to operate on.\n *\n * @return {string}\n * Returns the resulting rootId after update.\n */\nfunction updateRootId(series) {\n    var rootId,\n        options;\n    if (isObject(series)) {\n        // Get the series options.\n        options = isObject(series.options) ? series.options : {};\n        // Calculate the rootId.\n        rootId = TreeUtilities_pick(series.rootNode, options.rootId, '');\n        // Set rootId on series.userOptions to pick it up in exporting.\n        if (isObject(series.userOptions)) {\n            series.userOptions.rootId = rootId;\n        }\n        // Set rootId on series to pick it up on next update.\n        series.rootNode = rootId;\n    }\n    return rootId;\n}\n/**\n * Get the node width, which relies on the plot width and the nodeDistance\n * option.\n *\n * @private\n */\nfunction getNodeWidth(series, columnCount) {\n    var chart = series.chart,\n        options = series.options,\n        _a = options.nodeDistance,\n        nodeDistance = _a === void 0 ? 0 : _a,\n        _b = options.nodeWidth,\n        nodeWidth = _b === void 0 ? 0 : _b,\n        _c = chart.plotSizeX,\n        plotSizeX = _c === void 0 ? 1 : _c;\n    // Node width auto means they are evenly distributed along the width of\n    // the plot area\n    if (nodeWidth === 'auto') {\n        if (typeof nodeDistance === 'string' && /%$/.test(nodeDistance)) {\n            var fraction = parseFloat(nodeDistance) / 100,\n                total = columnCount + fraction * (columnCount - 1);\n            return plotSizeX / total;\n        }\n        var nDistance = Number(nodeDistance);\n        return ((plotSizeX + nDistance) /\n            (columnCount || 1)) - nDistance;\n    }\n    return TreeUtilities_relativeLength(nodeWidth, plotSizeX);\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar TreeUtilities = {\n    getColor: getColor,\n    getLevelOptions: getLevelOptions,\n    getNodeWidth: getNodeWidth,\n    setTreeValues: setTreeValues,\n    updateRootId: updateRootId\n};\n/* harmony default export */ var Series_TreeUtilities = (TreeUtilities);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es5/es-modules/Extensions/TextPath.js\n/* *\n *\n *  Highcharts module with textPath functionality.\n *\n *  (c) 2009-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar deg2rad = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).deg2rad;\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, TextPath_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey, TextPath_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, TextPath_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend;\n/**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * Text path support is not bundled into `highcharts.js`, and requires the\n * `modules/textpath.js` file. However, it is included in the script files of\n * those series types that use it by default\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n *        Path to follow. If undefined, it allows changing options for the\n *        existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n *        Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\nfunction setTextPath(path, textPathOptions) {\n    var _this = this;\n    // Defaults\n    textPathOptions = TextPath_merge(true, {\n        enabled: true,\n        attributes: {\n            dy: -5,\n            startOffset: '50%',\n            textAnchor: 'middle'\n        }\n    }, textPathOptions);\n    var url = this.renderer.url,\n        textWrapper = this.text || this,\n        textPath = textWrapper.textPath,\n        attributes = textPathOptions.attributes,\n        enabled = textPathOptions.enabled;\n    path = path || (textPath && textPath.path);\n    // Remove previously added event\n    if (textPath) {\n        textPath.undo();\n    }\n    if (path && enabled) {\n        var undo = addEvent(textWrapper, 'afterModifyTree',\n            function (e) {\n                if (path && enabled) {\n                    // Set ID for the path\n                    var textPathId = path.attr('id');\n                if (!textPathId) {\n                    path.attr('id', textPathId = uniqueKey());\n                }\n                // Set attributes for the <text>\n                var textAttribs = {\n                        // `dx`/`dy` options must by set on <text> (parent), the\n                        // rest should be set on <textPath>\n                        x: 0,\n                        y: 0\n                    };\n                if (TextPath_defined(attributes.dx)) {\n                    textAttribs.dx = attributes.dx;\n                    delete attributes.dx;\n                }\n                if (TextPath_defined(attributes.dy)) {\n                    textAttribs.dy = attributes.dy;\n                    delete attributes.dy;\n                }\n                textWrapper.attr(textAttribs);\n                // Handle label properties\n                _this.attr({ transform: '' });\n                if (_this.box) {\n                    _this.box = _this.box.destroy();\n                }\n                // Wrap the nodes in a textPath\n                var children = e.nodes.slice(0);\n                e.nodes.length = 0;\n                e.nodes[0] = {\n                    tagName: 'textPath',\n                    attributes: TextPath_extend(attributes, {\n                        'text-anchor': attributes.textAnchor,\n                        href: \"\" + url + \"#\".concat(textPathId)\n                    }),\n                    children: children\n                };\n            }\n        });\n        // Set the reference\n        textWrapper.textPath = { path: path, undo: undo };\n    }\n    else {\n        textWrapper.attr({ dx: 0, dy: 0 });\n        delete textWrapper.textPath;\n    }\n    if (this.added) {\n        // Rebuild text after added\n        textWrapper.textCache = '';\n        this.renderer.buildText(textWrapper);\n    }\n    return this;\n}\n/**\n * Attach a polygon to a bounding box if the element contains a textPath.\n *\n * @function Highcharts.SVGElement#setPolygon\n *\n * @param {any} event\n *        An event containing a bounding box object\n *\n * @return {Highcharts.BBoxObject} Returns the bounding box object.\n */\nfunction setPolygon(event) {\n    var _a;\n    var bBox = event.bBox,\n        tp = (_a = this.element) === null || _a === void 0 ? void 0 : _a.querySelector('textPath');\n    if (tp) {\n        var polygon = [], _b = this.renderer.fontMetrics(this.element), b_1 = _b.b, h = _b.h, descender_1 = h - b_1, lineCleanerRegex = new RegExp('(<tspan>|' +\n                '<tspan(?!\\\\sclass=\"highcharts-br\")[^>]*>|' +\n                '<\\\\/tspan>)', 'g'), lines = tp\n                .innerHTML\n                .replace(lineCleanerRegex, '')\n                .split(/<tspan class=\"highcharts-br\"[^>]*>/), numOfLines = lines.length;\n        // Calculate top and bottom coordinates for\n        // either the start or the end of a single\n        // character, and append it to the polygon.\n        var appendTopAndBottom = function (charIndex,\n            positionOfChar) {\n                var x = positionOfChar.x,\n            y = positionOfChar.y,\n            rotation = (tp.getRotationOfChar(charIndex) - 90) * deg2rad,\n            cosRot = Math.cos(rotation),\n            sinRot = Math.sin(rotation);\n            return [\n                [\n                    x - descender_1 * cosRot,\n                    y - descender_1 * sinRot\n                ],\n                [\n                    x + b_1 * cosRot,\n                    y + b_1 * sinRot\n                ]\n            ];\n        };\n        for (var i = 0, lineIndex = 0; lineIndex < numOfLines; lineIndex++) {\n            var line = lines[lineIndex],\n                lineLen = line.length;\n            for (var lineCharIndex = 0; lineCharIndex < lineLen; lineCharIndex += 5) {\n                try {\n                    var srcCharIndex = (i +\n                            lineCharIndex +\n                            lineIndex),\n                        _c = appendTopAndBottom(srcCharIndex,\n                        tp.getStartPositionOfChar(srcCharIndex)),\n                        lower = _c[0],\n                        upper = _c[1];\n                    if (lineCharIndex === 0) {\n                        polygon.push(upper);\n                        polygon.push(lower);\n                    }\n                    else {\n                        if (lineIndex === 0) {\n                            polygon.unshift(upper);\n                        }\n                        if (lineIndex === numOfLines - 1) {\n                            polygon.push(lower);\n                        }\n                    }\n                }\n                catch (e) {\n                    // Safari fails on getStartPositionOfChar even if the\n                    // character is within the `textContent.length`\n                    break;\n                }\n            }\n            i += lineLen - 1;\n            try {\n                var srcCharIndex = i + lineIndex,\n                    charPos = tp.getEndPositionOfChar(srcCharIndex),\n                    _d = appendTopAndBottom(srcCharIndex,\n                    charPos),\n                    lower = _d[0],\n                    upper = _d[1];\n                polygon.unshift(upper);\n                polygon.unshift(lower);\n            }\n            catch (e) {\n                // Safari fails on getStartPositionOfChar even if the character\n                // is within the `textContent.length`\n                break;\n            }\n        }\n        // Close it\n        if (polygon.length) {\n            polygon.push(polygon[0].slice());\n        }\n        bBox.polygon = polygon;\n    }\n    return bBox;\n}\n/**\n * Draw text along a textPath for a dataLabel.\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {any} event\n *        An event containing label options\n *\n * @return {void}\n */\nfunction drawTextPath(event) {\n    var _a;\n    var labelOptions = event.labelOptions,\n        point = event.point,\n        textPathOptions = (labelOptions[point.formatPrefix + 'TextPath'] ||\n            labelOptions.textPath);\n    if (textPathOptions && !labelOptions.useHTML) {\n        this.setTextPath(((_a = point.getDataLabelPath) === null || _a === void 0 ? void 0 : _a.call(point, this)) || point.graphic, textPathOptions);\n        if (point.dataLabelPath &&\n            !textPathOptions.enabled) {\n            // Clean the DOM\n            point.dataLabelPath = (point.dataLabelPath.destroy());\n        }\n    }\n}\nfunction compose(SVGElementClass) {\n    addEvent(SVGElementClass, 'afterGetBBox', setPolygon);\n    addEvent(SVGElementClass, 'beforeAddingDataLabel', drawTextPath);\n    var svgElementProto = SVGElementClass.prototype;\n    if (!svgElementProto.setTextPath) {\n        svgElementProto.setTextPath = setTextPath;\n    }\n}\nvar TextPath = {\n    compose: compose\n};\n/* harmony default export */ var Extensions_TextPath = (TextPath);\n\n;// ./code/es5/es-modules/Series/Sankey/SankeySeries.js\n/* *\n *\n *  Sankey diagram module\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar SankeySeries_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\nvar SankeySeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, SankeySeries_ColumnSeries = SankeySeries_a.column, LineSeries = SankeySeries_a.line;\n\nvar color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar SankeySeries_getLevelOptions = Series_TreeUtilities.getLevelOptions, SankeySeries_getNodeWidth = Series_TreeUtilities.getNodeWidth;\n\nvar clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, SankeySeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, SankeySeries_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, SankeySeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, SankeySeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, SankeySeries_relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength, stableSort = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).stableSort;\n\n\nExtensions_TextPath.compose((highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default()));\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.sankey\n *\n * @augments Highcharts.Series\n */\nvar SankeySeries = /** @class */ (function (_super) {\n    SankeySeries_extends(SankeySeries, _super);\n    function SankeySeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    SankeySeries.getDLOptions = function (params) {\n        var optionsPoint = (SankeySeries_isObject(params.optionsPoint) ?\n                params.optionsPoint.dataLabels :\n                {}),\n            optionsLevel = (SankeySeries_isObject(params.level) ?\n                params.level.dataLabels :\n                {}),\n            options = SankeySeries_merge({\n                style: {}\n            },\n            optionsLevel,\n            optionsPoint);\n        return options;\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Create node columns by analyzing the nodes and the relations between\n     * incoming and outgoing links.\n     * @private\n     */\n    SankeySeries.prototype.createNodeColumns = function () {\n        var columns = [];\n        for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n            var node = _a[_i];\n            node.setNodeColumn();\n            if (!columns[node.column]) {\n                columns[node.column] =\n                    Sankey_SankeyColumnComposition.compose([], this);\n            }\n            columns[node.column].push(node);\n        }\n        // Fill in empty columns (#8865)\n        for (var i = 0; i < columns.length; i++) {\n            if (typeof columns[i] === 'undefined') {\n                columns[i] =\n                    Sankey_SankeyColumnComposition.compose([], this);\n            }\n        }\n        return columns;\n    };\n    /**\n     * Order the nodes, starting with the root node(s). (#9818)\n     * @private\n     */\n    SankeySeries.prototype.order = function (node, level) {\n        var series = this;\n        // Prevents circular recursion:\n        if (typeof node.level === 'undefined') {\n            node.level = level;\n            for (var _i = 0, _a = node.linksFrom; _i < _a.length; _i++) {\n                var link = _a[_i];\n                if (link.toNode) {\n                    series.order(link.toNode, level + 1);\n                }\n            }\n        }\n    };\n    /**\n     * Extend generatePoints by adding the nodes, which are Point objects\n     * but pushed to the this.nodes array.\n     * @private\n     */\n    SankeySeries.prototype.generatePoints = function () {\n        Series_NodesComposition.generatePoints.apply(this, arguments);\n        if (this.orderNodes) {\n            for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n                var node = _a[_i];\n                // Identify the root node(s)\n                if (node.linksTo.length === 0) {\n                    // Start by the root node(s) and recursively set the level\n                    // on all following nodes.\n                    this.order(node, 0);\n                }\n            }\n            stableSort(this.nodes, function (a, b) { return (a.level - b.level); });\n        }\n    };\n    /**\n     * Overridable function to get node padding, overridden in dependency\n     * wheel series type.\n     * @private\n     */\n    SankeySeries.prototype.getNodePadding = function () {\n        var nodePadding = this.options.nodePadding || 0;\n        // If the number of columns is so great that they will overflow with\n        // the given nodePadding, we sacrifice the padding in order to\n        // render all nodes within the plot area (#11917).\n        if (this.nodeColumns) {\n            var maxLength = this.nodeColumns.reduce(function (acc,\n                col) { return Math.max(acc,\n                col.length); }, 0);\n            if (maxLength * nodePadding > this.chart.plotSizeY) {\n                nodePadding = this.chart.plotSizeY / maxLength;\n            }\n        }\n        return nodePadding;\n    };\n    /**\n     * Define hasData function for non-cartesian series.\n     * @private\n     * @return {boolean}\n     *         Returns true if the series has points at all.\n     */\n    SankeySeries.prototype.hasData = function () {\n        return !!this.dataTable.rowCount;\n    };\n    /**\n     * Return the presentational attributes.\n     * @private\n     */\n    SankeySeries.prototype.pointAttribs = function (point, state) {\n        if (!point) {\n            return {};\n        }\n        var series = this,\n            level = point.isNode ? point.level : point.fromNode.level,\n            levelOptions = series.mapOptionsToLevel[level || 0] || {},\n            options = point.options,\n            stateOptions = (levelOptions.states && levelOptions.states[state || '']) || {},\n            values = [\n                'colorByPoint',\n                'borderColor',\n                'borderWidth',\n                'linkOpacity',\n                'opacity'\n            ].reduce(function (obj,\n            key) {\n                obj[key] = SankeySeries_pick(stateOptions[key],\n            options[key],\n            levelOptions[key],\n            series.options[key]);\n            return obj;\n        }, {}), color = SankeySeries_pick(stateOptions.color, options.color, values.colorByPoint ? point.color : levelOptions.color);\n        // Node attributes\n        if (point.isNode) {\n            return {\n                fill: color,\n                stroke: values.borderColor,\n                'stroke-width': values.borderWidth,\n                opacity: values.opacity\n            };\n        }\n        // Link attributes\n        return {\n            fill: highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(color).setOpacity(values.linkOpacity).get()\n        };\n    };\n    SankeySeries.prototype.drawTracker = function () {\n        SankeySeries_ColumnSeries.prototype.drawTracker.call(this, this.points);\n        SankeySeries_ColumnSeries.prototype.drawTracker.call(this, this.nodes);\n    };\n    SankeySeries.prototype.drawPoints = function () {\n        SankeySeries_ColumnSeries.prototype.drawPoints.call(this, this.points);\n        SankeySeries_ColumnSeries.prototype.drawPoints.call(this, this.nodes);\n    };\n    SankeySeries.prototype.drawDataLabels = function () {\n        SankeySeries_ColumnSeries.prototype.drawDataLabels.call(this, this.points);\n        SankeySeries_ColumnSeries.prototype.drawDataLabels.call(this, this.nodes);\n    };\n    /**\n     * Run pre-translation by generating the nodeColumns.\n     * @private\n     */\n    SankeySeries.prototype.translate = function () {\n        this.generatePoints();\n        this.nodeColumns = this.createNodeColumns();\n        var series = this,\n            chart = this.chart,\n            options = this.options,\n            nodeColumns = this.nodeColumns,\n            columnCount = nodeColumns.length;\n        this.nodeWidth = SankeySeries_getNodeWidth(this, columnCount);\n        this.nodePadding = this.getNodePadding();\n        // Find out how much space is needed. Base it on the translation\n        // factor of the most spacious column.\n        this.translationFactor = nodeColumns.reduce(function (translationFactor, column) { return Math.min(translationFactor, column.sankeyColumn.getTranslationFactor(series)); }, Infinity);\n        this.colDistance =\n            (chart.plotSizeX - this.nodeWidth -\n                options.borderWidth) / Math.max(1, nodeColumns.length - 1);\n        // Calculate level options used in sankey and organization\n        series.mapOptionsToLevel = SankeySeries_getLevelOptions({\n            // NOTE: if support for allowTraversingTree is added, then from\n            // should be the level of the root node.\n            from: 1,\n            levels: options.levels,\n            to: nodeColumns.length - 1, // Height of the tree\n            defaults: {\n                borderColor: options.borderColor,\n                borderRadius: options.borderRadius, // Organization series\n                borderWidth: options.borderWidth,\n                color: series.color,\n                colorByPoint: options.colorByPoint,\n                // NOTE: if support for allowTraversingTree is added, then\n                // levelIsConstant should be optional.\n                levelIsConstant: true,\n                linkColor: options.linkColor, // Organization series\n                linkLineWidth: options.linkLineWidth, // Organization series\n                linkOpacity: options.linkOpacity,\n                states: options.states\n            }\n        });\n        // First translate all nodes so we can use them when drawing links\n        for (var _i = 0, nodeColumns_1 = nodeColumns; _i < nodeColumns_1.length; _i++) {\n            var column = nodeColumns_1[_i];\n            for (var _a = 0, column_1 = column; _a < column_1.length; _a++) {\n                var node = column_1[_a];\n                series.translateNode(node, column);\n            }\n        }\n        // Then translate links\n        for (var _b = 0, _c = this.nodes; _b < _c.length; _b++) {\n            var node = _c[_b];\n            // Translate the links from this node\n            for (var _d = 0, _e = node.linksFrom; _d < _e.length; _d++) {\n                var linkPoint = _e[_d];\n                // If weight is 0 - don't render the link path #12453,\n                // render null points (for organization chart)\n                if ((linkPoint.weight || linkPoint.isNull) && linkPoint.to) {\n                    series.translateLink(linkPoint);\n                    linkPoint.allowShadow = false;\n                }\n            }\n        }\n    };\n    /**\n     * Run translation operations for one link.\n     * @private\n     */\n    SankeySeries.prototype.translateLink = function (point) {\n        var getY = function (node,\n            fromOrTo) {\n                var linkTop = (node.offset(point,\n            fromOrTo) *\n                    translationFactor);\n            var y = Math.min(node.nodeY + linkTop, \n                // Prevent links from spilling below the node (#12014)\n                node.nodeY + (node.shapeArgs && node.shapeArgs.height || 0) - linkHeight);\n            return y;\n        };\n        var fromNode = point.fromNode,\n            toNode = point.toNode,\n            chart = this.chart,\n            inverted = chart.inverted,\n            translationFactor = this.translationFactor,\n            options = this.options,\n            linkColorMode = SankeySeries_pick(point.linkColorMode,\n            options.linkColorMode),\n            curvy = ((chart.inverted ? -this.colDistance : this.colDistance) *\n                options.curveFactor),\n            nodeLeft = fromNode.nodeX,\n            right = toNode.nodeX,\n            outgoing = point.outgoing;\n        var linkHeight = Math.max(point.weight * translationFactor, this.options.minLinkWidth), fromY = getY(fromNode, 'linksFrom'), toY = getY(toNode, 'linksTo'), nodeW = this.nodeWidth, straight = right > nodeLeft + nodeW;\n        if (chart.inverted) {\n            fromY = chart.plotSizeY - fromY;\n            toY = (chart.plotSizeY || 0) - toY;\n            nodeW = -nodeW;\n            linkHeight = -linkHeight;\n            straight = nodeLeft > right;\n        }\n        point.shapeType = 'path';\n        point.linkBase = [\n            fromY,\n            fromY + linkHeight,\n            toY,\n            toY + linkHeight\n        ];\n        // Links going from left to right\n        if (straight && typeof toY === 'number') {\n            point.shapeArgs = {\n                d: [\n                    ['M', nodeLeft + nodeW, fromY],\n                    [\n                        'C',\n                        nodeLeft + nodeW + curvy,\n                        fromY,\n                        right - curvy,\n                        toY,\n                        right,\n                        toY\n                    ],\n                    ['L', right + (outgoing ? nodeW : 0), toY + linkHeight / 2],\n                    ['L', right, toY + linkHeight],\n                    [\n                        'C',\n                        right - curvy,\n                        toY + linkHeight,\n                        nodeLeft + nodeW + curvy,\n                        fromY + linkHeight,\n                        nodeLeft + nodeW, fromY + linkHeight\n                    ],\n                    ['Z']\n                ]\n            };\n            // Experimental: Circular links pointing backwards. In\n            // v6.1.0 this breaks the rendering completely, so even\n            // this experimental rendering is an improvement. #8218.\n            // @todo\n            // - Make room for the link in the layout\n            // - Automatically determine if the link should go up or\n            //   down.\n        }\n        else if (typeof toY === 'number') {\n            var bend = 20,\n                vDist = chart.plotHeight - fromY - linkHeight,\n                x1 = right - bend - linkHeight,\n                x2 = right - bend,\n                x3 = right,\n                x4 = nodeLeft + nodeW,\n                x5 = x4 + bend,\n                x6 = x5 + linkHeight,\n                fy1 = fromY,\n                fy2 = fromY + linkHeight,\n                fy3 = fy2 + bend,\n                y4 = fy3 + vDist,\n                y5 = y4 + bend,\n                y6 = y5 + linkHeight,\n                ty1 = toY,\n                ty2 = ty1 + linkHeight,\n                ty3 = ty2 + bend,\n                cfy1 = fy2 - linkHeight * 0.7,\n                cy2 = y5 + linkHeight * 0.7,\n                cty1 = ty2 - linkHeight * 0.7,\n                cx1 = x3 - linkHeight * 0.7,\n                cx2 = x4 + linkHeight * 0.7;\n            point.shapeArgs = {\n                d: [\n                    ['M', x4, fy1],\n                    ['C', cx2, fy1, x6, cfy1, x6, fy3],\n                    ['L', x6, y4],\n                    ['C', x6, cy2, cx2, y6, x4, y6],\n                    ['L', x3, y6],\n                    ['C', cx1, y6, x1, cy2, x1, y4],\n                    ['L', x1, ty3],\n                    ['C', x1, cty1, cx1, ty1, x3, ty1],\n                    ['L', x3, ty2],\n                    ['C', x2, ty2, x2, ty2, x2, ty3],\n                    ['L', x2, y4],\n                    ['C', x2, y5, x2, y5, x3, y5],\n                    ['L', x4, y5],\n                    ['C', x5, y5, x5, y5, x5, y4],\n                    ['L', x5, fy3],\n                    ['C', x5, fy2, x5, fy2, x4, fy2],\n                    ['Z']\n                ]\n            };\n        }\n        // Place data labels in the middle\n        point.dlBox = {\n            x: nodeLeft + (right - nodeLeft + nodeW) / 2,\n            y: fromY + (toY - fromY) / 2,\n            height: linkHeight,\n            width: 0\n        };\n        // And set the tooltip anchor in the middle\n        point.tooltipPos = chart.inverted ? [\n            chart.plotSizeY - point.dlBox.y - linkHeight / 2,\n            chart.plotSizeX - point.dlBox.x\n        ] : [\n            point.dlBox.x,\n            point.dlBox.y + linkHeight / 2\n        ];\n        // Pass test in drawPoints. plotX/Y needs to be defined for dataLabels.\n        // #15863\n        point.y = point.plotY = 1;\n        point.x = point.plotX = 1;\n        if (!point.options.color) {\n            if (linkColorMode === 'from') {\n                point.color = fromNode.color;\n            }\n            else if (linkColorMode === 'to') {\n                point.color = toNode.color;\n            }\n            else if (linkColorMode === 'gradient') {\n                var fromColor = color(fromNode.color).get(),\n                    toColor = color(toNode.color).get();\n                point.color = {\n                    linearGradient: {\n                        x1: 1,\n                        x2: 0,\n                        y1: 0,\n                        y2: 0\n                    },\n                    stops: [\n                        [0, inverted ? fromColor : toColor],\n                        [1, inverted ? toColor : fromColor]\n                    ]\n                };\n            }\n        }\n    };\n    /**\n     * Run translation operations for one node.\n     * @private\n     */\n    SankeySeries.prototype.translateNode = function (node, column) {\n        var translationFactor = this.translationFactor,\n            chart = this.chart,\n            options = this.options,\n            borderRadius = options.borderRadius,\n            _a = options.borderWidth,\n            borderWidth = _a === void 0 ? 0 : _a,\n            sum = node.getSum(),\n            nodeHeight = Math.max(Math.round(sum * translationFactor),\n            this.options.minLinkWidth),\n            nodeWidth = Math.round(this.nodeWidth),\n            nodeOffset = column.sankeyColumn.offset(node,\n            translationFactor),\n            fromNodeTop = crisp(SankeySeries_pick(nodeOffset.absoluteTop, (column.sankeyColumn.top(translationFactor) +\n                nodeOffset.relativeTop)),\n            borderWidth),\n            left = crisp(this.colDistance * node.column +\n                borderWidth / 2,\n            borderWidth) + SankeySeries_relativeLength(node.options[chart.inverted ?\n                'offsetVertical' :\n                'offsetHorizontal'] || 0,\n            nodeWidth),\n            nodeLeft = chart.inverted ?\n                chart.plotSizeX - left :\n                left;\n        node.sum = sum;\n        // If node sum is 0, don't render the rect #12453\n        if (sum) {\n            // Draw the node\n            node.shapeType = 'roundedRect';\n            node.nodeX = nodeLeft;\n            node.nodeY = fromNodeTop;\n            var x = nodeLeft,\n                y = fromNodeTop,\n                width = node.options.width || options.width || nodeWidth,\n                height = node.options.height || options.height || nodeHeight;\n            // Border radius should not greater than half the height of the node\n            // #18956\n            var r = clamp(SankeySeries_relativeLength((typeof borderRadius === 'object' ?\n                    borderRadius.radius :\n                    borderRadius || 0),\n                width), 0,\n                nodeHeight / 2);\n            if (chart.inverted) {\n                x = nodeLeft - nodeWidth;\n                y = chart.plotSizeY - fromNodeTop - nodeHeight;\n                width = node.options.height || options.height || nodeWidth;\n                height = node.options.width || options.width || nodeHeight;\n            }\n            // Calculate data label options for the point\n            node.dlOptions = SankeySeries.getDLOptions({\n                level: this.mapOptionsToLevel[node.level],\n                optionsPoint: node.options\n            });\n            // Pass test in drawPoints\n            node.plotX = 1;\n            node.plotY = 1;\n            // Set the anchor position for tooltips\n            node.tooltipPos = chart.inverted ? [\n                chart.plotSizeY - y - height / 2,\n                chart.plotSizeX - x - width / 2\n            ] : [\n                x + width / 2,\n                y + height / 2\n            ];\n            node.shapeArgs = {\n                x: x,\n                y: y,\n                width: width,\n                height: height,\n                r: r,\n                display: node.hasShape() ? '' : 'none'\n            };\n        }\n        else {\n            node.dlOptions = {\n                enabled: false\n            };\n        }\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    SankeySeries.defaultOptions = SankeySeries_merge(SankeySeries_ColumnSeries.defaultOptions, Sankey_SankeySeriesDefaults);\n    return SankeySeries;\n}(SankeySeries_ColumnSeries));\nSeries_NodesComposition.compose(Sankey_SankeyPoint, SankeySeries);\nSankeySeries_extend(SankeySeries.prototype, {\n    animate: LineSeries.prototype.animate,\n    // Create a single node that holds information on incoming and outgoing\n    // links.\n    createNode: Series_NodesComposition.createNode,\n    forceDL: true,\n    invertible: true,\n    isCartesian: false,\n    orderNodes: true,\n    noSharedTooltip: true,\n    pointArrayMap: ['from', 'to', 'weight'],\n    pointClass: Sankey_SankeyPoint,\n    searchPoint: (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('sankey', SankeySeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Sankey_SankeySeries = ((/* unused pure expression or super */ null && (SankeySeries)));\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * A node in a sankey diagram.\n *\n * @interface Highcharts.SankeyNodeObject\n * @extends Highcharts.Point\n * @product highcharts\n */ /**\n* The color of the auto generated node.\n*\n* @name Highcharts.SankeyNodeObject#color\n* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n*/ /**\n* The color index of the auto generated node, especially for use in styled\n* mode.\n*\n* @name Highcharts.SankeyNodeObject#colorIndex\n* @type {number}\n*/ /**\n* An optional column index of where to place the node. The default behaviour is\n* to place it next to the preceding node.\n*\n* @see {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/sankey-node-column/|Highcharts-Demo:}\n*      Specified node column\n*\n* @name Highcharts.SankeyNodeObject#column\n* @type {number}\n* @since 6.0.5\n*/ /**\n* The id of the auto-generated node, refering to the `from` or `to` setting of\n* the link.\n*\n* @name Highcharts.SankeyNodeObject#id\n* @type {string}\n*/ /**\n* The name to display for the node in data labels and tooltips. Use this when\n* the name is different from the `id`. Where the id must be unique for each\n* node, this is not necessary for the name.\n*\n* @see {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/sankey/|Highcharts-Demo:}\n*         Sankey diagram with node options\n*\n* @name Highcharts.SankeyNodeObject#name\n* @type {string}\n* @product highcharts\n*/ /**\n* This option is deprecated, use\n* {@link Highcharts.SankeyNodeObject#offsetHorizontal} and\n* {@link Highcharts.SankeyNodeObject#offsetVertical} instead.\n*\n* The vertical offset of a node in terms of weight. Positive values shift the\n* node downwards, negative shift it upwards.\n*\n* If a percentage string is given, the node is offset by the percentage of the\n* node size plus `nodePadding`.\n*\n* @see {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/sankey-node-column/|Highcharts-Demo:}\n*         Specified node offset\n*\n* @deprecated\n* @name Highcharts.SankeyNodeObject#offset\n* @type {number|string}\n* @default 0\n* @since 6.0.5\n*/ /**\n* The horizontal offset of a node. Positive values shift the node right,\n* negative shift it left.\n*\n* If a percentage string is given, the node is offset by the percentage of the\n* node size.\n*\n* @see {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/sankey-node-column/|Highcharts-Demo:}\n*         Specified node offset\n*\n* @name Highcharts.SankeyNodeObject#offsetHorizontal\n* @type {number|string}\n* @since 9.3.0\n*/ /**\n* The vertical offset of a node. Positive values shift the node down,\n* negative shift it up.\n*\n* If a percentage string is given, the node is offset by the percentage of the\n* node size.\n*\n* @see {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/sankey-node-column/|Highcharts-Demo:}\n*         Specified node offset\n*\n* @name Highcharts.SankeyNodeObject#offsetVertical\n* @type {number|string}\n* @since 9.3.0\n*/\n/**\n * Formatter callback function.\n *\n * @callback Highcharts.SeriesSankeyDataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.Point} this\n *        Data label context to format\n *\n * @return {string|undefined}\n *         Formatted data label text\n */\n''; // Detach doclets above\n\n;// ./code/es5/es-modules/masters/modules/sankey.src.js\n\n\n\n\n/* harmony default export */ var sankey_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","require","define","amd","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__260__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__28__","extendStatics","SankeyColumnComposition","SankeyColumnAdditions","NodesComposition","__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__","sankey_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","_a","series","seriesProto","pointProto","pointClass","defined","extend","find","merge","pick","destroy","data","concat","points","nodes","apply","arguments","setData","forEach","node","length","setNodeState","state","args","others","isNode","linksTo","linksFrom","fromNode","toNode","linkOrNode","setState","graphic","updateNode","options","redraw","animation","runEvent","_this","dataLength","linkConfig","index","update","nodeIndex","reduce","prevIndex","id","nodeConfig","push","chart","compose","PointClass","SeriesClass","createNode","findById","newNode_1","className","y","getSum","sumTo","sumFrom","link","weight","Math","max","offset","point","coll","i","hasShape","outgoing","formatPrefix","name","mass","marker","radius","generatePoints","nodeLookup","colorCounter","level","from","styledMode","colorIndex","color","to","Series_NodesComposition","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","__extends","b","setPrototypeOf","__proto__","Array","p","__","constructor","create","ColumnSeries","seriesTypes","column","SankeyPoint_defined","SankeyPoint","_super","applyOptions","x","getClassName","getFromNode","fromColumn","setNodeColumn","isValid","Sankey_SankeySeriesDefaults","borderWidth","colorByPoint","curveFactor","dataLabels","enabled","backgroundColor","crop","nodeFormat","nodeFormatter","format","formatter","inside","inactiveOtherPoints","linkColorMode","linkOpacity","opacity","minLinkWidth","nodeAlignment","nodeWidth","nodePadding","nodeDistance","showInLegend","states","hover","inactive","duration","tooltip","followPointer","headerFormat","pointFormat","SankeyColumnComposition_defined","getAlignFactor","relativeLength","sankeyColumnArray","sankeyColumn","getTranslationFactor","skipPoint","slice","factor","remainingHeight","plotSizeY","sum","splice","_i","nodes_1","top","height","left","equalNodes","maxNodesLength","inverted","plotHeight","plotWidth","width","plotSizeX","round","totalNodeOffset","is","hangsFrom","absoluteTop","nodeY","directionOffset","optionOffset","relativeTop","Sankey_SankeyColumnComposition","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","isArray","isNumber","isObject","TreeUtilities_merge","TreeUtilities_pick","TreeUtilities_relativeLength","params","defaults","converted","levels","result","item","levelIsConstant","columnCount","_b","_c","test","fraction","parseFloat","nDistance","Number","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","deg2rad","addEvent","TextPath_merge","uniqueKey","TextPath_defined","TextPath_extend","setTextPath","path","textPathOptions","attributes","dy","startOffset","textAnchor","url","renderer","textWrapper","text","textPath","undo","e","textPathId","attr","textAttribs","dx","transform","box","children","tagName","href","added","textCache","buildText","setPolygon","event","bBox","tp","element","querySelector","polygon","fontMetrics","b_1","descender_1","h","lineCleanerRegex","RegExp","lines","innerHTML","replace","split","numOfLines","appendTopAndBottom","charIndex","positionOfChar","rotation","getRotationOfChar","cosRot","cos","sinRot","sin","lineIndex","lineLen","line","lineCharIndex","srcCharIndex","getStartPositionOfChar","lower","upper","unshift","charPos","getEndPositionOfChar","_d","drawTextPath","labelOptions","useHTML","getDataLabelPath","dataLabelPath","SankeySeries_extends","TypeError","String","SankeySeries_a","SankeySeries_ColumnSeries","LineSeries","parse","clamp","crisp","SankeySeries_extend","SankeySeries_isObject","SankeySeries_merge","SankeySeries_pick","SankeySeries_relativeLength","stableSort","Extensions_TextPath","SVGElementClass","svgElementProto","SankeySeries","getDLOptions","optionsPoint","style","createNodeColumns","columns","order","orderNodes","getNodePadding","nodeColumns","maxLength","acc","col","hasData","dataTable","rowCount","pointAttribs","levelOptions","mapOptionsToLevel","stateOptions","values","fill","stroke","borderColor","setOpacity","drawTracker","drawPoints","drawDataLabels","translate","SankeySeries_getNodeWidth","translationFactor","min","Infinity","colDistance","SankeySeries_getLevelOptions","borderRadius","linkColor","linkLineWidth","nodeColumns_1","column_1","translateNode","_e","linkPoint","isNull","translateLink","allowShadow","getY","fromOrTo","linkTop","shapeArgs","linkHeight","curvy","nodeLeft","nodeX","right","fromY","toY","nodeW","straight","shapeType","linkBase","vDist","x1","x2","x4","x5","x6","fy1","fy2","fy3","y4","y5","y6","ty1","ty2","ty3","cfy1","cy2","cty1","cx1","x3","cx2","dlBox","tooltipPos","plotY","plotX","fromColor","toColor","linearGradient","y1","y2","stops","nodeHeight","nodeOffset","fromNodeTop","r","dlOptions","display","defaultOptions","animate","forceDL","invertible","isCartesian","noSharedTooltip","pointArrayMap","searchPoint","noop","registerSeriesType"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox