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/networkgraph.js.map

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/networkgraph\n * @requires highcharts\n *\n * Force directed graph 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\")[\"SVGElement\"], require(\"highcharts\")[\"SeriesRegistry\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/networkgraph\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"SVGElement\"], [\"highcharts/highcharts\",\"SeriesRegistry\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/networkgraph\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"SeriesRegistry\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"SeriesRegistry\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__512__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\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 */ networkgraph_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\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es5/es-modules/Series/DragNodesComposition.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction compose(ChartClass) {\n    if (pushUnique(composed, 'DragNodes')) {\n        addEvent(ChartClass, 'load', onChartLoad);\n    }\n}\n/**\n * Draggable mode:\n * @private\n */\nfunction onChartLoad() {\n    var chart = this;\n    var mousedownUnbinder,\n        mousemoveUnbinder,\n        mouseupUnbinder;\n    if (chart.container) {\n        mousedownUnbinder = addEvent(chart.container, 'mousedown', function (event) {\n            var point = chart.hoverPoint;\n            if (point &&\n                point.series &&\n                point.series.hasDraggableNodes &&\n                point.series.options.draggable) {\n                point.series.onMouseDown(point, event);\n                mousemoveUnbinder = addEvent(chart.container, 'mousemove', function (e) { return (point &&\n                    point.series &&\n                    point.series.onMouseMove(point, e)); });\n                mouseupUnbinder = addEvent(chart.container.ownerDocument, 'mouseup', function (e) {\n                    mousemoveUnbinder();\n                    mouseupUnbinder();\n                    return point &&\n                        point.series &&\n                        point.series.onMouseUp(point, e);\n                });\n            }\n        });\n    }\n    addEvent(chart, 'destroy', function () {\n        mousedownUnbinder();\n    });\n}\n/**\n * Mouse down action, initializing drag&drop mode.\n *\n * @private\n * @param {Highcharts.Point} point\n *        The point that event occurred.\n * @param {Highcharts.PointerEventObject} event\n *        Browser event, before normalization.\n */\nfunction onMouseDown(point, event) {\n    var _a;\n    var normalizedEvent = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(event)) || event;\n    point.fixedPosition = {\n        chartX: normalizedEvent.chartX,\n        chartY: normalizedEvent.chartY,\n        plotX: point.plotX,\n        plotY: point.plotY\n    };\n    point.inDragMode = true;\n}\n/**\n * Mouse move action during drag&drop.\n *\n * @private\n *\n * @param {Highcharts.Point} point\n *        The point that event occurred.\n * @param {global.Event} event\n *        Browser event, before normalization.\n */\nfunction onMouseMove(point, event) {\n    var _a;\n    if (point.fixedPosition && point.inDragMode) {\n        var series = this,\n            chart = series.chart,\n            normalizedEvent = ((_a = chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(event)) || event,\n            diffX = point.fixedPosition.chartX - normalizedEvent.chartX,\n            diffY = point.fixedPosition.chartY - normalizedEvent.chartY,\n            graphLayoutsLookup = chart.graphLayoutsLookup;\n        var newPlotX = void 0,\n            newPlotY = void 0;\n        // At least 5px to apply change (avoids simple click):\n        if (Math.abs(diffX) > 5 || Math.abs(diffY) > 5) {\n            newPlotX = point.fixedPosition.plotX - diffX;\n            newPlotY = point.fixedPosition.plotY - diffY;\n            if (chart.isInsidePlot(newPlotX, newPlotY)) {\n                point.plotX = newPlotX;\n                point.plotY = newPlotY;\n                point.hasDragged = true;\n                this.redrawHalo(point);\n                graphLayoutsLookup.forEach(function (layout) {\n                    layout.restartSimulation();\n                });\n            }\n        }\n    }\n}\n/**\n * Mouse up action, finalizing drag&drop.\n *\n * @private\n * @param {Highcharts.Point} point\n *        The point that event occurred.\n */\nfunction onMouseUp(point) {\n    if (point.fixedPosition) {\n        if (point.hasDragged) {\n            if (this.layout.enableSimulation) {\n                this.layout.start();\n            }\n            else {\n                this.chart.redraw();\n            }\n        }\n        point.inDragMode = point.hasDragged = false;\n        if (!this.options.fixedDraggable) {\n            delete point.fixedPosition;\n        }\n    }\n}\n/**\n * Redraw halo on mousemove during the drag&drop action.\n *\n * @private\n * @param {Highcharts.Point} point\n *        The point that should show halo.\n */\nfunction redrawHalo(point) {\n    if (point && this.halo) {\n        this.halo.attr({\n            d: point.haloPath(this.options.states.hover.halo.size)\n        });\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar DragNodesComposition = {\n    compose: compose,\n    onMouseDown: onMouseDown,\n    onMouseMove: onMouseMove,\n    onMouseUp: onMouseUp,\n    redrawHalo: redrawHalo\n};\n/* harmony default export */ var Series_DragNodesComposition = (DragNodesComposition);\n\n;// ./code/es5/es-modules/Series/GraphLayoutComposition.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar setAnimation = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setAnimation;\n\nvar GraphLayoutComposition_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar GraphLayoutComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, GraphLayoutComposition_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Constants\n *\n * */\nvar integrations = {};\nvar layouts = {};\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction GraphLayoutComposition_compose(ChartClass) {\n    if (GraphLayoutComposition_pushUnique(GraphLayoutComposition_composed, 'GraphLayout')) {\n        GraphLayoutComposition_addEvent(ChartClass, 'afterPrint', onChartAfterPrint);\n        GraphLayoutComposition_addEvent(ChartClass, 'beforePrint', onChartBeforePrint);\n        GraphLayoutComposition_addEvent(ChartClass, 'predraw', onChartPredraw);\n        GraphLayoutComposition_addEvent(ChartClass, 'render', onChartRender);\n    }\n}\n/**\n * Re-enable simulation after print.\n * @private\n */\nfunction onChartAfterPrint() {\n    if (this.graphLayoutsLookup) {\n        this.graphLayoutsLookup.forEach(function (layout) {\n            // Return to default simulation\n            layout.updateSimulation();\n        });\n        this.redraw();\n    }\n}\n/**\n * Disable simulation before print if enabled.\n * @private\n */\nfunction onChartBeforePrint() {\n    if (this.graphLayoutsLookup) {\n        this.graphLayoutsLookup.forEach(function (layout) {\n            layout.updateSimulation(false);\n        });\n        this.redraw();\n    }\n}\n/**\n * Clear previous layouts.\n * @private\n */\nfunction onChartPredraw() {\n    if (this.graphLayoutsLookup) {\n        this.graphLayoutsLookup.forEach(function (layout) {\n            layout.stop();\n        });\n    }\n}\n/**\n * @private\n */\nfunction onChartRender() {\n    var systemsStable,\n        afterRender = false;\n    var layoutStep = function (layout) {\n            if (layout.maxIterations-- &&\n                isFinite(layout.temperature) &&\n                !layout.isStable() &&\n                !layout.enableSimulation) {\n                // Hook similar to build-in addEvent, but instead of\n                // creating whole events logic, use just a function.\n                // It's faster which is important for rAF code.\n                // Used e.g. in packed-bubble series for bubble radius\n                // calculations\n                if (layout.beforeStep) {\n                    layout.beforeStep();\n            }\n            layout.step();\n            systemsStable = false;\n            afterRender = true;\n        }\n    };\n    if (this.graphLayoutsLookup) {\n        setAnimation(false, this);\n        // Start simulation\n        this.graphLayoutsLookup.forEach(function (layout) { return layout.start(); });\n        // Just one sync step, to run different layouts similar to\n        // async mode.\n        while (!systemsStable) {\n            systemsStable = true;\n            this.graphLayoutsLookup.forEach(layoutStep);\n        }\n        if (afterRender) {\n            this.series.forEach(function (series) {\n                if (series && series.layout) {\n                    series.render();\n                }\n            });\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar GraphLayoutComposition = {\n    compose: GraphLayoutComposition_compose,\n    integrations: integrations,\n    layouts: layouts\n};\n/* harmony default export */ var Series_GraphLayoutComposition = (GraphLayoutComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./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;// ./code/es5/es-modules/Series/Networkgraph/NetworkgraphPoint.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\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 NetworkgraphPoint_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, NetworkgraphPoint_seriesProto = NetworkgraphPoint_a.prototype, Point = NetworkgraphPoint_a.prototype.pointClass;\n\nvar NetworkgraphPoint_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css, NetworkgraphPoint_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, NetworkgraphPoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, NetworkgraphPoint_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Class\n *\n * */\nvar NetworkgraphPoint = /** @class */ (function (_super) {\n    __extends(NetworkgraphPoint, _super);\n    /**\n     * Basic `point.init()` and additional styles applied when\n     * `series.draggable` is enabled.\n     * @private\n     */\n    function NetworkgraphPoint(series, options, x) {\n        var _this = _super.call(this,\n            series,\n            options,\n            x) || this;\n        if (_this.series.options.draggable &&\n            !_this.series.chart.styledMode) {\n            NetworkgraphPoint_addEvent(_this, 'mouseOver', function () {\n                css(this.series.chart.container, { cursor: 'move' });\n            });\n            NetworkgraphPoint_addEvent(_this, 'mouseOut', function () {\n                css(this.series.chart.container, { cursor: 'default' });\n            });\n        }\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Destroy point. If it's a node, remove all links coming out of this\n     * node. Then remove point from the layout.\n     * @private\n     */\n    NetworkgraphPoint.prototype.destroy = function () {\n        if (this.isNode) {\n            this.linksFrom.concat(this.linksTo).forEach(function (link) {\n                // Removing multiple nodes at the same time\n                // will try to remove link between nodes twice\n                if (link.destroyElements) {\n                    link.destroyElements();\n                }\n            });\n        }\n        this.series.layout.removeElementFromCollection(this, this.series.layout[this.isNode ? 'nodes' : 'links']);\n        return Point.prototype.destroy.apply(this, arguments);\n    };\n    /**\n     * Return degree of a node. If node has no connections, it still has\n     * deg=1.\n     * @private\n     */\n    NetworkgraphPoint.prototype.getDegree = function () {\n        var deg = this.isNode ?\n                this.linksFrom.length + this.linksTo.length :\n                0;\n        return deg === 0 ? 1 : deg;\n    };\n    /**\n     * Get presentational attributes of link connecting two nodes.\n     * @private\n     */\n    NetworkgraphPoint.prototype.getLinkAttributes = function () {\n        var linkOptions = this.series.options.link,\n            pointOptions = this.options;\n        return {\n            'stroke-width': NetworkgraphPoint_pick(pointOptions.width, linkOptions.width),\n            stroke: (pointOptions.color || linkOptions.color),\n            dashstyle: (pointOptions.dashStyle || linkOptions.dashStyle),\n            opacity: NetworkgraphPoint_pick(pointOptions.opacity, linkOptions.opacity, 1)\n        };\n    };\n    /**\n     * Get link path connecting two nodes.\n     * @private\n     * @return {Array<Highcharts.SVGPathArray>}\n     *         Path: `['M', x, y, 'L', x, y]`\n     */\n    NetworkgraphPoint.prototype.getLinkPath = function () {\n        var left = this.fromNode,\n            right = this.toNode;\n        // Start always from left to the right node, to prevent rendering\n        // labels upside down\n        if (left.plotX > right.plotX) {\n            left = this.toNode;\n            right = this.fromNode;\n        }\n        return [\n            ['M', left.plotX || 0, left.plotY || 0],\n            ['L', right.plotX || 0, right.plotY || 0]\n        ];\n        /*\n        IDEA: different link shapes?\n        return [\n            'M',\n            from.plotX,\n            from.plotY,\n            'Q',\n            (to.plotX + from.plotX) / 2,\n            (to.plotY + from.plotY) / 2 + 15,\n            to.plotX,\n            to.plotY\n        ];*/\n    };\n    /**\n     * Get mass fraction applied on two nodes connected to each other. By\n     * default, when mass is equal to `1`, mass fraction for both nodes\n     * equal to 0.5.\n     * @private\n     * @return {Highcharts.Dictionary<number>}\n     *         For example `{ fromNode: 0.5, toNode: 0.5 }`\n     */\n    NetworkgraphPoint.prototype.getMass = function () {\n        var m1 = this.fromNode.mass,\n            m2 = this.toNode.mass,\n            sum = m1 + m2;\n        return {\n            fromNode: 1 - m1 / sum,\n            toNode: 1 - m2 / sum\n        };\n    };\n    /**\n     * @private\n     */\n    NetworkgraphPoint.prototype.isValid = function () {\n        return !this.isNode || NetworkgraphPoint_defined(this.id);\n    };\n    /**\n     * Redraw link's path.\n     * @private\n     */\n    NetworkgraphPoint.prototype.redrawLink = function () {\n        var path = this.getLinkPath();\n        var attribs;\n        if (this.graphic) {\n            this.shapeArgs = {\n                d: path\n            };\n            if (!this.series.chart.styledMode) {\n                attribs = this.series.pointAttribs(this);\n                this.graphic.attr(attribs);\n                (this.dataLabels || []).forEach(function (label) {\n                    if (label) {\n                        label.attr({\n                            opacity: attribs.opacity\n                        });\n                    }\n                });\n            }\n            this.graphic.animate(this.shapeArgs);\n            // Required for dataLabels\n            var start = path[0];\n            var end = path[1];\n            if (start[0] === 'M' && end[0] === 'L') {\n                this.plotX = (start[1] + end[1]) / 2;\n                this.plotY = (start[2] + end[2]) / 2;\n            }\n        }\n    };\n    /**\n     * Common method for removing points and nodes in networkgraph. To\n     * remove `link`, use `series.data[index].remove()`. To remove `node`\n     * with all connections, use `series.nodes[index].remove()`.\n     * @private\n     * @param {boolean} [redraw=true]\n     *        Whether to redraw the chart or wait for an explicit call. When\n     *        doing more operations on the chart, for example running\n     *        `point.remove()` in a loop, it is best practice to set\n     *        `redraw` to false and call `chart.redraw()` after.\n     * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=false]\n     *        Whether to apply animation, and optionally animation\n     *        configuration.\n     */\n    NetworkgraphPoint.prototype.remove = function (redraw, animation) {\n        var point = this,\n            series = point.series,\n            nodesOptions = series.options.nodes || [];\n        var index,\n            i = nodesOptions.length;\n        // For nodes, remove all connected links:\n        if (point.isNode) {\n            // Temporary disable series.points array, because\n            // Series.removePoint() modifies it\n            series.points = [];\n            // Remove link from all nodes collections:\n            []\n                .concat(point.linksFrom)\n                .concat(point.linksTo)\n                .forEach(function (linkFromTo) {\n                // Incoming links\n                index = linkFromTo.fromNode.linksFrom.indexOf(linkFromTo);\n                if (index > -1) {\n                    linkFromTo.fromNode.linksFrom.splice(index, 1);\n                }\n                // Outcoming links\n                index = linkFromTo.toNode.linksTo.indexOf(linkFromTo);\n                if (index > -1) {\n                    linkFromTo.toNode.linksTo.splice(index, 1);\n                }\n                // Remove link from data/points collections\n                NetworkgraphPoint_seriesProto.removePoint.call(series, series.data.indexOf(linkFromTo), false, false);\n            });\n            // Restore points array, after links are removed\n            series.points = series.data.slice();\n            // Proceed with removing node. It's similar to\n            // Series.removePoint() method, but doesn't modify other arrays\n            series.nodes.splice(series.nodes.indexOf(point), 1);\n            // Remove node options from config\n            while (i--) {\n                if (nodesOptions[i].id === point.options.id) {\n                    series.options.nodes.splice(i, 1);\n                    break;\n                }\n            }\n            if (point) {\n                point.destroy();\n            }\n            // Run redraw if requested\n            series.isDirty = true;\n            series.isDirtyData = true;\n            if (redraw) {\n                series.chart.redraw(redraw);\n            }\n        }\n        else {\n            series.removePoint(series.data.indexOf(point), redraw, animation);\n        }\n    };\n    /**\n     * Render link and add it to the DOM.\n     * @private\n     */\n    NetworkgraphPoint.prototype.renderLink = function () {\n        var attribs;\n        if (!this.graphic) {\n            this.graphic = this.series.chart.renderer\n                .path(this.getLinkPath())\n                .addClass(this.getClassName(), true)\n                .add(this.series.group);\n            if (!this.series.chart.styledMode) {\n                attribs = this.series.pointAttribs(this);\n                this.graphic.attr(attribs);\n                (this.dataLabels || []).forEach(function (label) {\n                    if (label) {\n                        label.attr({\n                            opacity: attribs.opacity\n                        });\n                    }\n                });\n            }\n        }\n    };\n    return NetworkgraphPoint;\n}(Point));\nNetworkgraphPoint_extend(NetworkgraphPoint.prototype, {\n    setState: Series_NodesComposition.setNodeState\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Networkgraph_NetworkgraphPoint = (NetworkgraphPoint);\n\n;// ./code/es5/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n/**\n * A networkgraph is a type of relationship chart, where connnections\n * (links) attracts nodes (points) and other nodes repulse each other.\n *\n * @extends      plotOptions.line\n * @product      highcharts\n * @sample       highcharts/demo/network-graph/\n *               Networkgraph\n * @since        7.0.0\n * @excluding    boostThreshold, animation, animationLimit, connectEnds,\n *               colorAxis, colorKey, connectNulls, cropThreshold, dragDrop,\n *               getExtremesFromAll, label, linecap, negativeColor,\n *               pointInterval, pointIntervalUnit, pointPlacement,\n *               pointStart, softThreshold, stack, stacking, step,\n *               threshold, xAxis, yAxis, zoneAxis, dataSorting,\n *               boostBlending\n * @requires     modules/networkgraph\n * @optionparent plotOptions.networkgraph\n *\n * @private\n */\nvar NetworkgraphSeriesDefaults = {\n    stickyTracking: false,\n    /**\n     * @default   true\n     * @extends   plotOptions.series.inactiveOtherPoints\n     * @private\n     */\n    inactiveOtherPoints: true,\n    marker: {\n        enabled: true,\n        states: {\n            /**\n             * The opposite state of a hover for a single point node.\n             * Applied to all not connected nodes to the hovered one.\n             *\n             * @declare Highcharts.PointStatesInactiveOptionsObject\n             */\n            inactive: {\n                /**\n                 * Opacity of inactive markers.\n                 */\n                opacity: 0.3,\n                /**\n                 * Animation when not hovering over the node.\n                 *\n                 * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n                 */\n                animation: {\n                    /** @internal */\n                    duration: 50\n                }\n            }\n        }\n    },\n    states: {\n        /**\n         * The opposite state of a hover for a single point link. Applied\n         * to all links that are not coming from the hovered node.\n         *\n         * @declare Highcharts.SeriesStatesInactiveOptionsObject\n         */\n        inactive: {\n            /**\n             * Opacity of inactive links.\n             */\n            linkOpacity: 0.3,\n            /**\n             * Animation when not hovering over the node.\n             *\n             * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n             */\n            animation: {\n                /** @internal */\n                duration: 50\n            }\n        }\n    },\n    /**\n     * @sample highcharts/series-networkgraph/link-datalabels\n     *         Networkgraph with labels on links\n     * @sample highcharts/series-networkgraph/textpath-datalabels\n     *         Networkgraph with labels around nodes\n     * @sample highcharts/series-networkgraph/link-datalabels\n     *         Data labels moved into the nodes\n     * @sample highcharts/series-networkgraph/link-datalabels\n     *         Data labels moved under the links\n     *\n     * @declare Highcharts.SeriesNetworkgraphDataLabelsOptionsObject\n     *\n     * @private\n     */\n    dataLabels: {\n        /**\n         * The\n         * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n         * specifying what to show for _node_ in the networkgraph. In v7.0\n         * defaults to `{key}`, since v7.1 defaults to `undefined` and\n         * `formatter` is used instead.\n         *\n         * @type      {string}\n         * @since     7.0.0\n         * @apioption plotOptions.networkgraph.dataLabels.format\n         */\n        // eslint-disable-next-line valid-jsdoc\n        /**\n         * Callback JavaScript function to format the data label for a node.\n         * Note that if a `format` is defined, the format takes precedence\n         * and the formatter is ignored.\n         *\n         * @since 7.0.0\n         */\n        formatter: function () {\n            var _a;\n            return String((_a = this.key) !== null && _a !== void 0 ? _a : '');\n        },\n        /**\n         * The\n         * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n         * specifying what to show for _links_ in the networkgraph.\n         * (Default: `undefined`)\n         *\n         * @type      {string}\n         * @since     7.1.0\n         * @apioption plotOptions.networkgraph.dataLabels.linkFormat\n         */\n        // eslint-disable-next-line valid-jsdoc\n        /**\n         * Callback to format data labels for _links_ in the sankey diagram.\n         * The `linkFormat` option takes precedence over the\n         * `linkFormatter`.\n         *\n         * @since 7.1.0\n         */\n        linkFormatter: function () {\n            return (this.fromNode.name +\n                '<br>' +\n                this.toNode.name);\n        },\n        /**\n         * Options for a _link_ label text which should follow link\n         * connection. Border and background are disabled for a label that\n         * follows a path.\n         *\n         * **Note:** Only SVG-based renderer supports this option. Setting\n         * `useHTML` to true will disable this option.\n         *\n         * @extends plotOptions.networkgraph.dataLabels.textPath\n         * @since   7.1.0\n         */\n        linkTextPath: {\n            enabled: true\n        },\n        textPath: {\n            enabled: false\n        },\n        style: {\n            transition: 'opacity 2000ms'\n        },\n        defer: true,\n        animation: {\n            defer: 1000\n        }\n    },\n    /**\n     * Link style options\n     * @private\n     */\n    link: {\n        /**\n         * A name for the dash style to use for links.\n         *\n         * @type      {string}\n         * @apioption plotOptions.networkgraph.link.dashStyle\n         */\n        /**\n         * Opacity of the link between two nodes.\n         *\n         * @type      {number}\n         * @default   1\n         * @apioption plotOptions.networkgraph.link.opacity\n         */\n        /**\n         * Color of the link between two nodes.\n         */\n        color: 'rgba(100, 100, 100, 0.5)',\n        /**\n         * Width (px) of the link between two nodes.\n         */\n        width: 1\n    },\n    /**\n     * Flag to determine if nodes are draggable or not.\n     * @private\n     */\n    draggable: true,\n    layoutAlgorithm: {\n        /**\n         * Repulsive force applied on a node. Passed are two arguments:\n         * - `d` - which is current distance between two nodes\n         * - `k` - which is desired distance between two nodes\n         *\n         * In `verlet` integration, defaults to:\n         * `function (d, k) { return (k - d) / d * (k > d ? 1 : 0) }`\n         *\n         * @see [layoutAlgorithm.integration](#series.networkgraph.layoutAlgorithm.integration)\n         *\n         * @sample highcharts/series-networkgraph/forces/\n         *         Custom forces with Euler integration\n         * @sample highcharts/series-networkgraph/cuboids/\n         *         Custom forces with Verlet integration\n         *\n         * @type      {Function}\n         * @default   function (d, k) { return k * k / d; }\n         * @apioption plotOptions.networkgraph.layoutAlgorithm.repulsiveForce\n         */\n        /**\n         * Attraction force applied on a node which is conected to another\n         * node by a link. Passed are two arguments:\n         * - `d` - which is current distance between two nodes\n         * - `k` - which is desired distance between two nodes\n         *\n         * In `verlet` integration, defaults to:\n         * `function (d, k) { return (k - d) / d; }`\n         *\n         * @see [layoutAlgorithm.integration](#series.networkgraph.layoutAlgorithm.integration)\n         *\n         * @sample highcharts/series-networkgraph/forces/\n         *         Custom forces with Euler integration\n         * @sample highcharts/series-networkgraph/cuboids/\n         *         Custom forces with Verlet integration\n         *\n         * @type      {Function}\n         * @default   function (d, k) { return k * k / d; }\n         * @apioption plotOptions.networkgraph.layoutAlgorithm.attractiveForce\n         */\n        /**\n         * Ideal length (px) of the link between two nodes. When not\n         * defined, length is calculated as:\n         * `Math.pow(availableWidth * availableHeight / nodesLength, 0.4);`\n         *\n         * Note: Because of the algorithm specification, length of each link\n         * might be not exactly as specified.\n         *\n         * @sample highcharts/series-networkgraph/styled-links/\n         *         Numerical values\n         *\n         * @type      {number}\n         * @apioption plotOptions.networkgraph.layoutAlgorithm.linkLength\n         */\n        /**\n         * Initial layout algorithm for positioning nodes. Can be one of\n         * built-in options (\"circle\", \"random\") or a function where\n         * positions should be set on each node (`this.nodes`) as\n         * `node.plotX` and `node.plotY`\n         *\n         * @sample highcharts/series-networkgraph/initial-positions/\n         *         Initial positions with callback\n         *\n         * @type {\"circle\"|\"random\"|Function}\n         */\n        initialPositions: 'circle',\n        /**\n         * When `initialPositions` are set to 'circle',\n         * `initialPositionRadius` is a distance from the center of circle,\n         * in which nodes are created.\n         *\n         * @type    {number}\n         * @default 1\n         * @since   7.1.0\n         */\n        initialPositionRadius: 1,\n        /**\n         * Experimental. Enables live simulation of the algorithm\n         * implementation. All nodes are animated as the forces applies on\n         * them.\n         *\n         * @sample highcharts/demo/network-graph/\n         *         Live simulation enabled\n         */\n        enableSimulation: false,\n        /**\n         * Barnes-Hut approximation only.\n         * Deteremines when distance between cell and node is small enough\n         * to calculate forces. Value of `theta` is compared directly with\n         * quotient `s / d`, where `s` is the size of the cell, and `d` is\n         * distance between center of cell's mass and currently compared\n         * node.\n         *\n         * @see [layoutAlgorithm.approximation](#series.networkgraph.layoutAlgorithm.approximation)\n         *\n         * @since 7.1.0\n         */\n        theta: 0.5,\n        /**\n         * Verlet integration only.\n         * Max speed that node can get in one iteration. In terms of\n         * simulation, it's a maximum translation (in pixels) that node can\n         * move (in both, x and y, dimensions). While `friction` is applied\n         * on all nodes, max speed is applied only for nodes that move very\n         * fast, for example small or disconnected ones.\n         *\n         * @see [layoutAlgorithm.integration](#series.networkgraph.layoutAlgorithm.integration)\n         * @see [layoutAlgorithm.friction](#series.networkgraph.layoutAlgorithm.friction)\n         *\n         * @since 7.1.0\n         */\n        maxSpeed: 10,\n        /**\n         * Approximation used to calculate repulsive forces affecting nodes.\n         * By default, when calculating net force, nodes are compared\n         * against each other, which gives O(N^2) complexity. Using\n         * Barnes-Hut approximation, we decrease this to O(N log N), but the\n         * resulting graph will have different layout. Barnes-Hut\n         * approximation divides space into rectangles via quad tree, where\n         * forces exerted on nodes are calculated directly for nearby cells,\n         * and for all others, cells are treated as a separate node with\n         * center of mass.\n         *\n         * @see [layoutAlgorithm.theta](#series.networkgraph.layoutAlgorithm.theta)\n         *\n         * @sample highcharts/series-networkgraph/barnes-hut-approximation/\n         *         A graph with Barnes-Hut approximation\n         *\n         * @type       {string}\n         * @validvalue [\"barnes-hut\", \"none\"]\n         * @since      7.1.0\n         */\n        approximation: 'none',\n        /**\n         * Type of the algorithm used when positioning nodes.\n         *\n         * @type       {string}\n         * @validvalue [\"reingold-fruchterman\"]\n         */\n        type: 'reingold-fruchterman',\n        /**\n         * Integration type. Available options are `'euler'` and `'verlet'`.\n         * Integration determines how forces are applied on particles. In\n         * Euler integration, force is applied direct as\n         * `newPosition += velocity;`.\n         * In Verlet integration, new position is based on a previous\n         * position without velocity:\n         * `newPosition += previousPosition - newPosition`.\n         *\n         * Note that different integrations give different results as forces\n         * are different.\n         *\n         * In Highcharts v7.0.x only `'euler'` integration was supported.\n         *\n         * @sample highcharts/series-networkgraph/integration-comparison/\n         *         Comparison of Verlet and Euler integrations\n         *\n         * @type       {string}\n         * @validvalue [\"euler\", \"verlet\"]\n         * @since      7.1.0\n         */\n        integration: 'euler',\n        /**\n         * Max number of iterations before algorithm will stop. In general,\n         * algorithm should find positions sooner, but when rendering huge\n         * number of nodes, it is recommended to increase this value as\n         * finding perfect graph positions can require more time.\n         */\n        maxIterations: 1000,\n        /**\n         * Gravitational const used in the barycenter force of the\n         * algorithm.\n         *\n         * @sample highcharts/series-networkgraph/forces/\n         *         Custom forces with Euler integration\n         */\n        gravitationalConstant: 0.0625,\n        /**\n         * Friction applied on forces to prevent nodes rushing to fast to\n         * the desired positions.\n         */\n        friction: -0.981\n    },\n    showInLegend: false\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Networkgraph_NetworkgraphSeriesDefaults = (NetworkgraphSeriesDefaults);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Fires after the simulation is ended and the layout is stable.\n *\n * @type      {Highcharts.NetworkgraphAfterSimulationCallbackFunction}\n * @product   highcharts\n * @apioption series.networkgraph.events.afterSimulation\n */\n/**\n * A `networkgraph` series. If the [type](#series.networkgraph.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.networkgraph\n * @excluding boostThreshold, animation, animationLimit, connectEnds,\n *            connectNulls, cropThreshold, dragDrop, getExtremesFromAll, label,\n *            linecap, negativeColor, pointInterval, pointIntervalUnit,\n *            pointPlacement, pointStart, softThreshold, stack, stacking,\n *            step, threshold, xAxis, yAxis, zoneAxis, dataSorting,\n *            boostBlending\n * @product   highcharts\n * @requires  modules/networkgraph\n * @apioption series.networkgraph\n */\n/**\n * An array of data points for the series. For the `networkgraph` 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\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not available.\n *\n *  ```js\n *     data: [{\n *         from: 'Category1',\n *         to: 'Category2'\n *     }, {\n *         from: 'Category1',\n *         to: 'Category3'\n *     }]\n *  ```\n *\n * @type      {Array<Object|Array|number>}\n * @extends   series.line.data\n * @excluding drilldown,marker,x,y,dragDrop\n * @sample    {highcharts} highcharts/chart/reflow-true/\n *            Numerical values\n * @sample    {highcharts} highcharts/series/data-array-of-arrays/\n *            Arrays of numeric x and y\n * @sample    {highcharts} highcharts/series/data-array-of-arrays-datetime/\n *            Arrays of datetime x and y\n * @sample    {highcharts} highcharts/series/data-array-of-name-value/\n *            Arrays of point.name and y\n * @sample    {highcharts} highcharts/series/data-array-of-objects/\n *            Config objects\n * @product   highcharts\n * @apioption series.networkgraph.data\n */\n/**\n * @type      {Highcharts.SeriesNetworkgraphDataLabelsOptionsObject|Array<Highcharts.SeriesNetworkgraphDataLabelsOptionsObject>}\n * @product   highcharts\n * @apioption series.networkgraph.data.dataLabels\n */\n/**\n * The node that the link runs from.\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.networkgraph.data.from\n */\n/**\n * The node that the link runs to.\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.networkgraph.data.to\n */\n/**\n * A collection of options for the individual nodes. The nodes in a\n * networkgraph diagram are auto-generated instances of `Highcharts.Point`,\n * but options can be applied here and linked by the `id`.\n *\n * @sample highcharts/series-networkgraph/data-options/\n *         Networkgraph diagram with node options\n *\n * @type      {Array<*>}\n * @product   highcharts\n * @apioption series.networkgraph.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.networkgraph.nodes.id\n */\n/**\n * The color of the auto generated node.\n *\n * @type      {Highcharts.ColorString}\n * @product   highcharts\n * @apioption series.networkgraph.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.networkgraph.nodes.colorIndex\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/series-networkgraph/data-options/\n *         Networkgraph diagram with node options\n *\n * @type      {string}\n * @product   highcharts\n * @apioption series.networkgraph.nodes.name\n */\n/**\n * Mass of the node. By default, each node has mass equal to it's marker radius\n * . Mass is used to determine how two connected nodes should affect\n * each other:\n *\n * Attractive force is multiplied by the ratio of two connected\n * nodes; if a big node has weights twice as the small one, then the small one\n * will move towards the big one twice faster than the big one to the small one\n * .\n *\n * @sample highcharts/series-networkgraph/ragdoll/\n *         Mass determined by marker.radius\n *\n * @type      {number}\n * @product   highcharts\n * @apioption series.networkgraph.nodes.mass\n */\n/**\n * Options for the node markers.\n *\n * @extends   plotOptions.networkgraph.marker\n * @apioption series.networkgraph.nodes.marker\n */\n/**\n * Individual data label for each node. The options are the same as\n * the ones for [series.networkgraph.dataLabels](#series.networkgraph.dataLabels).\n *\n * @type      {Highcharts.SeriesNetworkgraphDataLabelsOptionsObject|Array<Highcharts.SeriesNetworkgraphDataLabelsOptionsObject>}\n *\n * @apioption series.networkgraph.nodes.dataLabels\n */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es5/es-modules/Series/Networkgraph/EulerIntegration.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Attractive force.\n *\n * In Euler integration, force is stored in a node, not changing it's\n * position. Later, in `integrate()` forces are applied on nodes.\n *\n * @private\n * @param {Highcharts.Point} link\n *        Link that connects two nodes\n * @param {number} force\n *        Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n *        Distance between two nodes e.g. `{x, y}`\n * @param {number} distanceR\n     */\nfunction attractive(link, force, distanceXY, distanceR) {\n    var massFactor = link.getMass(), translatedX = (distanceXY.x / distanceR) * force, translatedY = (distanceXY.y / distanceR) * force;\n    if (!link.fromNode.fixedPosition) {\n        link.fromNode.dispX -=\n            translatedX * massFactor.fromNode / link.fromNode.degree;\n        link.fromNode.dispY -=\n            translatedY * massFactor.fromNode / link.fromNode.degree;\n    }\n    if (!link.toNode.fixedPosition) {\n        link.toNode.dispX +=\n            translatedX * massFactor.toNode / link.toNode.degree;\n        link.toNode.dispY +=\n            translatedY * massFactor.toNode / link.toNode.degree;\n    }\n}\n/**\n * Attractive force function. Can be replaced by API's\n * `layoutAlgorithm.attractiveForce`\n *\n * Other forces that can be used:\n *\n * basic, not recommended:\n *    `function (d, k) { return d / k }`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction attractiveForceFunction(d, k) {\n    return d * d / k;\n}\n/**\n * Barycenter force. Calculate and applys barycenter forces on the\n * nodes. Making them closer to the center of their barycenter point.\n *\n * In Euler integration, force is stored in a node, not changing it's\n * position. Later, in `integrate()` forces are applied on nodes.\n *\n * @private\n */\nfunction barycenter() {\n    var gravitationalConstant = this.options.gravitationalConstant,\n        xFactor = this.barycenter.xFactor,\n        yFactor = this.barycenter.yFactor;\n    this.nodes.forEach(function (node) {\n        if (!node.fixedPosition) {\n            var degree = node.getDegree(),\n                phi = degree * (1 + degree / 2);\n            node.dispX += ((xFactor - node.plotX) *\n                gravitationalConstant *\n                phi / node.degree);\n            node.dispY += ((yFactor - node.plotY) *\n                gravitationalConstant *\n                phi / node.degree);\n        }\n    });\n}\n/**\n * Estimate the best possible distance between two nodes, making graph\n * readable.\n * @private\n */\nfunction getK(layout) {\n    return Math.pow(layout.box.width * layout.box.height / layout.nodes.length, 0.3);\n}\n/**\n * Integration method.\n *\n * In Euler integration, force were stored in a node, not changing it's\n * position. Now, in the integrator method, we apply changes.\n *\n * Euler:\n *\n * Basic form: `x(n+1) = x(n) + v(n)`\n *\n * With Rengoild-Fruchterman we get:\n * `x(n+1) = x(n) + v(n) / length(v(n)) * min(v(n), temperature(n))`\n * where:\n * - `x(n+1)`: next position\n * - `x(n)`: current position\n * - `v(n)`: velocity (comes from net force)\n * - `temperature(n)`: current temperature\n *\n * Known issues:\n * Oscillations when force vector has the same magnitude but opposite\n * direction in the next step. Potentially solved by decreasing force by\n * `v * (1 / node.degree)`\n *\n * Note:\n * Actually `min(v(n), temperature(n))` replaces simulated annealing.\n *\n * @private\n * @param {Highcharts.NetworkgraphLayout} layout\n *        Layout object\n * @param {Highcharts.Point} node\n *        Node that should be translated\n */\nfunction integrate(layout, node) {\n    node.dispX +=\n        node.dispX * layout.options.friction;\n    node.dispY +=\n        node.dispY * layout.options.friction;\n    var distanceR = node.temperature = layout.vectorLength({\n            x: node.dispX,\n            y: node.dispY\n        });\n    if (distanceR !== 0) {\n        node.plotX += (node.dispX / distanceR *\n            Math.min(Math.abs(node.dispX), layout.temperature));\n        node.plotY += (node.dispY / distanceR *\n            Math.min(Math.abs(node.dispY), layout.temperature));\n    }\n}\n/**\n * Repulsive force.\n *\n * @private\n * @param {Highcharts.Point} node\n *        Node that should be translated by force.\n * @param {number} force\n *        Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n *        Distance between two nodes e.g. `{x, y}`\n */\nfunction repulsive(node, force, distanceXY, distanceR) {\n    node.dispX +=\n        (distanceXY.x / distanceR) * force / node.degree;\n    node.dispY +=\n        (distanceXY.y / distanceR) * force / node.degree;\n}\n/**\n * Repulsive force function. Can be replaced by API's\n * `layoutAlgorithm.repulsiveForce`.\n *\n * Other forces that can be used:\n *\n * basic, not recommended:\n *    `function (d, k) { return k / d }`\n *\n * standard:\n *    `function (d, k) { return k * k / d }`\n *\n * grid-variant:\n *    `function (d, k) { return k * k / d * (2 * k - d > 0 ? 1 : 0) }`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction repulsiveForceFunction(d, k) {\n    return k * k / d;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar EulerIntegration = {\n    attractive: attractive,\n    attractiveForceFunction: attractiveForceFunction,\n    barycenter: barycenter,\n    getK: getK,\n    integrate: integrate,\n    repulsive: repulsive,\n    repulsiveForceFunction: repulsiveForceFunction\n};\n/* harmony default export */ var Networkgraph_EulerIntegration = (EulerIntegration);\n\n;// ./code/es5/es-modules/Series/Networkgraph/QuadTreeNode.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * The QuadTree node class. Used in Networkgraph chart as a base for Barnes-Hut\n * approximation.\n *\n * @private\n * @class\n * @name Highcharts.QuadTreeNode\n *\n * @param {Highcharts.Dictionary<number>} box\n *        Available space for the node\n */\nvar QuadTreeNode = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function QuadTreeNode(box) {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        /**\n         * Read only. If QuadTreeNode is an external node, Point is stored in\n         * `this.body`.\n         *\n         * @name Highcharts.QuadTreeNode#body\n         * @type {boolean|Highcharts.Point}\n         */\n        this.body = false;\n        /**\n         * Read only. Internal nodes when created are empty to reserve the\n         * space. If Point is added to this QuadTreeNode, QuadTreeNode is no\n         * longer empty.\n         *\n         * @name Highcharts.QuadTreeNode#isEmpty\n         * @type {boolean}\n         */\n        this.isEmpty = false;\n        /**\n         * Read only. Flag to determine if QuadTreeNode is internal (and has\n         * subnodes with mass and central position) or external (bound to\n         * Point).\n         *\n         * @name Highcharts.QuadTreeNode#isInternal\n         * @type {boolean}\n         */\n        this.isInternal = false;\n        /**\n         * Read only. Array of subnodes. Empty if QuadTreeNode has just one\n         * Point. When added another Point to this QuadTreeNode, array is\n         * filled with four subnodes.\n         *\n         * @name Highcharts.QuadTreeNode#nodes\n         * @type {Array<Highcharts.QuadTreeNode>}\n         */\n        this.nodes = [];\n        /**\n         * Read only. The available space for node.\n         *\n         * @name Highcharts.QuadTreeNode#box\n         * @type {Highcharts.Dictionary<number>}\n         */\n        this.box = box;\n        /**\n         * Read only. The minium of width and height values.\n         *\n         * @name Highcharts.QuadTreeNode#boxSize\n         * @type {number}\n         */\n        this.boxSize = Math.min(box.width, box.height);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * When inserting another node into the box, that already hove one node,\n     * divide the available space into another four quadrants.\n     *\n     * Indexes of quadrants are:\n     * ```\n     * -------------               -------------\n     * |           |               |     |     |\n     * |           |               |  0  |  1  |\n     * |           |   divide()    |     |     |\n     * |     1     | ----------->  -------------\n     * |           |               |     |     |\n     * |           |               |  3  |  2  |\n     * |           |               |     |     |\n     * -------------               -------------\n     * ```\n     */\n    QuadTreeNode.prototype.divideBox = function () {\n        var halfWidth = this.box.width / 2, halfHeight = this.box.height / 2;\n        // Top left\n        this.nodes[0] = new QuadTreeNode({\n            left: this.box.left,\n            top: this.box.top,\n            width: halfWidth,\n            height: halfHeight\n        });\n        // Top right\n        this.nodes[1] = new QuadTreeNode({\n            left: this.box.left + halfWidth,\n            top: this.box.top,\n            width: halfWidth,\n            height: halfHeight\n        });\n        // Bottom right\n        this.nodes[2] = new QuadTreeNode({\n            left: this.box.left + halfWidth,\n            top: this.box.top + halfHeight,\n            width: halfWidth,\n            height: halfHeight\n        });\n        // Bottom left\n        this.nodes[3] = new QuadTreeNode({\n            left: this.box.left,\n            top: this.box.top + halfHeight,\n            width: halfWidth,\n            height: halfHeight\n        });\n    };\n    /**\n     * Determine which of the quadrants should be used when placing node in\n     * the QuadTree. Returned index is always in range `< 0 , 3 >`.\n     * @private\n     */\n    QuadTreeNode.prototype.getBoxPosition = function (point) {\n        var left = point.plotX < this.box.left + this.box.width / 2, top = point.plotY < this.box.top + this.box.height / 2;\n        var index;\n        if (left) {\n            if (top) {\n                // Top left\n                index = 0;\n            }\n            else {\n                // Bottom left\n                index = 3;\n            }\n        }\n        else {\n            if (top) {\n                // Top right\n                index = 1;\n            }\n            else {\n                // Bottom right\n                index = 2;\n            }\n        }\n        return index;\n    };\n    /**\n     * Insert recursively point(node) into the QuadTree. If the given\n     * quadrant is already occupied, divide it into smaller quadrants.\n     *\n     * @param {Highcharts.Point} point\n     *        Point/node to be inserted\n     * @param {number} depth\n     *        Max depth of the QuadTree\n     */\n    QuadTreeNode.prototype.insert = function (point, depth) {\n        var newQuadTreeNode;\n        if (this.isInternal) {\n            // Internal node:\n            this.nodes[this.getBoxPosition(point)].insert(point, depth - 1);\n        }\n        else {\n            this.isEmpty = false;\n            if (!this.body) {\n                // First body in a quadrant:\n                this.isInternal = false;\n                this.body = point;\n            }\n            else {\n                if (depth) {\n                    // Every other body in a quadrant:\n                    this.isInternal = true;\n                    this.divideBox();\n                    // Reinsert main body only once:\n                    if (this.body !== true) {\n                        this.nodes[this.getBoxPosition(this.body)]\n                            .insert(this.body, depth - 1);\n                        this.body = true;\n                    }\n                    // Add second body:\n                    this.nodes[this.getBoxPosition(point)]\n                        .insert(point, depth - 1);\n                }\n                else {\n                    // We are below max allowed depth. That means either:\n                    // - really huge number of points\n                    // - falling two points into exactly the same position\n                    // In this case, create another node in the QuadTree.\n                    //\n                    // Alternatively we could add some noise to the\n                    // position, but that could result in different\n                    // rendered chart in exporting.\n                    newQuadTreeNode = new QuadTreeNode({\n                        top: point.plotX || NaN,\n                        left: point.plotY || NaN,\n                        // Width/height below 1px\n                        width: 0.1,\n                        height: 0.1\n                    });\n                    newQuadTreeNode.body = point;\n                    newQuadTreeNode.isInternal = false;\n                    this.nodes.push(newQuadTreeNode);\n                }\n            }\n        }\n    };\n    /**\n     * Each quad node requires it's mass and center position. That mass and\n     * position is used to imitate real node in the layout by approximation.\n     */\n    QuadTreeNode.prototype.updateMassAndCenter = function () {\n        var mass = 0,\n            plotX = 0,\n            plotY = 0;\n        if (this.isInternal) {\n            // Calculate weightened mass of the quad node:\n            for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n                var pointMass = _a[_i];\n                if (!pointMass.isEmpty) {\n                    mass += pointMass.mass;\n                    plotX += pointMass.plotX * pointMass.mass;\n                    plotY += pointMass.plotY * pointMass.mass;\n                }\n            }\n            plotX /= mass;\n            plotY /= mass;\n        }\n        else if (this.body) {\n            // Just one node, use coordinates directly:\n            mass = this.body.mass;\n            plotX = this.body.plotX;\n            plotY = this.body.plotY;\n        }\n        // Store details:\n        this.mass = mass;\n        this.plotX = plotX;\n        this.plotY = plotY;\n    };\n    return QuadTreeNode;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Networkgraph_QuadTreeNode = (QuadTreeNode);\n\n;// ./code/es5/es-modules/Series/Networkgraph/QuadTree.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * The QuadTree class. Used in Networkgraph chart as a base for Barnes-Hut\n * approximation.\n *\n * @private\n * @class\n * @name Highcharts.QuadTree\n *\n * @param {number} x\n *        Left position of the plotting area\n * @param {number} y\n *        Top position of the plotting area\n * @param {number} width\n *        Width of the plotting area\n * @param {number} height\n *        Height of the plotting area\n */\nvar QuadTree = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function QuadTree(x, y, width, height) {\n        // Boundary rectangle:\n        this.box = {\n            left: x,\n            top: y,\n            width: width,\n            height: height\n        };\n        this.maxDepth = 25;\n        this.root = new Networkgraph_QuadTreeNode(this.box);\n        this.root.isInternal = true;\n        this.root.isRoot = true;\n        this.root.divideBox();\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Calculate mass of the each QuadNode in the tree.\n     */\n    QuadTree.prototype.calculateMassAndCenter = function () {\n        this.visitNodeRecursive(null, null, function (node) {\n            node.updateMassAndCenter();\n        });\n    };\n    /**\n     * Insert nodes into the QuadTree\n     *\n     * @param {Array<Highcharts.Point>} points\n     *        Points as nodes\n     */\n    QuadTree.prototype.insertNodes = function (points) {\n        for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n            var point = points_1[_i];\n            this.root.insert(point, this.maxDepth);\n        }\n    };\n    /**\n     * Depth first treversal (DFS). Using `before` and `after` callbacks,\n     * we can get two results: preorder and postorder traversals, reminder:\n     *\n     * ```\n     *     (a)\n     *     / \\\n     *   (b) (c)\n     *   / \\\n     * (d) (e)\n     * ```\n     *\n     * DFS (preorder): `a -> b -> d -> e -> c`\n     *\n     * DFS (postorder): `d -> e -> b -> c -> a`\n     *\n     * @param {Highcharts.QuadTreeNode|null} node\n     *        QuadTree node\n     * @param {Function} [beforeCallback]\n     *        Function to be called before visiting children nodes.\n     * @param {Function} [afterCallback]\n     *        Function to be called after visiting children nodes.\n     */\n    QuadTree.prototype.visitNodeRecursive = function (node, beforeCallback, afterCallback) {\n        var goFurther;\n        if (!node) {\n            node = this.root;\n        }\n        if (node === this.root && beforeCallback) {\n            goFurther = beforeCallback(node);\n        }\n        if (goFurther === false) {\n            return;\n        }\n        for (var _i = 0, _a = node.nodes; _i < _a.length; _i++) {\n            var qtNode = _a[_i];\n            if (qtNode.isInternal) {\n                if (beforeCallback) {\n                    goFurther = beforeCallback(qtNode);\n                }\n                if (goFurther === false) {\n                    continue;\n                }\n                this.visitNodeRecursive(qtNode, beforeCallback, afterCallback);\n            }\n            else if (qtNode.body) {\n                if (beforeCallback) {\n                    beforeCallback(qtNode.body);\n                }\n            }\n            if (afterCallback) {\n                afterCallback(qtNode);\n            }\n        }\n        if (node === this.root && afterCallback) {\n            afterCallback(node);\n        }\n    };\n    return QuadTree;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Networkgraph_QuadTree = (QuadTree);\n\n;// ./code/es5/es-modules/Series/Networkgraph/VerletIntegration.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Attractive force.\n *\n * In Verlet integration, force is applied on a node immediately to it's\n * `plotX` and `plotY` position.\n *\n * @private\n * @param {Highcharts.Point} link\n *        Link that connects two nodes\n * @param {number} force\n *        Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n *        Distance between two nodes e.g. `{x, y}`\n */\nfunction VerletIntegration_attractive(link, force, distanceXY) {\n    var massFactor = link.getMass(),\n        translatedX = -distanceXY.x * force * this.diffTemperature,\n        translatedY = -distanceXY.y * force * this.diffTemperature;\n    if (!link.fromNode.fixedPosition) {\n        link.fromNode.plotX -=\n            translatedX * massFactor.fromNode / link.fromNode.degree;\n        link.fromNode.plotY -=\n            translatedY * massFactor.fromNode / link.fromNode.degree;\n    }\n    if (!link.toNode.fixedPosition) {\n        link.toNode.plotX +=\n            translatedX * massFactor.toNode / link.toNode.degree;\n        link.toNode.plotY +=\n            translatedY * massFactor.toNode / link.toNode.degree;\n    }\n}\n/**\n * Attractive force function. Can be replaced by API's\n * `layoutAlgorithm.attractiveForce`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction VerletIntegration_attractiveForceFunction(d, k) {\n    // Used in API:\n    return (k - d) / d;\n}\n/**\n * Barycenter force. Calculate and applys barycenter forces on the\n * nodes. Making them closer to the center of their barycenter point.\n *\n * In Verlet integration, force is applied on a node immediately to it's\n * `plotX` and `plotY` position.\n *\n * @private\n */\nfunction VerletIntegration_barycenter() {\n    var gravitationalConstant = this.options.gravitationalConstant || 0,\n        xFactor = (this.barycenter.xFactor -\n            (this.box.left + this.box.width) / 2) * gravitationalConstant,\n        yFactor = (this.barycenter.yFactor -\n            (this.box.top + this.box.height) / 2) * gravitationalConstant;\n    this.nodes.forEach(function (node) {\n        if (!node.fixedPosition) {\n            node.plotX -=\n                xFactor / node.mass / node.degree;\n            node.plotY -=\n                yFactor / node.mass / node.degree;\n        }\n    });\n}\n/**\n * Estiamte the best possible distance between two nodes, making graph\n * readable.\n * @private\n */\nfunction VerletIntegration_getK(layout) {\n    return Math.pow(layout.box.width * layout.box.height / layout.nodes.length, 0.5);\n}\n/**\n * Integration method.\n *\n * In Verlet integration, forces are applied on node immediately to it's\n * `plotX` and `plotY` position.\n *\n * Verlet without velocity:\n *\n *    x(n+1) = 2 * x(n) - x(n-1) + A(T) * deltaT ^ 2\n *\n * where:\n *     - x(n+1) - new position\n *     - x(n) - current position\n *     - x(n-1) - previous position\n *\n * Assuming A(t) = 0 (no acceleration) and (deltaT = 1) we get:\n *\n *     x(n+1) = x(n) + (x(n) - x(n-1))\n *\n * where:\n *     - (x(n) - x(n-1)) - position change\n *\n * TO DO:\n * Consider Verlet with velocity to support additional\n * forces. Or even Time-Corrected Verlet by Jonathan\n * \"lonesock\" Dummer\n *\n * @private\n * @param {Highcharts.NetworkgraphLayout} layout layout object\n * @param {Highcharts.Point} node node that should be translated\n */\nfunction VerletIntegration_integrate(layout, node) {\n    var friction = -layout.options.friction, maxSpeed = layout.options.maxSpeed, prevX = node.prevX, prevY = node.prevY, \n        // Apply friction:\n        frictionX = ((node.plotX + node.dispX -\n            prevX) * friction), frictionY = ((node.plotY + node.dispY -\n            prevY) * friction), abs = Math.abs, signX = abs(frictionX) / (frictionX || 1), // Need to deal with 0\n        signY = abs(frictionY) / (frictionY || 1), \n        // Apply max speed:\n        diffX = signX * Math.min(maxSpeed, Math.abs(frictionX)), diffY = signY * Math.min(maxSpeed, Math.abs(frictionY));\n    // Store for the next iteration:\n    node.prevX = node.plotX + node.dispX;\n    node.prevY = node.plotY + node.dispY;\n    // Update positions:\n    node.plotX += diffX;\n    node.plotY += diffY;\n    node.temperature = layout.vectorLength({\n        x: diffX,\n        y: diffY\n    });\n}\n/**\n * Repulsive force.\n *\n * In Verlet integration, force is applied on a node immediately to it's\n * `plotX` and `plotY` position.\n *\n * @private\n * @param {Highcharts.Point} node\n *        Node that should be translated by force.\n * @param {number} force\n *        Force calculated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n *        Distance between two nodes e.g. `{x, y}`\n */\nfunction VerletIntegration_repulsive(node, force, distanceXY) {\n    var factor = force * this.diffTemperature / node.mass / node.degree;\n    if (!node.fixedPosition) {\n        node.plotX += distanceXY.x * factor;\n        node.plotY += distanceXY.y * factor;\n    }\n}\n/**\n * Repulsive force function. Can be replaced by API's\n * `layoutAlgorithm.repulsiveForce`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\nfunction VerletIntegration_repulsiveForceFunction(d, k) {\n    // Used in API:\n    return (k - d) / d * (k > d ? 1 : 0); // Force only for close nodes\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar VerletIntegration = {\n    attractive: VerletIntegration_attractive,\n    attractiveForceFunction: VerletIntegration_attractiveForceFunction,\n    barycenter: VerletIntegration_barycenter,\n    getK: VerletIntegration_getK,\n    integrate: VerletIntegration_integrate,\n    repulsive: VerletIntegration_repulsive,\n    repulsiveForceFunction: VerletIntegration_repulsiveForceFunction\n};\n/* harmony default export */ var Networkgraph_VerletIntegration = (VerletIntegration);\n\n;// ./code/es5/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\n\n\nvar clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, ReingoldFruchtermanLayout_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, isFunction = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isFunction, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, ReingoldFruchtermanLayout_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * Reingold-Fruchterman algorithm from\n * \"Graph Drawing by Force-directed Placement\" paper.\n * @private\n */\nvar ReingoldFruchtermanLayout = /** @class */ (function () {\n    function ReingoldFruchtermanLayout() {\n        /* *\n         *\n         *  Static Functions\n         *\n         * */\n        this.box = {};\n        this.currentStep = 0;\n        this.initialRendering = true;\n        this.links = [];\n        this.nodes = [];\n        this.series = [];\n        this.simulation = false;\n    }\n    ReingoldFruchtermanLayout.compose = function (ChartClass) {\n        Series_GraphLayoutComposition.compose(ChartClass);\n        Series_GraphLayoutComposition.integrations.euler = Networkgraph_EulerIntegration;\n        Series_GraphLayoutComposition.integrations.verlet = Networkgraph_VerletIntegration;\n        Series_GraphLayoutComposition.layouts['reingold-fruchterman'] =\n            ReingoldFruchtermanLayout;\n    };\n    ReingoldFruchtermanLayout.prototype.init = function (options) {\n        this.options = options;\n        this.nodes = [];\n        this.links = [];\n        this.series = [];\n        this.box = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0\n        };\n        this.setInitialRendering(true);\n        this.integration =\n            Series_GraphLayoutComposition.integrations[options.integration];\n        this.enableSimulation = options.enableSimulation;\n        this.attractiveForce = ReingoldFruchtermanLayout_pick(options.attractiveForce, this.integration.attractiveForceFunction);\n        this.repulsiveForce = ReingoldFruchtermanLayout_pick(options.repulsiveForce, this.integration.repulsiveForceFunction);\n        this.approximation = options.approximation;\n    };\n    ReingoldFruchtermanLayout.prototype.updateSimulation = function (enable) {\n        this.enableSimulation = ReingoldFruchtermanLayout_pick(enable, this.options.enableSimulation);\n    };\n    ReingoldFruchtermanLayout.prototype.start = function () {\n        var layout = this,\n            series = this.series,\n            options = this.options;\n        layout.currentStep = 0;\n        layout.forces = series[0] && series[0].forces || [];\n        layout.chart = series[0] && series[0].chart;\n        if (layout.initialRendering) {\n            layout.initPositions();\n            // Render elements in initial positions:\n            series.forEach(function (s) {\n                s.finishedAnimating = true; // #13169\n                s.render();\n            });\n        }\n        layout.setK();\n        layout.resetSimulation(options);\n        if (layout.enableSimulation) {\n            layout.step();\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.step = function () {\n        var _this = this;\n        var anyLayout = this,\n            allSeries = this.series;\n        // Algorithm:\n        this.currentStep++;\n        if (this.approximation === 'barnes-hut') {\n            this.createQuadTree();\n            this.quadTree.calculateMassAndCenter();\n        }\n        for (var _i = 0, _a = this.forces || []; _i < _a.length; _i++) {\n            var forceName = _a[_i];\n            anyLayout[forceName + 'Forces'](this.temperature);\n        }\n        // Limit to the plotting area and cool down:\n        this.applyLimits();\n        // Cool down the system:\n        this.temperature = this.coolDown(this.startTemperature, this.diffTemperature, this.currentStep);\n        this.prevSystemTemperature = this.systemTemperature;\n        this.systemTemperature = this.getSystemTemperature();\n        if (this.enableSimulation) {\n            for (var _b = 0, allSeries_1 = allSeries; _b < allSeries_1.length; _b++) {\n                var series = allSeries_1[_b];\n                // Chart could be destroyed during the simulation\n                if (series.chart) {\n                    series.render();\n                }\n            }\n            if (this.maxIterations-- &&\n                isFinite(this.temperature) &&\n                !this.isStable()) {\n                if (this.simulation) {\n                    win.cancelAnimationFrame(this.simulation);\n                }\n                this.simulation = win.requestAnimationFrame(function () { return _this.step(); });\n            }\n            else {\n                this.simulation = false;\n                this.series.forEach(function (s) {\n                    fireEvent(s, 'afterSimulation');\n                });\n            }\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.stop = function () {\n        if (this.simulation) {\n            win.cancelAnimationFrame(this.simulation);\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.setArea = function (x, y, w, h) {\n        this.box = {\n            left: x,\n            top: y,\n            width: w,\n            height: h\n        };\n    };\n    ReingoldFruchtermanLayout.prototype.setK = function () {\n        // Optimal distance between nodes,\n        // available space around the node:\n        this.k = this.options.linkLength || this.integration.getK(this);\n    };\n    ReingoldFruchtermanLayout.prototype.addElementsToCollection = function (elements, collection) {\n        for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n            var element = elements_1[_i];\n            if (collection.indexOf(element) === -1) {\n                collection.push(element);\n            }\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.removeElementFromCollection = function (element, collection) {\n        var index = collection.indexOf(element);\n        if (index !== -1) {\n            collection.splice(index, 1);\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.clear = function () {\n        this.nodes.length = 0;\n        this.links.length = 0;\n        this.series.length = 0;\n        this.resetSimulation();\n    };\n    ReingoldFruchtermanLayout.prototype.resetSimulation = function () {\n        this.forcedStop = false;\n        this.systemTemperature = 0;\n        this.setMaxIterations();\n        this.setTemperature();\n        this.setDiffTemperature();\n    };\n    ReingoldFruchtermanLayout.prototype.restartSimulation = function () {\n        if (!this.simulation) {\n            // When dragging nodes, we don't need to calculate\n            // initial positions and rendering nodes:\n            this.setInitialRendering(false);\n            // Start new simulation:\n            if (!this.enableSimulation) {\n                // Run only one iteration to speed things up:\n                this.setMaxIterations(1);\n            }\n            else {\n                this.start();\n            }\n            if (this.chart) {\n                this.chart.redraw();\n            }\n            // Restore defaults:\n            this.setInitialRendering(true);\n        }\n        else {\n            // Extend current simulation:\n            this.resetSimulation();\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.setMaxIterations = function (maxIterations) {\n        this.maxIterations = ReingoldFruchtermanLayout_pick(maxIterations, this.options.maxIterations);\n    };\n    ReingoldFruchtermanLayout.prototype.setTemperature = function () {\n        this.temperature = this.startTemperature =\n            Math.sqrt(this.nodes.length);\n    };\n    ReingoldFruchtermanLayout.prototype.setDiffTemperature = function () {\n        this.diffTemperature = this.startTemperature /\n            (this.options.maxIterations + 1);\n    };\n    ReingoldFruchtermanLayout.prototype.setInitialRendering = function (enable) {\n        this.initialRendering = enable;\n    };\n    ReingoldFruchtermanLayout.prototype.createQuadTree = function () {\n        this.quadTree = new Networkgraph_QuadTree(this.box.left, this.box.top, this.box.width, this.box.height);\n        this.quadTree.insertNodes(this.nodes);\n    };\n    ReingoldFruchtermanLayout.prototype.initPositions = function () {\n        var initialPositions = this.options.initialPositions;\n        if (isFunction(initialPositions)) {\n            initialPositions.call(this);\n            for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n                var node = _a[_i];\n                if (!ReingoldFruchtermanLayout_defined(node.prevX)) {\n                    node.prevX = node.plotX;\n                }\n                if (!ReingoldFruchtermanLayout_defined(node.prevY)) {\n                    node.prevY = node.plotY;\n                }\n                node.dispX = 0;\n                node.dispY = 0;\n            }\n        }\n        else if (initialPositions === 'circle') {\n            this.setCircularPositions();\n        }\n        else {\n            this.setRandomPositions();\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.setCircularPositions = function () {\n        var box = this.box,\n            nodes = this.nodes,\n            nodesLength = nodes.length + 1,\n            angle = 2 * Math.PI / nodesLength,\n            rootNodes = nodes.filter(function (node) {\n                return node.linksTo.length === 0;\n        }), visitedNodes = {}, radius = this.options.initialPositionRadius, addToNodes = function (node) {\n            for (var _i = 0, _a = node.linksFrom || []; _i < _a.length; _i++) {\n                var link = _a[_i];\n                if (!visitedNodes[link.toNode.id]) {\n                    visitedNodes[link.toNode.id] = true;\n                    sortedNodes.push(link.toNode);\n                    addToNodes(link.toNode);\n                }\n            }\n        };\n        var sortedNodes = [];\n        // Start with identified root nodes an sort the nodes by their\n        // hierarchy. In trees, this ensures that branches don't cross\n        // eachother.\n        for (var _i = 0, rootNodes_1 = rootNodes; _i < rootNodes_1.length; _i++) {\n            var rootNode = rootNodes_1[_i];\n            sortedNodes.push(rootNode);\n            addToNodes(rootNode);\n        }\n        // Cyclic tree, no root node found\n        if (!sortedNodes.length) {\n            sortedNodes = nodes;\n            // Dangling, cyclic trees\n        }\n        else {\n            for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\n                var node_1 = nodes_1[_a];\n                if (sortedNodes.indexOf(node_1) === -1) {\n                    sortedNodes.push(node_1);\n                }\n            }\n        }\n        var node;\n        // Initial positions are laid out along a small circle, appearing\n        // as a cluster in the middle\n        for (var i = 0, iEnd = sortedNodes.length; i < iEnd; ++i) {\n            node = sortedNodes[i];\n            node.plotX = node.prevX = ReingoldFruchtermanLayout_pick(node.plotX, box.width / 2 + radius * Math.cos(i * angle));\n            node.plotY = node.prevY = ReingoldFruchtermanLayout_pick(node.plotY, box.height / 2 + radius * Math.sin(i * angle));\n            node.dispX = 0;\n            node.dispY = 0;\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.setRandomPositions = function () {\n        var box = this.box,\n            nodes = this.nodes,\n            nodesLength = nodes.length + 1, \n            /**\n             * Return a repeatable,\n            quasi-random number based on an integer\n             * input. For the initial positions\n             * @private\n             */\n            unrandom = function (n) {\n                var rand = n * n / Math.PI;\n            rand = rand - Math.floor(rand);\n            return rand;\n        };\n        var node;\n        // Initial positions:\n        for (var i = 0, iEnd = nodes.length; i < iEnd; ++i) {\n            node = nodes[i];\n            node.plotX = node.prevX = ReingoldFruchtermanLayout_pick(node.plotX, box.width * unrandom(i));\n            node.plotY = node.prevY = ReingoldFruchtermanLayout_pick(node.plotY, box.height * unrandom(nodesLength + i));\n            node.dispX = 0;\n            node.dispY = 0;\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.force = function (name) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        this.integration[name].apply(this, args);\n    };\n    ReingoldFruchtermanLayout.prototype.barycenterForces = function () {\n        this.getBarycenter();\n        this.force('barycenter');\n    };\n    ReingoldFruchtermanLayout.prototype.getBarycenter = function () {\n        var systemMass = 0,\n            cx = 0,\n            cy = 0;\n        for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n            var node = _a[_i];\n            cx += node.plotX * node.mass;\n            cy += node.plotY * node.mass;\n            systemMass += node.mass;\n        }\n        this.barycenter = {\n            x: cx,\n            y: cy,\n            xFactor: cx / systemMass,\n            yFactor: cy / systemMass\n        };\n        return this.barycenter;\n    };\n    ReingoldFruchtermanLayout.prototype.barnesHutApproximation = function (node, quadNode) {\n        var distanceXY = this.getDistXY(node,\n            quadNode),\n            distanceR = this.vectorLength(distanceXY);\n        var goDeeper,\n            force;\n        if (node !== quadNode && distanceR !== 0) {\n            if (quadNode.isInternal) {\n                // Internal node:\n                if (quadNode.boxSize / distanceR <\n                    this.options.theta &&\n                    distanceR !== 0) {\n                    // Treat as an external node:\n                    force = this.repulsiveForce(distanceR, this.k);\n                    this.force('repulsive', node, force * quadNode.mass, distanceXY, distanceR);\n                    goDeeper = false;\n                }\n                else {\n                    // Go deeper:\n                    goDeeper = true;\n                }\n            }\n            else {\n                // External node, direct force:\n                force = this.repulsiveForce(distanceR, this.k);\n                this.force('repulsive', node, force * quadNode.mass, distanceXY, distanceR);\n            }\n        }\n        return goDeeper;\n    };\n    ReingoldFruchtermanLayout.prototype.repulsiveForces = function () {\n        var _this = this;\n        if (this.approximation === 'barnes-hut') {\n            var _loop_1 = function (node) {\n                    this_1.quadTree.visitNodeRecursive(null,\n                function (quadNode) { return (_this.barnesHutApproximation(node,\n                quadNode)); });\n            };\n            var this_1 = this;\n            for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n                var node = _a[_i];\n                _loop_1(node);\n            }\n        }\n        else {\n            var force = void 0,\n                distanceR = void 0,\n                distanceXY = void 0;\n            for (var _b = 0, _c = this.nodes; _b < _c.length; _b++) {\n                var node = _c[_b];\n                for (var _d = 0, _e = this.nodes; _d < _e.length; _d++) {\n                    var repNode = _e[_d];\n                    if (\n                    // Node cannot repulse itself:\n                    node !== repNode &&\n                        // Only close nodes affect each other:\n                        // layout.getDistR(node, repNode) < 2 * k &&\n                        // Not dragged:\n                        !node.fixedPosition) {\n                        distanceXY = this.getDistXY(node, repNode);\n                        distanceR = this.vectorLength(distanceXY);\n                        if (distanceR !== 0) {\n                            force = this.repulsiveForce(distanceR, this.k);\n                            this.force('repulsive', node, force * repNode.mass, distanceXY, distanceR);\n                        }\n                    }\n                }\n            }\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.attractiveForces = function () {\n        var distanceXY,\n            distanceR,\n            force;\n        for (var _i = 0, _a = this.links; _i < _a.length; _i++) {\n            var link = _a[_i];\n            if (link.fromNode && link.toNode) {\n                distanceXY = this.getDistXY(link.fromNode, link.toNode);\n                distanceR = this.vectorLength(distanceXY);\n                if (distanceR !== 0) {\n                    force = this.attractiveForce(distanceR, this.k);\n                    this.force('attractive', link, force, distanceXY, distanceR);\n                }\n            }\n        }\n    };\n    ReingoldFruchtermanLayout.prototype.applyLimits = function () {\n        var nodes = this.nodes;\n        for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {\n            var node = nodes_2[_i];\n            if (node.fixedPosition) {\n                continue;\n            }\n            this.integration.integrate(this, node);\n            this.applyLimitBox(node, this.box);\n            // Reset displacement:\n            node.dispX = 0;\n            node.dispY = 0;\n        }\n    };\n    /**\n     * External box that nodes should fall. When hitting an edge, node\n     * should stop or bounce.\n     * @private\n     */\n    ReingoldFruchtermanLayout.prototype.applyLimitBox = function (node, box) {\n        var radius = node.radius;\n        /*\n        TO DO: Consider elastic collision instead of stopping.\n        o' means end position when hitting plotting area edge:\n\n        - \"inelastic\":\n        o\n            \\\n        ______\n        |  o'\n        |   \\\n        |    \\\n\n        - \"elastic\"/\"bounced\":\n        o\n            \\\n        ______\n        |  ^\n        | / \\\n        |o'  \\\n\n        Euler sample:\n        if (plotX < 0) {\n            plotX = 0;\n            dispX *= -1;\n        }\n\n        if (plotX > box.width) {\n            plotX = box.width;\n            dispX *= -1;\n        }\n\n        */\n        // Limit X-coordinates:\n        node.plotX = clamp(node.plotX, box.left + radius, box.width - radius);\n        // Limit Y-coordinates:\n        node.plotY = clamp(node.plotY, box.top + radius, box.height - radius);\n    };\n    /**\n     * From \"A comparison of simulated annealing cooling strategies\" by\n     * Nourani and Andresen work.\n     * @private\n     */\n    ReingoldFruchtermanLayout.prototype.coolDown = function (temperature, temperatureStep, currentStep) {\n        // Logarithmic:\n        /*\n        return Math.sqrt(this.nodes.length) -\n            Math.log(\n                currentStep * layout.diffTemperature\n            );\n        */\n        // Exponential:\n        /*\n        let alpha = 0.1;\n        layout.temperature = Math.sqrt(layout.nodes.length) *\n            Math.pow(alpha, layout.diffTemperature);\n        */\n        // Linear:\n        return temperature - temperatureStep * currentStep;\n    };\n    ReingoldFruchtermanLayout.prototype.isStable = function () {\n        return Math.abs(this.systemTemperature -\n            this.prevSystemTemperature) < 0.00001 || this.temperature <= 0;\n    };\n    ReingoldFruchtermanLayout.prototype.getSystemTemperature = function () {\n        var value = 0;\n        for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n            var node = _a[_i];\n            value += node.temperature;\n        }\n        return value;\n    };\n    ReingoldFruchtermanLayout.prototype.vectorLength = function (vector) {\n        return Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n    };\n    ReingoldFruchtermanLayout.prototype.getDistR = function (nodeA, nodeB) {\n        var distance = this.getDistXY(nodeA,\n            nodeB);\n        return this.vectorLength(distance);\n    };\n    ReingoldFruchtermanLayout.prototype.getDistXY = function (nodeA, nodeB) {\n        var xDist = nodeA.plotX - nodeB.plotX,\n            yDist = nodeA.plotY - nodeB.plotY;\n        return {\n            x: xDist,\n            y: yDist,\n            absX: Math.abs(xDist),\n            absY: Math.abs(yDist)\n        };\n    };\n    return ReingoldFruchtermanLayout;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Networkgraph_ReingoldFruchtermanLayout = (ReingoldFruchtermanLayout);\n\n;// ./code/es5/es-modules/Series/SimulationSeriesUtilities.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar SimulationSeriesUtilities_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, syncTimeout = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).syncTimeout;\n\nvar animObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).animObject;\n/**\n * Create a setTimeout for the first drawDataLabels()\n * based on the dataLabels.animation.defer value\n * for series which have enabled simulation.\n * @private\n */\nfunction initDataLabelsDefer() {\n    var _this = this;\n    var _a;\n    var dlOptions = this.options.dataLabels;\n    // Method drawDataLabels() fires for the first time after\n    // dataLabels.animation.defer time unless\n    // the dataLabels.animation = false or dataLabels.defer = false\n    // or if the simulation is disabled\n    if (!(dlOptions === null || dlOptions === void 0 ? void 0 : dlOptions.defer) ||\n        !((_a = this.options.layoutAlgorithm) === null || _a === void 0 ? void 0 : _a.enableSimulation)) {\n        this.deferDataLabels = false;\n    }\n    else {\n        syncTimeout(function () {\n            _this.deferDataLabels = false;\n        }, dlOptions ? animObject(dlOptions.animation).defer : 0);\n    }\n}\n/**\n * Initialize the SVG group for the DataLabels with correct opacities\n * and correct styles so that the animation for the series that have\n * simulation enabled works fine.\n * @private\n */\nfunction initDataLabels() {\n    var series = this,\n        dlOptions = series.options.dataLabels;\n    if (!series.dataLabelsGroup) {\n        var dataLabelsGroup = this.initDataLabelsGroup();\n        // Apply the dataLabels.style not only to the\n        // individual dataLabels but also to the entire group\n        if (!series.chart.styledMode && (dlOptions === null || dlOptions === void 0 ? void 0 : dlOptions.style)) {\n            dataLabelsGroup.css(dlOptions.style);\n        }\n        // Initialize the opacity of the group to 0 (start of animation)\n        dataLabelsGroup.attr({ opacity: 0 });\n        if (series.visible) { // #2597, #3023, #3024\n            dataLabelsGroup.show();\n        }\n        return dataLabelsGroup;\n    }\n    // Place it on first and subsequent (redraw) calls\n    series.dataLabelsGroup.attr(SimulationSeriesUtilities_merge({ opacity: 1 }, this.getPlotBox('data-labels')));\n    return series.dataLabelsGroup;\n}\nvar DataLabelsDeferUtils = {\n    initDataLabels: initDataLabels,\n    initDataLabelsDefer: initDataLabelsDefer\n};\n/* harmony default export */ var SimulationSeriesUtilities = (DataLabelsDeferUtils);\n\n;// ./code/es5/es-modules/Extensions/TextPath.js\n/* *\n *\n *  Highcharts module with textPath functionality.\n *\n *  (c) 2009-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar deg2rad = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).deg2rad;\nvar TextPath_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, TextPath_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey, TextPath_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, TextPath_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend;\n/**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * Text path support is not bundled into `highcharts.js`, and requires the\n * `modules/textpath.js` file. However, it is included in the script files of\n * those series types that use it by default\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n *        Path to follow. If undefined, it allows changing options for the\n *        existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n *        Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\nfunction setTextPath(path, textPathOptions) {\n    var _this = this;\n    // Defaults\n    textPathOptions = TextPath_merge(true, {\n        enabled: true,\n        attributes: {\n            dy: -5,\n            startOffset: '50%',\n            textAnchor: 'middle'\n        }\n    }, textPathOptions);\n    var url = this.renderer.url,\n        textWrapper = this.text || this,\n        textPath = textWrapper.textPath,\n        attributes = textPathOptions.attributes,\n        enabled = textPathOptions.enabled;\n    path = path || (textPath && textPath.path);\n    // Remove previously added event\n    if (textPath) {\n        textPath.undo();\n    }\n    if (path && enabled) {\n        var undo = TextPath_addEvent(textWrapper, 'afterModifyTree',\n            function (e) {\n                if (path && enabled) {\n                    // Set ID for the path\n                    var textPathId = path.attr('id');\n                if (!textPathId) {\n                    path.attr('id', textPathId = uniqueKey());\n                }\n                // Set attributes for the <text>\n                var textAttribs = {\n                        // `dx`/`dy` options must by set on <text> (parent), the\n                        // rest should be set on <textPath>\n                        x: 0,\n                        y: 0\n                    };\n                if (TextPath_defined(attributes.dx)) {\n                    textAttribs.dx = attributes.dx;\n                    delete attributes.dx;\n                }\n                if (TextPath_defined(attributes.dy)) {\n                    textAttribs.dy = attributes.dy;\n                    delete attributes.dy;\n                }\n                textWrapper.attr(textAttribs);\n                // Handle label properties\n                _this.attr({ transform: '' });\n                if (_this.box) {\n                    _this.box = _this.box.destroy();\n                }\n                // Wrap the nodes in a textPath\n                var children = e.nodes.slice(0);\n                e.nodes.length = 0;\n                e.nodes[0] = {\n                    tagName: 'textPath',\n                    attributes: TextPath_extend(attributes, {\n                        'text-anchor': attributes.textAnchor,\n                        href: \"\" + url + \"#\".concat(textPathId)\n                    }),\n                    children: children\n                };\n            }\n        });\n        // Set the reference\n        textWrapper.textPath = { path: path, undo: undo };\n    }\n    else {\n        textWrapper.attr({ dx: 0, dy: 0 });\n        delete textWrapper.textPath;\n    }\n    if (this.added) {\n        // Rebuild text after added\n        textWrapper.textCache = '';\n        this.renderer.buildText(textWrapper);\n    }\n    return this;\n}\n/**\n * Attach a polygon to a bounding box if the element contains a textPath.\n *\n * @function Highcharts.SVGElement#setPolygon\n *\n * @param {any} event\n *        An event containing a bounding box object\n *\n * @return {Highcharts.BBoxObject} Returns the bounding box object.\n */\nfunction setPolygon(event) {\n    var _a;\n    var bBox = event.bBox,\n        tp = (_a = this.element) === null || _a === void 0 ? void 0 : _a.querySelector('textPath');\n    if (tp) {\n        var polygon = [], _b = this.renderer.fontMetrics(this.element), b_1 = _b.b, h = _b.h, descender_1 = h - b_1, lineCleanerRegex = new RegExp('(<tspan>|' +\n                '<tspan(?!\\\\sclass=\"highcharts-br\")[^>]*>|' +\n                '<\\\\/tspan>)', 'g'), lines = tp\n                .innerHTML\n                .replace(lineCleanerRegex, '')\n                .split(/<tspan class=\"highcharts-br\"[^>]*>/), numOfLines = lines.length;\n        // Calculate top and bottom coordinates for\n        // either the start or the end of a single\n        // character, and append it to the polygon.\n        var appendTopAndBottom = function (charIndex,\n            positionOfChar) {\n                var x = positionOfChar.x,\n            y = positionOfChar.y,\n            rotation = (tp.getRotationOfChar(charIndex) - 90) * 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 TextPath_compose(SVGElementClass) {\n    TextPath_addEvent(SVGElementClass, 'afterGetBBox', setPolygon);\n    TextPath_addEvent(SVGElementClass, 'beforeAddingDataLabel', drawTextPath);\n    var svgElementProto = SVGElementClass.prototype;\n    if (!svgElementProto.setTextPath) {\n        svgElementProto.setTextPath = setTextPath;\n    }\n}\nvar TextPath = {\n    compose: TextPath_compose\n};\n/* harmony default export */ var Extensions_TextPath = (TextPath);\n\n;// ./code/es5/es-modules/Series/Networkgraph/NetworkgraphSeries.js\n/* *\n *\n *  Networkgraph series\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar NetworkgraphSeries_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\n\n\n\n\nvar Series = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, NetworkgraphSeries_a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, columnProto = NetworkgraphSeries_a.column.prototype, lineProto = NetworkgraphSeries_a.line.prototype;\n\nvar NetworkgraphSeries_initDataLabels = SimulationSeriesUtilities.initDataLabels, NetworkgraphSeries_initDataLabelsDefer = SimulationSeriesUtilities.initDataLabelsDefer;\n\nvar NetworkgraphSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, NetworkgraphSeries_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, NetworkgraphSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, NetworkgraphSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, NetworkgraphSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\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.networkgraph\n *\n * @extends Highcharts.Series\n */\nvar NetworkgraphSeries = /** @class */ (function (_super) {\n    NetworkgraphSeries_extends(NetworkgraphSeries, _super);\n    function NetworkgraphSeries() {\n        /* *\n         *\n         *  Static Properties\n         *\n         * */\n        var _this = _super !== null && _super.apply(this,\n            arguments) || this;\n        _this.deferDataLabels = true;\n        return _this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    NetworkgraphSeries.compose = function (ChartClass) {\n        Series_DragNodesComposition.compose(ChartClass);\n        Networkgraph_ReingoldFruchtermanLayout.compose(ChartClass);\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Defer the layout.\n     * Each series first registers all nodes and links, then layout\n     * calculates all nodes positions and calls `series.render()` in every\n     * simulation step.\n     *\n     * Note:\n     * Animation is done through `requestAnimationFrame` directly, without\n     * `Highcharts.animate()` use.\n     * @private\n     */\n    NetworkgraphSeries.prototype.deferLayout = function () {\n        var layoutOptions = this.options.layoutAlgorithm,\n            chartOptions = this.chart.options.chart;\n        var layout,\n            graphLayoutsStorage = this.chart.graphLayoutsStorage,\n            graphLayoutsLookup = this.chart.graphLayoutsLookup;\n        if (!this.visible) {\n            return;\n        }\n        if (!graphLayoutsStorage) {\n            this.chart.graphLayoutsStorage = graphLayoutsStorage = {};\n            this.chart.graphLayoutsLookup = graphLayoutsLookup = [];\n        }\n        layout = graphLayoutsStorage[layoutOptions.type];\n        if (!layout) {\n            layoutOptions.enableSimulation =\n                !NetworkgraphSeries_defined(chartOptions.forExport) ?\n                    layoutOptions.enableSimulation :\n                    !chartOptions.forExport;\n            graphLayoutsStorage[layoutOptions.type] = layout =\n                new Series_GraphLayoutComposition.layouts[layoutOptions.type]();\n            layout.init(layoutOptions);\n            graphLayoutsLookup.splice(layout.index, 0, layout);\n        }\n        this.layout = layout;\n        layout.setArea(0, 0, this.chart.plotWidth, this.chart.plotHeight);\n        layout.addElementsToCollection([this], layout.series);\n        layout.addElementsToCollection(this.nodes, layout.nodes);\n        layout.addElementsToCollection(this.points, layout.links);\n    };\n    /**\n     * @private\n     */\n    NetworkgraphSeries.prototype.destroy = function () {\n        if (this.layout) {\n            this.layout.removeElementFromCollection(this, this.layout.series);\n        }\n        Series_NodesComposition.destroy.call(this);\n    };\n    /**\n     * Networkgraph has two separate collections of nodes and lines, render\n     * dataLabels for both sets:\n     * @private\n     */\n    NetworkgraphSeries.prototype.drawDataLabels = function () {\n        // We defer drawing the dataLabels\n        // until dataLabels.animation.defer time passes\n        if (this.deferDataLabels) {\n            return;\n        }\n        var dlOptions = this.options.dataLabels;\n        var textPath;\n        if (dlOptions === null || dlOptions === void 0 ? void 0 : dlOptions.textPath) {\n            textPath = dlOptions.textPath;\n        }\n        // Render node labels:\n        Series.prototype.drawDataLabels.call(this, this.nodes);\n        // Render link labels:\n        if (dlOptions === null || dlOptions === void 0 ? void 0 : dlOptions.linkTextPath) {\n            // If linkTextPath is set, render link labels with linkTextPath\n            dlOptions.textPath = dlOptions.linkTextPath;\n        }\n        Series.prototype.drawDataLabels.call(this, this.data);\n        // Go back to textPath for nodes\n        if (dlOptions === null || dlOptions === void 0 ? void 0 : dlOptions.textPath) {\n            dlOptions.textPath = textPath;\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    NetworkgraphSeries.prototype.generatePoints = function () {\n        var node,\n            i;\n        Series_NodesComposition.generatePoints.apply(this, arguments);\n        // In networkgraph, it's fine to define standalone nodes, create\n        // them:\n        if (this.options.nodes) {\n            this.options.nodes.forEach(function (nodeOptions) {\n                if (!this.nodeLookup[nodeOptions.id]) {\n                    this.nodeLookup[nodeOptions.id] =\n                        this.createNode(nodeOptions.id);\n                }\n            }, this);\n        }\n        for (i = this.nodes.length - 1; i >= 0; i--) {\n            node = this.nodes[i];\n            node.degree = node.getDegree();\n            node.radius = NetworkgraphSeries_pick(node.marker && node.marker.radius, this.options.marker && this.options.marker.radius, 0);\n            node.key = node.name;\n            // If node exists, but it's not available in nodeLookup,\n            // then it's leftover from previous runs (e.g. setData)\n            if (!this.nodeLookup[node.id]) {\n                node.remove();\n            }\n        }\n        this.data.forEach(function (link) {\n            link.formatPrefix = 'link';\n        });\n        this.indexateNodes();\n    };\n    /**\n     * In networkgraph, series.points refers to links,\n     * but series.nodes refers to actual points.\n     * @private\n     */\n    NetworkgraphSeries.prototype.getPointsCollection = function () {\n        return this.nodes || [];\n    };\n    /**\n     * Set index for each node. Required for proper `node.update()`.\n     * Note that links are indexated out of the box in `generatePoints()`.\n     *\n     * @private\n     */\n    NetworkgraphSeries.prototype.indexateNodes = function () {\n        this.nodes.forEach(function (node, index) {\n            node.index = index;\n        });\n    };\n    /**\n     * Extend init with base event, which should stop simulation during\n     * update. After data is updated, `chart.render` resumes the simulation.\n     * @private\n     */\n    NetworkgraphSeries.prototype.init = function (chart, options) {\n        var _this = this;\n        _super.prototype.init.call(this, chart, options);\n        NetworkgraphSeries_initDataLabelsDefer.call(this);\n        NetworkgraphSeries_addEvent(this, 'updatedData', function () {\n            if (_this.layout) {\n                _this.layout.stop();\n            }\n        });\n        NetworkgraphSeries_addEvent(this, 'afterUpdate', function () {\n            _this.nodes.forEach(function (node) {\n                if (node && node.series) {\n                    node.resolveColor();\n                }\n            });\n        });\n        // If the dataLabels.animation.defer time is longer than\n        // the time it takes for the layout to become stable then\n        // drawDataLabels would never be called (that's why we force it here)\n        NetworkgraphSeries_addEvent(this, 'afterSimulation', function () {\n            this.deferDataLabels = false;\n            this.drawDataLabels();\n        });\n        return this;\n    };\n    /**\n     * Extend the default marker attribs by using a non-rounded X position,\n     * otherwise the nodes will jump from pixel to pixel which looks a bit\n     * jaggy when approaching equilibrium.\n     * @private\n     */\n    NetworkgraphSeries.prototype.markerAttribs = function (point, state) {\n        var attribs = Series.prototype.markerAttribs.call(this,\n            point,\n            state);\n        // Series.render() is called before initial positions are set:\n        if (!NetworkgraphSeries_defined(point.plotY)) {\n            attribs.y = 0;\n        }\n        attribs.x = (point.plotX || 0) - (attribs.width || 0) / 2;\n        return attribs;\n    };\n    /**\n     * Return the presentational attributes.\n     * @private\n     */\n    NetworkgraphSeries.prototype.pointAttribs = function (point, state) {\n        // By default, only `selected` state is passed on\n        var pointState = state || point && point.state || 'normal',\n            stateOptions = this.options.states[pointState];\n        var attribs = Series.prototype.pointAttribs.call(this,\n            point,\n            pointState);\n        if (point && !point.isNode) {\n            attribs = point.getLinkAttributes();\n            // For link, get prefixed names:\n            if (stateOptions) {\n                attribs = {\n                    // TO DO: API?\n                    stroke: stateOptions.linkColor || attribs.stroke,\n                    dashstyle: (stateOptions.linkDashStyle || attribs.dashstyle),\n                    opacity: NetworkgraphSeries_pick(stateOptions.linkOpacity, attribs.opacity),\n                    'stroke-width': stateOptions.linkColor ||\n                        attribs['stroke-width']\n                };\n            }\n        }\n        return attribs;\n    };\n    /**\n     * Extend the render function to also render this.nodes together with\n     * the points.\n     * @private\n     */\n    NetworkgraphSeries.prototype.render = function () {\n        var series = this,\n            points = series.points,\n            hoverPoint = series.chart.hoverPoint,\n            dataLabels = [];\n        // Render markers:\n        series.points = series.nodes;\n        lineProto.render.call(this);\n        series.points = points;\n        points.forEach(function (point) {\n            if (point.fromNode && point.toNode) {\n                point.renderLink();\n                point.redrawLink();\n            }\n        });\n        if (hoverPoint && hoverPoint.series === series) {\n            series.redrawHalo(hoverPoint);\n        }\n        if (series.chart.hasRendered &&\n            !series.options.dataLabels.allowOverlap) {\n            series.nodes.concat(series.points).forEach(function (node) {\n                if (node.dataLabel) {\n                    dataLabels.push(node.dataLabel);\n                }\n            });\n            series.chart.hideOverlappingLabels(dataLabels);\n        }\n    };\n    /**\n     * When state should be passed down to all points, concat nodes and\n     * links and apply this state to all of them.\n     * @private\n     */\n    NetworkgraphSeries.prototype.setState = function (state, inherit) {\n        if (inherit) {\n            this.points = this.nodes.concat(this.data);\n            Series.prototype.setState.apply(this, arguments);\n            this.points = this.data;\n        }\n        else {\n            Series.prototype.setState.apply(this, arguments);\n        }\n        // If simulation is done, re-render points with new states:\n        if (!this.layout.simulation && !state) {\n            this.render();\n        }\n    };\n    /**\n     * Run pre-translation and register nodes&links to the deffered layout.\n     * @private\n     */\n    NetworkgraphSeries.prototype.translate = function () {\n        this.generatePoints();\n        this.deferLayout();\n        this.nodes.forEach(function (node) {\n            // Draw the links from this node\n            node.isInside = true;\n            node.linksFrom.forEach(function (point) {\n                point.shapeType = 'path';\n                // Pass test in drawPoints\n                point.y = 1;\n            });\n        });\n    };\n    NetworkgraphSeries.defaultOptions = NetworkgraphSeries_merge(Series.defaultOptions, Networkgraph_NetworkgraphSeriesDefaults);\n    return NetworkgraphSeries;\n}(Series));\nNetworkgraphSeries_extend(NetworkgraphSeries.prototype, {\n    pointClass: Networkgraph_NetworkgraphPoint,\n    animate: void 0, // Animation is run in `series.simulation`\n    directTouch: true,\n    drawGraph: void 0,\n    forces: ['barycenter', 'repulsive', 'attractive'],\n    hasDraggableNodes: true,\n    isCartesian: false,\n    noSharedTooltip: true,\n    pointArrayMap: ['from', 'to'],\n    requireSorting: false,\n    trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n    initDataLabels: NetworkgraphSeries_initDataLabels,\n    buildKDTree: noop,\n    createNode: Series_NodesComposition.createNode,\n    drawTracker: columnProto.drawTracker,\n    onMouseDown: Series_DragNodesComposition.onMouseDown,\n    onMouseMove: Series_DragNodesComposition.onMouseMove,\n    onMouseUp: Series_DragNodesComposition.onMouseUp,\n    redrawHalo: Series_DragNodesComposition.redrawHalo\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('networkgraph', NetworkgraphSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Networkgraph_NetworkgraphSeries = (NetworkgraphSeries);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * Callback that fires after the end of Networkgraph series simulation\n * when the layout is stable.\n *\n * @callback Highcharts.NetworkgraphAfterSimulationCallbackFunction\n *\n * @param {Highcharts.Series} this\n *        The series where the event occurred.\n *\n * @param {global.Event} event\n *        The event that occurred.\n */\n''; // Detach doclets above\n\n;// ./code/es5/es-modules/masters/modules/networkgraph.src.js\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nNetworkgraph_NetworkgraphSeries.compose(G.Chart);\n/* harmony default export */ var networkgraph_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__28__","__WEBPACK_EXTERNAL_MODULE__512__","extendStatics","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__","networkgraph_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","composed","addEvent","pushUnique","onChartLoad","mousedownUnbinder","mousemoveUnbinder","mouseupUnbinder","chart","container","event","point","hoverPoint","series","hasDraggableNodes","options","draggable","onMouseDown","e","onMouseMove","ownerDocument","onMouseUp","Series_DragNodesComposition","compose","ChartClass","_a","normalizedEvent","pointer","normalize","fixedPosition","chartX","chartY","plotX","plotY","inDragMode","diffX","diffY","graphLayoutsLookup","newPlotX","newPlotY","Math","abs","isInsidePlot","hasDragged","redrawHalo","forEach","layout","restartSimulation","enableSimulation","start","redraw","fixedDraggable","halo","attr","haloPath","states","hover","size","setAnimation","GraphLayoutComposition_composed","GraphLayoutComposition_addEvent","GraphLayoutComposition_pushUnique","onChartAfterPrint","updateSimulation","onChartBeforePrint","onChartPredraw","stop","onChartRender","systemsStable","afterRender","layoutStep","maxIterations","isFinite","temperature","isStable","beforeStep","step","render","Series_GraphLayoutComposition","integrations","layouts","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","seriesProto","pointProto","pointClass","defined","extend","find","merge","pick","destroy","data","concat","points","nodes","apply","arguments","setData","node","length","setNodeState","state","args","others","isNode","linksTo","linksFrom","fromNode","toNode","linkOrNode","setState","graphic","updateNode","animation","runEvent","_this","dataLength","linkConfig","index","update","nodeIndex","reduce","prevIndex","id","nodeConfig","push","PointClass","SeriesClass","createNode","findById","newNode_1","className","y","getSum","sumTo","sumFrom","link","weight","max","offset","coll","i","hasShape","outgoing","formatPrefix","name","mass","marker","radius","generatePoints","nodeLookup","colorCounter","level","from","styledMode","colorIndex","color","to","Series_NodesComposition","__extends","b","setPrototypeOf","__proto__","Array","p","__","constructor","create","NetworkgraphPoint_a","NetworkgraphPoint_seriesProto","Point","NetworkgraphPoint_addEvent","css","NetworkgraphPoint_defined","NetworkgraphPoint_extend","NetworkgraphPoint_pick","NetworkgraphPoint","_super","x","cursor","destroyElements","removeElementFromCollection","getDegree","deg","getLinkAttributes","linkOptions","pointOptions","width","stroke","dashstyle","dashStyle","opacity","getLinkPath","left","right","getMass","m1","m2","sum","isValid","redrawLink","attribs","path","shapeArgs","pointAttribs","dataLabels","label","animate","end","remove","nodesOptions","linkFromTo","indexOf","splice","removePoint","slice","isDirty","isDirtyData","renderLink","renderer","addClass","getClassName","add","group","Networkgraph_NetworkgraphSeriesDefaults","stickyTracking","inactiveOtherPoints","enabled","inactive","duration","linkOpacity","formatter","String","linkFormatter","linkTextPath","textPath","style","transition","defer","layoutAlgorithm","initialPositions","initialPositionRadius","theta","maxSpeed","approximation","type","integration","gravitationalConstant","friction","showInLegend","Networkgraph_EulerIntegration","attractive","force","distanceXY","distanceR","massFactor","translatedX","translatedY","dispX","degree","dispY","attractiveForceFunction","k","barycenter","xFactor","yFactor","phi","getK","pow","box","height","integrate","vectorLength","min","repulsive","repulsiveForceFunction","QuadTreeNode","body","isEmpty","isInternal","boxSize","divideBox","halfWidth","halfHeight","top","getBoxPosition","insert","depth","newQuadTreeNode","NaN","updateMassAndCenter","_i","pointMass","QuadTree","maxDepth","isRoot","calculateMassAndCenter","visitNodeRecursive","insertNodes","points_1","beforeCallback","afterCallback","goFurther","qtNode","Networkgraph_VerletIntegration","diffTemperature","prevX","prevY","frictionX","frictionY","signX","signY","factor","win","clamp","ReingoldFruchtermanLayout_defined","isFunction","fireEvent","ReingoldFruchtermanLayout_pick","ReingoldFruchtermanLayout","currentStep","initialRendering","links","simulation","euler","verlet","init","setInitialRendering","attractiveForce","repulsiveForce","enable","forces","initPositions","s","finishedAnimating","setK","resetSimulation","allSeries","createQuadTree","quadTree","anyLayout","forceName","applyLimits","coolDown","startTemperature","prevSystemTemperature","systemTemperature","getSystemTemperature","_b","allSeries_1","cancelAnimationFrame","requestAnimationFrame","setArea","w","h","linkLength","addElementsToCollection","elements","collection","elements_1","element","clear","forcedStop","setMaxIterations","setTemperature","setDiffTemperature","sqrt","setCircularPositions","setRandomPositions","angle","PI","rootNodes","filter","visitedNodes","addToNodes","sortedNodes","rootNodes_1","rootNode","nodes_1","node_1","iEnd","cos","sin","nodesLength","unrandom","rand","floor","barycenterForces","getBarycenter","systemMass","cx","cy","barnesHutApproximation","quadNode","goDeeper","getDistXY","repulsiveForces","_loop_1","this_1","_c","_d","_e","repNode","attractiveForces","nodes_2","applyLimitBox","temperatureStep","value","vector","getDistR","nodeA","nodeB","distance","xDist","yDist","absX","absY","SimulationSeriesUtilities_merge","syncTimeout","animObject","SimulationSeriesUtilities","initDataLabels","dlOptions","dataLabelsGroup","initDataLabelsGroup","visible","show","getPlotBox","initDataLabelsDefer","deferDataLabels","deg2rad","TextPath_addEvent","TextPath_merge","uniqueKey","TextPath_defined","TextPath_extend","setTextPath","textPathOptions","attributes","dy","startOffset","textAnchor","url","textWrapper","text","undo","textPathId","textAttribs","dx","transform","children","tagName","href","added","textCache","buildText","setPolygon","bBox","tp","querySelector","polygon","fontMetrics","b_1","descender_1","lineCleanerRegex","RegExp","lines","innerHTML","replace","split","numOfLines","appendTopAndBottom","charIndex","positionOfChar","rotation","getRotationOfChar","cosRot","sinRot","lineIndex","lineLen","line","lineCharIndex","srcCharIndex","getStartPositionOfChar","lower","upper","unshift","charPos","getEndPositionOfChar","drawTextPath","labelOptions","useHTML","getDataLabelPath","dataLabelPath","NetworkgraphSeries_extends","TypeError","noop","Series","NetworkgraphSeries_a","seriesTypes","columnProto","column","lineProto","NetworkgraphSeries_initDataLabels","NetworkgraphSeries_initDataLabelsDefer","NetworkgraphSeries_addEvent","NetworkgraphSeries_defined","NetworkgraphSeries_extend","NetworkgraphSeries_merge","NetworkgraphSeries_pick","Extensions_TextPath","SVGElementClass","svgElementProto","NetworkgraphSeries","Networkgraph_ReingoldFruchtermanLayout","deferLayout","layoutOptions","chartOptions","graphLayoutsStorage","forExport","plotWidth","plotHeight","drawDataLabels","nodeOptions","indexateNodes","getPointsCollection","resolveColor","markerAttribs","pointState","stateOptions","linkColor","linkDashStyle","hasRendered","allowOverlap","dataLabel","hideOverlappingLabels","inherit","translate","isInside","shapeType","defaultOptions","directTouch","drawGraph","isCartesian","noSharedTooltip","pointArrayMap","requireSorting","trackerGroups","buildKDTree","drawTracker","registerSeriesType","G","Networkgraph_NetworkgraphSeries","Chart"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox