Hacked By AnonymousFox
{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts Gantt JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/pathfinder\n * @requires highcharts\n *\n * Pathfinder\n *\n * (c) 2016-2024 Øystein Moseng\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"), require(\"highcharts\")[\"Chart\"], require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"RendererRegistry\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"StackItem\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/gantt\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Chart\"], [\"highcharts/highcharts\",\"Axis\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"SeriesRegistry\"], [\"highcharts/highcharts\",\"RendererRegistry\"], [\"highcharts/highcharts\",\"SVGRenderer\"], [\"highcharts/highcharts\",\"SVGElement\"], [\"highcharts/highcharts\",\"Point\"], [\"highcharts/highcharts\",\"StackItem\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/gantt\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Chart\"], require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"RendererRegistry\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"StackItem\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Chart\"], root[\"Highcharts\"][\"Axis\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"RendererRegistry\"], root[\"Highcharts\"][\"SVGRenderer\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"Point\"], root[\"Highcharts\"][\"StackItem\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__960__, __WEBPACK_EXTERNAL_MODULE__532__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__608__, __WEBPACK_EXTERNAL_MODULE__540__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__260__, __WEBPACK_EXTERNAL_MODULE__184__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 532:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__532__;\n\n/***/ }),\n\n/***/ 960:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__960__;\n\n/***/ }),\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 608:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__608__;\n\n/***/ }),\n\n/***/ 28:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 540:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__540__;\n\n/***/ }),\n\n/***/ 512:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 184:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__184__;\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 */ gantt_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es5/es-modules/Extensions/ArrowSymbols.js\n/* *\n *\n * (c) 2017 Highsoft AS\n * Authors: Lars A. V. Cabrera\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 * Creates an arrow symbol. Like a triangle, except not filled.\n * ```\n * o\n * o\n * o\n * o\n * o\n * o\n * o\n * ```\n *\n * @private\n * @function\n *\n * @param {number} x\n * x position of the arrow\n *\n * @param {number} y\n * y position of the arrow\n *\n * @param {number} w\n * width of the arrow\n *\n * @param {number} h\n * height of the arrow\n *\n * @return {Highcharts.SVGPathArray}\n * Path array\n */\nfunction arrow(x, y, w, h) {\n return [\n ['M', x, y + h / 2],\n ['L', x + w, y],\n ['L', x, y + h / 2],\n ['L', x + w, y + h]\n ];\n}\n/**\n * Creates a half-width arrow symbol. Like a triangle, except not filled.\n * ```\n * o\n * o\n * o\n * o\n * o\n * ```\n *\n * @private\n * @function\n *\n * @param {number} x\n * x position of the arrow\n *\n * @param {number} y\n * y position of the arrow\n *\n * @param {number} w\n * width of the arrow\n *\n * @param {number} h\n * height of the arrow\n *\n * @return {Highcharts.SVGPathArray}\n * Path array\n */\nfunction arrowHalf(x, y, w, h) {\n return arrow(x, y, w / 2, h);\n}\n/**\n * @private\n */\nfunction compose(SVGRendererClass) {\n var symbols = SVGRendererClass.prototype.symbols;\n symbols.arrow = arrow;\n symbols['arrow-filled'] = triangleLeft;\n symbols['arrow-filled-half'] = triangleLeftHalf;\n symbols['arrow-half'] = arrowHalf;\n symbols['triangle-left'] = triangleLeft;\n symbols['triangle-left-half'] = triangleLeftHalf;\n}\n/**\n * Creates a left-oriented triangle.\n * ```\n * o\n * ooooooo\n * ooooooooooooo\n * ooooooo\n * o\n * ```\n *\n * @private\n * @function\n *\n * @param {number} x\n * x position of the triangle\n *\n * @param {number} y\n * y position of the triangle\n *\n * @param {number} w\n * width of the triangle\n *\n * @param {number} h\n * height of the triangle\n *\n * @return {Highcharts.SVGPathArray}\n * Path array\n */\nfunction triangleLeft(x, y, w, h) {\n return [\n ['M', x + w, y],\n ['L', x, y + h / 2],\n ['L', x + w, y + h],\n ['Z']\n ];\n}\n/**\n * Creates a half-width, left-oriented triangle.\n * ```\n * o\n * oooo\n * ooooooo\n * oooo\n * o\n * ```\n *\n * @private\n * @function\n *\n * @param {number} x\n * x position of the triangle\n *\n * @param {number} y\n * y position of the triangle\n *\n * @param {number} w\n * width of the triangle\n *\n * @param {number} h\n * height of the triangle\n *\n * @return {Highcharts.SVGPathArray}\n * Path array\n */\nfunction triangleLeftHalf(x, y, w, h) {\n return triangleLeft(x, y, w / 2, h);\n}\n/* *\n *\n * Default Export\n *\n * */\nvar ArrowSymbols = {\n compose: compose\n};\n/* harmony default export */ var Extensions_ArrowSymbols = (ArrowSymbols);\n\n;// ./code/es5/es-modules/Gantt/Connection.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Øystein Moseng, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach;\n/* *\n *\n * Constants\n *\n * */\nvar deg2rad = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).deg2rad, max = Math.max, min = Math.min;\n/* *\n *\n * Class\n *\n * */\n/**\n * The Connection class. Used internally to represent a connection between two\n * points.\n *\n * @private\n * @class\n * @name Highcharts.Connection\n *\n * @param {Highcharts.Point} from\n * Connection runs from this Point.\n *\n * @param {Highcharts.Point} to\n * Connection runs to this Point.\n *\n * @param {Highcharts.ConnectorsOptions} [options]\n * Connection options.\n */\nvar Connection = /** @class */ (function () {\n function Connection(from, to, options) {\n this.init(from, to, options);\n }\n /**\n * Initialize the Connection object. Used as constructor only.\n *\n * @function Highcharts.Connection#init\n *\n * @param {Highcharts.Point} from\n * Connection runs from this Point.\n *\n * @param {Highcharts.Point} to\n * Connection runs to this Point.\n *\n * @param {Highcharts.ConnectorsOptions} [options]\n * Connection options.\n */\n Connection.prototype.init = function (from, to, options) {\n this.fromPoint = from;\n this.toPoint = to;\n this.options = options;\n this.chart = from.series.chart;\n this.pathfinder = this.chart.pathfinder;\n };\n /**\n * Add (or update) this connection's path on chart. Stores reference to the\n * created element on this.graphics.path.\n *\n * @function Highcharts.Connection#renderPath\n *\n * @param {Highcharts.SVGPathArray} path\n * Path to render, in array format. E.g. ['M', 0, 0, 'L', 10, 10]\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * SVG attributes for the path.\n *\n * @param {Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Animation options for the rendering.\n */\n Connection.prototype.renderPath = function (path, attribs) {\n var connection = this,\n chart = this.chart,\n styledMode = chart.styledMode,\n pathfinder = this.pathfinder,\n anim = {};\n var pathGraphic = connection.graphics && connection.graphics.path;\n // Add the SVG element of the pathfinder group if it doesn't exist\n if (!pathfinder.group) {\n pathfinder.group = chart.renderer.g()\n .addClass('highcharts-pathfinder-group')\n .attr({ zIndex: -1 })\n .add(chart.seriesGroup);\n }\n // Shift the group to compensate for plot area.\n // Note: Do this always (even when redrawing a path) to avoid issues\n // when updating chart in a way that changes plot metrics.\n pathfinder.group.translate(chart.plotLeft, chart.plotTop);\n // Create path if does not exist\n if (!(pathGraphic && pathGraphic.renderer)) {\n pathGraphic = chart.renderer.path()\n .add(pathfinder.group);\n if (!styledMode) {\n pathGraphic.attr({\n opacity: 0\n });\n }\n }\n // Set path attribs and animate to the new path\n pathGraphic.attr(attribs);\n anim.d = path;\n if (!styledMode) {\n anim.opacity = 1;\n }\n pathGraphic.animate(anim);\n // Store reference on connection\n this.graphics = this.graphics || {};\n this.graphics.path = pathGraphic;\n };\n /**\n * Calculate and add marker graphics for connection to the chart. The\n * created/updated elements are stored on this.graphics.start and\n * this.graphics.end.\n *\n * @function Highcharts.Connection#addMarker\n *\n * @param {string} type\n * Marker type, either 'start' or 'end'.\n *\n * @param {Highcharts.ConnectorsMarkerOptions} options\n * All options for this marker. Not calculated or merged with other\n * options.\n *\n * @param {Highcharts.SVGPathArray} path\n * Connection path in array format. This is used to calculate the\n * rotation angle of the markers.\n */\n Connection.prototype.addMarker = function (type, options, path) {\n var connection = this,\n chart = connection.fromPoint.series.chart,\n pathfinder = chart.pathfinder,\n renderer = chart.renderer,\n point = (type === 'start' ?\n connection.fromPoint :\n connection.toPoint),\n anchor = point.getPathfinderAnchorPoint(options);\n var markerVector,\n radians,\n rotation,\n box,\n width,\n height,\n pathVector,\n segment;\n if (!options.enabled) {\n return;\n }\n // Last vector before start/end of path, used to get angle\n if (type === 'start') {\n segment = path[1];\n }\n else { // 'end'\n segment = path[path.length - 2];\n }\n if (segment && segment[0] === 'M' || segment[0] === 'L') {\n pathVector = {\n x: segment[1],\n y: segment[2]\n };\n // Get angle between pathVector and anchor point and use it to\n // create marker position.\n radians = point.getRadiansToVector(pathVector, anchor);\n markerVector = point.getMarkerVector(radians, options.radius, anchor);\n // Rotation of marker is calculated from angle between pathVector\n // and markerVector.\n // (Note:\n // Used to recalculate radians between markerVector and pathVector,\n // but this should be the same as between pathVector and anchor.)\n rotation = -radians / deg2rad;\n if (options.width && options.height) {\n width = options.width;\n height = options.height;\n }\n else {\n width = height = options.radius * 2;\n }\n // Add graphics object if it does not exist\n connection.graphics = connection.graphics || {};\n box = {\n x: markerVector.x - (width / 2),\n y: markerVector.y - (height / 2),\n width: width,\n height: height,\n rotation: rotation,\n rotationOriginX: markerVector.x,\n rotationOriginY: markerVector.y\n };\n if (!connection.graphics[type]) {\n // Create new marker element\n connection.graphics[type] = renderer\n .symbol(options.symbol)\n .addClass('highcharts-point-connecting-path-' + type + '-marker' +\n ' highcharts-color-' + this.fromPoint.colorIndex)\n .attr(box)\n .add(pathfinder.group);\n if (!renderer.styledMode) {\n connection.graphics[type].attr({\n fill: options.color || connection.fromPoint.color,\n stroke: options.lineColor,\n 'stroke-width': options.lineWidth,\n opacity: 0\n })\n .animate({\n opacity: 1\n }, point.series.options.animation);\n }\n }\n else {\n connection.graphics[type].animate(box);\n }\n }\n };\n /**\n * Calculate and return connection path.\n * Note: Recalculates chart obstacles on demand if they aren't calculated.\n *\n * @function Highcharts.Connection#getPath\n *\n * @param {Highcharts.ConnectorsOptions} options\n * Connector options. Not calculated or merged with other options.\n *\n * @return {object|undefined}\n * Calculated SVG path data in array format.\n */\n Connection.prototype.getPath = function (options) {\n var pathfinder = this.pathfinder,\n chart = this.chart,\n algorithm = pathfinder.algorithms[options.type];\n var chartObstacles = pathfinder.chartObstacles;\n if (typeof algorithm !== 'function') {\n error('\"' + options.type + '\" is not a Pathfinder algorithm.');\n return {\n path: [],\n obstacles: []\n };\n }\n // This function calculates obstacles on demand if they don't exist\n if (algorithm.requiresObstacles && !chartObstacles) {\n chartObstacles =\n pathfinder.chartObstacles =\n pathfinder.getChartObstacles(options);\n // If the algorithmMargin was computed, store the result in default\n // options.\n chart.options.connectors.algorithmMargin =\n options.algorithmMargin;\n // Cache some metrics too\n pathfinder.chartObstacleMetrics =\n pathfinder.getObstacleMetrics(chartObstacles);\n }\n // Get the SVG path\n return algorithm(\n // From\n this.fromPoint.getPathfinderAnchorPoint(options.startMarker), \n // To\n this.toPoint.getPathfinderAnchorPoint(options.endMarker), merge({\n chartObstacles: chartObstacles,\n lineObstacles: pathfinder.lineObstacles || [],\n obstacleMetrics: pathfinder.chartObstacleMetrics,\n hardBounds: {\n xMin: 0,\n xMax: chart.plotWidth,\n yMin: 0,\n yMax: chart.plotHeight\n },\n obstacleOptions: {\n margin: options.algorithmMargin\n },\n startDirectionX: pathfinder.getAlgorithmStartDirection(options.startMarker)\n }, options));\n };\n /**\n * (re)Calculate and (re)draw the connection.\n *\n * @function Highcharts.Connection#render\n */\n Connection.prototype.render = function () {\n var connection = this,\n fromPoint = connection.fromPoint,\n series = fromPoint.series,\n chart = series.chart,\n pathfinder = chart.pathfinder,\n attribs = {};\n var options = merge(chart.options.connectors,\n series.options.connectors,\n fromPoint.options.connectors,\n connection.options);\n // Set path attribs\n if (!chart.styledMode) {\n attribs.stroke = options.lineColor || fromPoint.color;\n attribs['stroke-width'] = options.lineWidth;\n if (options.dashStyle) {\n attribs.dashstyle = options.dashStyle;\n }\n }\n attribs['class'] = // eslint-disable-line dot-notation\n 'highcharts-point-connecting-path ' +\n 'highcharts-color-' + fromPoint.colorIndex;\n options = merge(attribs, options);\n // Set common marker options\n if (!defined(options.marker.radius)) {\n options.marker.radius = min(max(Math.ceil((options.algorithmMargin || 8) / 2) - 1, 1), 5);\n }\n // Get the path\n var pathResult = connection.getPath(options),\n path = pathResult.path;\n // Always update obstacle storage with obstacles from this path.\n // We don't know if future calls will need this for their algorithm.\n if (pathResult.obstacles) {\n pathfinder.lineObstacles =\n pathfinder.lineObstacles || [];\n pathfinder.lineObstacles =\n pathfinder.lineObstacles.concat(pathResult.obstacles);\n }\n // Add the calculated path to the pathfinder group\n connection.renderPath(path, attribs);\n // Render the markers\n connection.addMarker('start', merge(options.marker, options.startMarker), path);\n connection.addMarker('end', merge(options.marker, options.endMarker), path);\n };\n /**\n * Destroy connection by destroying the added graphics elements.\n *\n * @function Highcharts.Connection#destroy\n */\n Connection.prototype.destroy = function () {\n if (this.graphics) {\n objectEach(this.graphics, function (val) {\n val.destroy();\n });\n delete this.graphics;\n }\n };\n return Connection;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Gantt_Connection = (Connection);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * The default pathfinder algorithm to use for a chart. It is possible to define\n * your own algorithms by adding them to the\n * `Highcharts.Pathfinder.prototype.algorithms`\n * object before the chart has been created.\n *\n * The default algorithms are as follows:\n *\n * `straight`: Draws a straight line between the connecting\n * points. Does not avoid other points when drawing.\n *\n * `simpleConnect`: Finds a path between the points using right angles\n * only. Takes only starting/ending points into\n * account, and will not avoid other points.\n *\n * `fastAvoid`: Finds a path between the points using right angles\n * only. Will attempt to avoid other points, but its\n * focus is performance over accuracy. Works well with\n * less dense datasets.\n *\n * @typedef {\"fastAvoid\"|\"simpleConnect\"|\"straight\"|string} Highcharts.PathfinderTypeValue\n */\n''; // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Extensions/CurrentDateIndication.js\n/* *\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Author: Lars A. V. Cabrera\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, CurrentDateIndication_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n * Constants\n *\n * */\n/**\n * Show an indicator on the axis for the current date and time. Can be a\n * boolean or a configuration object similar to\n * [xAxis.plotLines](#xAxis.plotLines).\n *\n * @sample gantt/current-date-indicator/demo\n * Current date indicator enabled\n * @sample gantt/current-date-indicator/object-config\n * Current date indicator with custom options\n *\n * @declare Highcharts.CurrentDateIndicatorOptions\n * @type {boolean|CurrentDateIndicatorOptions}\n * @default true\n * @extends xAxis.plotLines\n * @excluding value\n * @product gantt\n * @apioption xAxis.currentDateIndicator\n */\nvar defaultOptions = {\n color: \"#ccd3ff\" /* Palette.highlightColor20 */,\n width: 2,\n /**\n * @declare Highcharts.AxisCurrentDateIndicatorLabelOptions\n */\n label: {\n /**\n * Format of the label. This options is passed as the first argument to\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat) function.\n *\n * @type {string|Intl.DateTimeFormatOptions}\n * @product gantt\n * @apioption xAxis.currentDateIndicator.label.format\n */\n format: '%[abdYHM]',\n formatter: function (value, format) {\n return this.axis.chart.time.dateFormat(format || '', value, true);\n },\n rotation: 0,\n /**\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n fontSize: '0.7em'\n }\n }\n};\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction CurrentDateIndication_compose(AxisClass, PlotLineOrBandClass) {\n if (pushUnique(composed, 'CurrentDateIndication')) {\n addEvent(AxisClass, 'afterSetOptions', onAxisAfterSetOptions);\n addEvent(PlotLineOrBandClass, 'render', onPlotLineOrBandRender);\n wrap(PlotLineOrBandClass.prototype, 'getLabelText', wrapPlotLineOrBandGetLabelText);\n }\n}\n/**\n * @private\n */\nfunction onAxisAfterSetOptions() {\n var options = this.options,\n cdiOptions = options.currentDateIndicator;\n if (cdiOptions) {\n var plotLineOptions = typeof cdiOptions === 'object' ?\n CurrentDateIndication_merge(defaultOptions,\n cdiOptions) :\n CurrentDateIndication_merge(defaultOptions);\n plotLineOptions.value = Date.now();\n plotLineOptions.className = 'highcharts-current-date-indicator';\n if (!options.plotLines) {\n options.plotLines = [];\n }\n options.plotLines.push(plotLineOptions);\n }\n}\n/**\n * @private\n */\nfunction onPlotLineOrBandRender() {\n // If the label already exists, update its text\n if (this.label) {\n this.label.attr({\n text: this.getLabelText(this.options.label)\n });\n }\n}\n/**\n * @private\n */\nfunction wrapPlotLineOrBandGetLabelText(defaultMethod, defaultLabelOptions) {\n var options = this.options;\n if (options &&\n options.className &&\n options.className.indexOf('highcharts-current-date-indicator') !== -1 &&\n options.label &&\n typeof options.label.formatter === 'function') {\n options.value = Date.now();\n return options.label.formatter\n .call(this, options.value, options.label.format);\n }\n return defaultMethod.call(this, defaultLabelOptions);\n}\n/* *\n *\n * Default Export\n *\n * */\nvar CurrentDateIndication = {\n compose: CurrentDateIndication_compose\n};\n/* harmony default export */ var Extensions_CurrentDateIndication = (CurrentDateIndication);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Chart\"],\"commonjs\":[\"highcharts\",\"Chart\"],\"commonjs2\":[\"highcharts\",\"Chart\"],\"root\":[\"Highcharts\",\"Chart\"]}\nvar highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_ = __webpack_require__(960);\nvar highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default = /*#__PURE__*/__webpack_require__.n(highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_);\n;// ./code/es5/es-modules/Core/Chart/GanttChart.js\n/* *\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Author: Lars A. V. Cabrera\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 GanttChart_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, GanttChart_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n * Class\n *\n * */\n/**\n * Gantt-optimized chart. Use {@link Highcharts.Chart|Chart} for common charts.\n *\n * @requires modules/gantt\n *\n * @class\n * @name Highcharts.GanttChart\n * @extends Highcharts.Chart\n */\nvar GanttChart = /** @class */ (function (_super) {\n __extends(GanttChart, _super);\n function GanttChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initializes the chart. The constructor's arguments are passed on\n * directly.\n *\n * @function Highcharts.GanttChart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.GanttChart#event:init\n * @emits Highcharts.GanttChart#event:afterInit\n */\n GanttChart.prototype.init = function (userOptions, callback) {\n var xAxisOptions = userOptions.xAxis,\n yAxisOptions = userOptions.yAxis;\n var defaultLinkedTo;\n // Avoid doing these twice\n userOptions.xAxis = userOptions.yAxis = void 0;\n var options = GanttChart_merge(true, {\n chart: {\n type: 'gantt'\n },\n title: {\n text: ''\n },\n legend: {\n enabled: false\n },\n navigator: {\n series: { type: 'gantt' },\n // Bars were clipped, #14060.\n yAxis: {\n type: 'category'\n }\n }\n },\n userOptions, // User's options\n // forced options\n {\n isGantt: true\n });\n userOptions.xAxis = xAxisOptions;\n userOptions.yAxis = yAxisOptions;\n // Apply X axis options to both single and multi x axes If user hasn't\n // defined axes as array, make it into an array and add a second axis by\n // default.\n options.xAxis = (!isArray(userOptions.xAxis) ?\n [userOptions.xAxis || {}, {}] :\n userOptions.xAxis).map(function (xAxisOptions, i) {\n var _a,\n _b,\n _c;\n if (i === 1) { // Second xAxis\n defaultLinkedTo = 0;\n }\n return GanttChart_merge(\n // Defaults\n {\n grid: {\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n enabled: true\n },\n opposite: (_c = (_b = (_a = GanttChart_defaultOptions.xAxis) === null || _a === void 0 ? void 0 : _a.opposite) !== null && _b !== void 0 ? _b : xAxisOptions.opposite) !== null && _c !== void 0 ? _c : true,\n linkedTo: defaultLinkedTo\n }, \n // User options\n xAxisOptions, \n // Forced options\n {\n type: 'datetime'\n });\n });\n // Apply Y axis options to both single and multi y axes\n options.yAxis = (splat(userOptions.yAxis || {})).map(function (yAxisOptions) { return GanttChart_merge(\n // Defaults\n {\n grid: {\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n enabled: true\n },\n staticScale: 50,\n reversed: true,\n // Set default type treegrid, but only if 'categories' is\n // undefined\n type: yAxisOptions.categories ? yAxisOptions.type : 'treegrid'\n }, \n // User options\n yAxisOptions); });\n _super.prototype.init.call(this, options, callback);\n };\n return GanttChart;\n}((highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default())));\n/* *\n *\n * Class Namespace\n *\n * */\n(function (GanttChart) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable jsdoc/check-param-names */\n /**\n * The factory function for creating new gantt charts. Creates a new {@link\n * Highcharts.GanttChart|GanttChart} object with different default options\n * than the basic Chart.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.ganttChart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: ...\n * }]\n * });\n *\n * @function Highcharts.ganttChart\n *\n * @param {string|Highcharts.HTMLDOMElement} renderTo\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.GanttChart}\n * Returns the Chart object.\n */\n function ganttChart(a, b, c) {\n return new GanttChart(a, b, c);\n }\n GanttChart.ganttChart = ganttChart;\n /* eslint-enable jsdoc/check-param-names */\n})(GanttChart || (GanttChart = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Chart_GanttChart = (GanttChart);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Axis\"],\"commonjs\":[\"highcharts\",\"Axis\"],\"commonjs2\":[\"highcharts\",\"Axis\"],\"root\":[\"Highcharts\",\"Axis\"]}\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_ = __webpack_require__(532);\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default = /*#__PURE__*/__webpack_require__.n(highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_);\n;// ./code/es5/es-modules/Stock/Navigator/ChartNavigatorComposition.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\nvar ChartNavigatorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, ChartNavigatorComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Constants\n *\n * */\nvar composedMembers = [];\n/* *\n *\n * Variables\n *\n * */\nvar NavigatorConstructor;\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction ChartNavigatorComposition_compose(ChartClass, NavigatorClass) {\n if (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().pushUnique(composedMembers, ChartClass)) {\n var chartProto = ChartClass.prototype;\n NavigatorConstructor = NavigatorClass;\n chartProto.callbacks.push(onChartCallback);\n ChartNavigatorComposition_addEvent(ChartClass, 'afterAddSeries', onChartAfterAddSeries);\n ChartNavigatorComposition_addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);\n ChartNavigatorComposition_addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);\n ChartNavigatorComposition_addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n ChartNavigatorComposition_addEvent(ChartClass, 'beforeShowResetZoom', onChartBeforeShowResetZoom);\n ChartNavigatorComposition_addEvent(ChartClass, 'update', onChartUpdate);\n }\n}\n/**\n * Handle adding new series.\n * @private\n */\nfunction onChartAfterAddSeries() {\n if (this.navigator) {\n // Recompute which series should be shown in navigator, and add them\n this.navigator.setBaseSeries(null, false);\n }\n}\n/**\n * For stock charts, extend the Chart.setChartSize method so that we can set the\n * final top position of the navigator once the height of the chart, including\n * the legend, is determined. #367. We can't use Chart.getMargins, because\n * labels offsets are not calculated yet.\n * @private\n */\nfunction onChartAfterSetChartSize() {\n var _a;\n var legend = this.legend,\n navigator = this.navigator;\n var legendOptions,\n xAxis,\n yAxis;\n if (navigator) {\n legendOptions = legend && legend.options;\n xAxis = navigator.xAxis;\n yAxis = navigator.yAxis;\n var scrollbarHeight = navigator.scrollbarHeight,\n scrollButtonSize = navigator.scrollButtonSize;\n // Compute the top position\n if (this.inverted) {\n navigator.left = navigator.opposite ?\n this.chartWidth - scrollbarHeight -\n navigator.height :\n this.spacing[3] + scrollbarHeight;\n navigator.top = this.plotTop + scrollButtonSize;\n }\n else {\n navigator.left = pick(xAxis.left, this.plotLeft + scrollButtonSize);\n navigator.top = navigator.navigatorOptions.top ||\n this.chartHeight -\n navigator.height -\n scrollbarHeight -\n (((_a = this.scrollbar) === null || _a === void 0 ? void 0 : _a.options.margin) || 0) -\n this.spacing[2] -\n (this.rangeSelector && this.extraBottomMargin ?\n this.rangeSelector.getHeight() :\n 0) -\n ((legendOptions &&\n legendOptions.verticalAlign === 'bottom' &&\n legendOptions.layout !== 'proximate' && // #13392\n legendOptions.enabled &&\n !legendOptions.floating) ?\n legend.legendHeight +\n pick(legendOptions.margin, 10) :\n 0) -\n (this.titleOffset ? this.titleOffset[2] : 0);\n }\n if (xAxis && yAxis) { // False if navigator is disabled (#904)\n if (this.inverted) {\n xAxis.options.left = yAxis.options.left = navigator.left;\n }\n else {\n xAxis.options.top = yAxis.options.top = navigator.top;\n }\n xAxis.setAxisSize();\n yAxis.setAxisSize();\n }\n }\n}\n/**\n * Initialize navigator, if no scrolling exists yet.\n * @private\n */\nfunction onChartAfterUpdate(event) {\n if (!this.navigator && !this.scroller &&\n (this.options.navigator.enabled ||\n this.options.scrollbar.enabled)) {\n this.scroller = this.navigator = new NavigatorConstructor(this);\n if (pick(event.redraw, true)) {\n this.redraw(event.animation); // #7067\n }\n }\n}\n/**\n * Initialize navigator for stock charts\n * @private\n */\nfunction onChartBeforeRender() {\n var options = this.options;\n if (options.navigator.enabled ||\n options.scrollbar.enabled) {\n this.scroller = this.navigator = new NavigatorConstructor(this);\n }\n}\n/**\n * For Stock charts. For x only zooming, do not to create the zoom button\n * because X axis zooming is already allowed by the Navigator and Range\n * selector. (#9285)\n * @private\n */\nfunction onChartBeforeShowResetZoom() {\n var chartOptions = this.options,\n navigator = chartOptions.navigator,\n rangeSelector = chartOptions.rangeSelector;\n if (((navigator && navigator.enabled) ||\n (rangeSelector && rangeSelector.enabled)) &&\n ((!isTouchDevice &&\n this.zooming.type === 'x') ||\n (isTouchDevice && this.zooming.pinchType === 'x'))) {\n return false;\n }\n}\n/**\n * @private\n */\nfunction onChartCallback(chart) {\n var navigator = chart.navigator;\n // Initialize the navigator\n if (navigator && chart.xAxis[0]) {\n var extremes = chart.xAxis[0].getExtremes();\n navigator.render(extremes.min, extremes.max);\n }\n}\n/**\n * Merge options, if no scrolling exists yet\n * @private\n */\nfunction onChartUpdate(e) {\n var navigatorOptions = (e.options.navigator || {}),\n scrollbarOptions = (e.options.scrollbar || {});\n if (!this.navigator && !this.scroller &&\n (navigatorOptions.enabled || scrollbarOptions.enabled)) {\n ChartNavigatorComposition_merge(true, this.options.navigator, navigatorOptions);\n ChartNavigatorComposition_merge(true, this.options.scrollbar, scrollbarOptions);\n delete e.options.navigator;\n delete e.options.scrollbar;\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nvar ChartNavigatorComposition = {\n compose: ChartNavigatorComposition_compose\n};\n/* harmony default export */ var Navigator_ChartNavigatorComposition = (ChartNavigatorComposition);\n\n;// ./code/es5/es-modules/Core/Axis/NavigatorAxisComposition.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar NavigatorAxisComposition_isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\nvar NavigatorAxisComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, NavigatorAxisComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, NavigatorAxisComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction onAxisInit() {\n var axis = this;\n if (!axis.navigatorAxis) {\n axis.navigatorAxis = new NavigatorAxisAdditions(axis);\n }\n}\n/**\n * For Stock charts, override selection zooming with some special features\n * because X axis zooming is already allowed by the Navigator and Range\n * selector.\n * @private\n */\nfunction onAxisSetExtremes(e) {\n var axis = this,\n chart = axis.chart,\n chartOptions = chart.options,\n navigator = chartOptions.navigator,\n navigatorAxis = axis.navigatorAxis,\n pinchType = chart.zooming.pinchType,\n rangeSelector = chartOptions.rangeSelector,\n zoomType = chart.zooming.type;\n var zoomed;\n if (axis.isXAxis &&\n ((navigator === null || navigator === void 0 ? void 0 : navigator.enabled) || (rangeSelector === null || rangeSelector === void 0 ? void 0 : rangeSelector.enabled))) {\n // For y only zooming, ignore the X axis completely\n if (zoomType === 'y' && e.trigger === 'zoom') {\n zoomed = false;\n // For xy zooming, record the state of the zoom before zoom selection,\n // then when the reset button is pressed, revert to this state. This\n // should apply only if the chart is initialized with a range (#6612),\n // otherwise zoom all the way out.\n }\n else if (((e.trigger === 'zoom' && zoomType === 'xy') ||\n (NavigatorAxisComposition_isTouchDevice && pinchType === 'xy')) &&\n axis.options.range) {\n var previousZoom = navigatorAxis.previousZoom;\n // Minimum defined, zooming in\n if (NavigatorAxisComposition_defined(e.min)) {\n navigatorAxis.previousZoom = [axis.min, axis.max];\n // Minimum undefined, resetting zoom\n }\n else if (previousZoom) {\n e.min = previousZoom[0];\n e.max = previousZoom[1];\n navigatorAxis.previousZoom = void 0;\n }\n }\n }\n if (typeof zoomed !== 'undefined') {\n e.preventDefault();\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n */\nvar NavigatorAxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function NavigatorAxisAdditions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n NavigatorAxisAdditions.compose = function (AxisClass) {\n if (!AxisClass.keepProps.includes('navigatorAxis')) {\n AxisClass.keepProps.push('navigatorAxis');\n NavigatorAxisComposition_addEvent(AxisClass, 'init', onAxisInit);\n NavigatorAxisComposition_addEvent(AxisClass, 'setExtremes', onAxisSetExtremes);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n NavigatorAxisAdditions.prototype.destroy = function () {\n this.axis = void 0;\n };\n /**\n * Add logic to normalize the zoomed range in order to preserve the pressed\n * state of range selector buttons\n *\n * @private\n * @function Highcharts.Axis#toFixedRange\n */\n NavigatorAxisAdditions.prototype.toFixedRange = function (pxMin, pxMax, fixedMin, fixedMax) {\n var axis = this.axis,\n halfPointRange = (axis.pointRange || 0) / 2;\n var newMin = NavigatorAxisComposition_pick(fixedMin,\n axis.translate(pxMin,\n true, !axis.horiz)),\n newMax = NavigatorAxisComposition_pick(fixedMax,\n axis.translate(pxMax,\n true, !axis.horiz));\n // Add/remove half point range to/from the extremes (#1172)\n if (!NavigatorAxisComposition_defined(fixedMin)) {\n newMin = correctFloat(newMin + halfPointRange);\n }\n if (!NavigatorAxisComposition_defined(fixedMax)) {\n newMax = correctFloat(newMax - halfPointRange);\n }\n if (!isNumber(newMin) || !isNumber(newMax)) { // #1195, #7411\n newMin = newMax = void 0;\n }\n return {\n min: newMin,\n max: newMax\n };\n };\n return NavigatorAxisAdditions;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var NavigatorAxisComposition = (NavigatorAxisAdditions);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorDefaults.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar seriesTypes = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n/* *\n *\n * Constants\n *\n * */\n/**\n * The navigator is a small series below the main series, displaying\n * a view of the entire data set. It provides tools to zoom in and\n * out on parts of the data as well as panning across the dataset.\n *\n * @product highstock gantt\n * @optionparent navigator\n */\nvar NavigatorDefaults = {\n /**\n * Whether the navigator and scrollbar should adapt to updated data\n * in the base X axis. When loading data async, as in the demo below,\n * this should be `false`. Otherwise new data will trigger navigator\n * redraw, which will cause unwanted looping. In the demo below, the\n * data in the navigator is set only once. On navigating, only the main\n * chart content is updated.\n *\n * @sample {highstock} stock/demo/lazy-loading/\n * Set to false with async data loading\n *\n * @type {boolean}\n * @default true\n * @apioption navigator.adaptToUpdatedData\n */\n /**\n * An integer identifying the index to use for the base series, or a\n * string representing the id of the series.\n *\n * **Note**: As of Highcharts 5.0, this is now a deprecated option.\n * Prefer [series.showInNavigator](#plotOptions.series.showInNavigator).\n *\n * @see [series.showInNavigator](#plotOptions.series.showInNavigator)\n *\n * @deprecated\n * @type {number|string}\n * @default 0\n * @apioption navigator.baseSeries\n */\n /**\n * Enable or disable the navigator.\n *\n * @sample {highstock} stock/navigator/enabled/\n * Disable the navigator\n *\n * @type {boolean}\n * @default true\n * @apioption navigator.enabled\n */\n /**\n * When the chart is inverted, whether to draw the navigator on the\n * opposite side.\n *\n * @type {boolean}\n * @default false\n * @since 5.0.8\n * @apioption navigator.opposite\n */\n /**\n * The height of the navigator.\n *\n * @sample {highstock} stock/navigator/height/\n * A higher navigator\n */\n height: 40,\n /**\n * The distance from the nearest element, the X axis or X axis labels.\n *\n * @sample {highstock} stock/navigator/margin/\n * A margin of 2 draws the navigator closer to the X axis labels\n */\n margin: 25,\n /**\n * Whether the mask should be inside the range marking the zoomed\n * range, or outside. In Highcharts Stock 1.x it was always `false`.\n *\n * @sample {highstock} stock/demo/maskinside-false/\n * False, mask outside\n *\n * @since 2.0\n */\n maskInside: true,\n /**\n * Options for the handles for dragging the zoomed area.\n *\n * @sample {highstock} stock/navigator/handles/\n * Colored handles\n */\n handles: {\n /**\n * Width for handles.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n */\n width: 7,\n /**\n * Border radius of the handles.\n *\n * @sample {highstock} stock/navigator/handles-border-radius/\n * Border radius on the navigator handles.\n *\n * @since 11.4.2\n */\n borderRadius: 0,\n /**\n * Height for handles.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n */\n height: 15,\n /**\n * Array to define shapes of handles. 0-index for left, 1-index for\n * right.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `url(graphic.png)`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @type {Array<string>}\n * @default [\"navigator-handle\", \"navigator-handle\"]\n * @since 6.0.0\n */\n symbols: ['navigator-handle', 'navigator-handle'],\n /**\n * Allows to enable/disable handles.\n *\n * @since 6.0.0\n */\n enabled: true,\n /**\n * The width for the handle border and the stripes inside.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n * @apioption navigator.handles.lineWidth\n */\n lineWidth: 1,\n /**\n * The fill for the handle.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The stroke for the handle border and the stripes inside.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */\n },\n /**\n * The color of the mask covering the areas of the navigator series\n * that are currently not visible in the main series. The default\n * color is bluish with an opacity of 0.3 to see the series below.\n *\n * @see In styled mode, the mask is styled with the\n * `.highcharts-navigator-mask` and\n * `.highcharts-navigator-mask-inside` classes.\n *\n * @sample {highstock} stock/navigator/maskfill/\n * Blue, semi transparent mask\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(102,133,194,0.3)\n */\n maskFill: color(\"#667aff\" /* Palette.highlightColor60 */).setOpacity(0.3).get(),\n /**\n * The color of the line marking the currently zoomed area in the\n * navigator.\n *\n * @sample {highstock} stock/navigator/outline/\n * 2px blue outline\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n */\n outlineColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The width of the line marking the currently zoomed area in the\n * navigator.\n *\n * @see In styled mode, the outline stroke width is set with the\n * `.highcharts-navigator-outline` class.\n *\n * @sample {highstock} stock/navigator/outline/\n * 2px blue outline\n *\n * @type {number}\n */\n outlineWidth: 1,\n /**\n * Options for the navigator series. Available options are the same\n * as any series, documented at [plotOptions](#plotOptions.series)\n * and [series](#series).\n *\n * Unless data is explicitly defined on navigator.series, the data\n * is borrowed from the first series in the chart.\n *\n * Default series options for the navigator series are:\n * ```js\n * series: {\n * type: 'areaspline',\n * fillOpacity: 0.05,\n * dataGrouping: {\n * smoothed: true\n * },\n * lineWidth: 1,\n * marker: {\n * enabled: false\n * }\n * }\n * ```\n *\n * @see In styled mode, the navigator series is styled with the\n * `.highcharts-navigator-series` class.\n *\n * @sample {highstock} stock/navigator/series-data/\n * Using a separate data set for the navigator\n * @sample {highstock} stock/navigator/series/\n * A green navigator series\n *\n * @type {*|Array<*>|Highcharts.SeriesOptionsType|Array<Highcharts.SeriesOptionsType>}\n */\n series: {\n /**\n * The type of the navigator series.\n *\n * Heads up:\n * In column-type navigator, zooming is limited to at least one\n * point with its `pointRange`.\n *\n * @sample {highstock} stock/navigator/column/\n * Column type navigator\n *\n * @type {string}\n * @default {highstock} `areaspline` if defined, otherwise `line`\n * @default {gantt} gantt\n */\n type: (typeof seriesTypes.areaspline === 'undefined' ?\n 'line' :\n 'areaspline'),\n /**\n * The fill opacity of the navigator series.\n */\n fillOpacity: 0.05,\n /**\n * The pixel line width of the navigator series.\n */\n lineWidth: 1,\n /**\n * @ignore-option\n */\n compare: null,\n /**\n * @ignore-option\n */\n sonification: {\n enabled: false\n },\n /**\n * Unless data is explicitly defined, the data is borrowed from the\n * first series in the chart.\n *\n * @type {Array<number|Array<number|string|null>|object|null>}\n * @product highstock\n * @apioption navigator.series.data\n */\n /**\n * Data grouping options for the navigator series.\n *\n * @extends plotOptions.series.dataGrouping\n */\n dataGrouping: {\n approximation: 'average',\n enabled: true,\n groupPixelWidth: 2,\n // Replace smoothed property by anchors, #12455.\n firstAnchor: 'firstPoint',\n anchor: 'middle',\n lastAnchor: 'lastPoint',\n // Day and week differs from plotOptions.series.dataGrouping\n units: [\n ['millisecond', [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]],\n ['second', [1, 2, 5, 10, 15, 30]],\n ['minute', [1, 2, 5, 10, 15, 30]],\n ['hour', [1, 2, 3, 4, 6, 8, 12]],\n ['day', [1, 2, 3, 4]],\n ['week', [1, 2, 3]],\n ['month', [1, 3, 6]],\n ['year', null]\n ]\n },\n /**\n * Data label options for the navigator series. Data labels are\n * disabled by default on the navigator series.\n *\n * @extends plotOptions.series.dataLabels\n */\n dataLabels: {\n enabled: false,\n zIndex: 2 // #1839\n },\n id: 'highcharts-navigator-series',\n className: 'highcharts-navigator-series',\n /**\n * Sets the fill color of the navigator series.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption navigator.series.color\n */\n /**\n * Line color for the navigator series. Allows setting the color\n * while disallowing the default candlestick setting.\n *\n * @type {Highcharts.ColorString|null}\n */\n lineColor: null, // #4602\n marker: {\n enabled: false\n },\n /**\n * Since Highcharts Stock v8, default value is the same as default\n * `pointRange` defined for a specific type (e.g. `null` for\n * column type).\n *\n * In Highcharts Stock version < 8, defaults to 0.\n *\n * @extends plotOptions.series.pointRange\n * @type {number|null}\n * @apioption navigator.series.pointRange\n */\n /**\n * The threshold option. Setting it to 0 will make the default\n * navigator area series draw its area from the 0 value and up.\n *\n * @type {number|null}\n */\n threshold: null\n },\n /**\n * Enable or disable navigator sticking to right, while adding new\n * points. If `undefined`, the navigator sticks to the axis maximum only\n * if it was already at the maximum prior to adding points.\n *\n * @type {boolean}\n * @default undefined\n * @since 10.2.1\n * @sample {highstock} stock/navigator/sticktomax-false/\n * stickToMax set to false\n * @apioption navigator.stickToMax\n */\n /**\n * Options for the navigator X axis. Default series options for the\n * navigator xAxis are:\n * ```js\n * xAxis: {\n * tickWidth: 0,\n * lineWidth: 0,\n * gridLineWidth: 1,\n * tickPixelInterval: 200,\n * labels: {\n * align: 'left',\n * style: {\n * color: '#888'\n * },\n * x: 3,\n * y: -4\n * }\n * }\n * ```\n *\n * @extends xAxis\n * @excluding linkedTo, maxZoom, minRange, opposite, range, scrollbar,\n * showEmpty, maxRange\n */\n xAxis: {\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but the value is set in terms of axis values,\n * percentage or pixels.\n *\n * If it's a number, it is interpreted as axis values, which in a\n * datetime axis equals milliseconds.\n *\n * If it's a percentage string, is interpreted as percentages of the\n * axis length. An overscroll of 50% will make a 100px axis 50px longer.\n *\n * If it's a pixel string, it is interpreted as a fixed pixel value, but\n * limited to 90% of the axis length.\n *\n * If it's undefined, the value is inherited from `xAxis.overscroll`.\n *\n * Can be set for both, main xAxis and navigator's xAxis.\n *\n * @type {number | string | undefined}\n * @since 6.0.0\n * @apioption navigator.xAxis.overscroll\n */\n className: 'highcharts-navigator-xaxis',\n tickLength: 0,\n lineWidth: 0,\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n id: 'navigator-x-axis',\n gridLineWidth: 1,\n tickPixelInterval: 200,\n labels: {\n align: 'left',\n /**\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @ignore */\n color: \"#000000\" /* Palette.neutralColor100 */,\n /** @ignore */\n fontSize: '0.7em',\n /** @ignore */\n opacity: 0.6,\n /** @ignore */\n textOutline: '2px contrast'\n },\n x: 3,\n y: -4\n },\n crosshair: false\n },\n /**\n * Options for the navigator Y axis. Default series options for the\n * navigator yAxis are:\n * ```js\n * yAxis: {\n * gridLineWidth: 0,\n * startOnTick: false,\n * endOnTick: false,\n * minPadding: 0.1,\n * maxPadding: 0.1,\n * labels: {\n * enabled: false\n * },\n * title: {\n * text: null\n * },\n * tickWidth: 0\n * }\n * ```\n *\n * @extends yAxis\n * @excluding height, linkedTo, maxZoom, minRange, ordinal, range,\n * showEmpty, scrollbar, top, units, maxRange, minLength,\n * maxLength, resize\n */\n yAxis: {\n className: 'highcharts-navigator-yaxis',\n gridLineWidth: 0,\n startOnTick: false,\n endOnTick: false,\n minPadding: 0.1,\n id: 'navigator-y-axis',\n maxPadding: 0.1,\n labels: {\n enabled: false\n },\n crosshair: false,\n title: {\n text: null\n },\n tickLength: 0,\n tickWidth: 0\n }\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Navigator_NavigatorDefaults = (NavigatorDefaults);\n/* *\n *\n * API Options\n *\n * */\n/**\n * Maximum range which can be set using the navigator's handles.\n * Opposite of [xAxis.minRange](#xAxis.minRange).\n *\n * @sample {highstock} stock/navigator/maxrange/\n * Defined max and min range\n *\n * @type {number}\n * @since 6.0.0\n * @product highstock gantt\n * @apioption xAxis.maxRange\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Core/Renderer/SVG/Symbols.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar Symbols_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Symbols_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Symbols_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Functions\n *\n * */\n/* eslint-disable require-jsdoc, valid-jsdoc */\n/**\n *\n */\nfunction arc(cx, cy, w, h, options) {\n var arc = [];\n if (options) {\n var start = options.start || 0,\n rx = Symbols_pick(options.r,\n w),\n ry = Symbols_pick(options.r,\n h || w), \n // Subtract a small number to prevent cos and sin of start and end\n // from becoming equal on 360 arcs (#1561). The size of the circle\n // affects the constant, therefore the division by `rx`. If the\n // proximity is too small, the arc disappears. If it is too great, a\n // gap appears. This can be seen in the animation of the official\n // bubble demo (#20586).\n proximity = 0.0002 / (options.borderRadius ? 1 : Math.max(rx, 1)),\n fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity),\n end = (options.end || 0) - (fullCircle ? proximity : 0),\n innerRadius = options.innerR,\n open_1 = Symbols_pick(options.open,\n fullCircle),\n cosStart = Math.cos(start),\n sinStart = Math.sin(start),\n cosEnd = Math.cos(end),\n sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = Symbols_pick(options.longArc,\n end - start - Math.PI < proximity ? 0 : 1);\n var arcSegment = [\n 'A', // ArcTo\n rx, // X radius\n ry, // Y radius\n 0, // Slanting\n longArc, // Long or short arc\n Symbols_pick(options.clockwise, 1), // Clockwise\n cx + rx * cosEnd,\n cy + ry * sinEnd\n ];\n arcSegment.params = { start: start, end: end, cx: cx, cy: cy }; // Memo for border radius\n arc.push([\n 'M',\n cx + rx * cosStart,\n cy + ry * sinStart\n ], arcSegment);\n if (Symbols_defined(innerRadius)) {\n arcSegment = [\n 'A', // ArcTo\n innerRadius, // X radius\n innerRadius, // Y radius\n 0, // Slanting\n longArc, // Long or short arc\n // Clockwise - opposite to the outer arc clockwise\n Symbols_defined(options.clockwise) ? 1 - options.clockwise : 0,\n cx + innerRadius * cosStart,\n cy + innerRadius * sinStart\n ];\n // Memo for border radius\n arcSegment.params = {\n start: end,\n end: start,\n cx: cx,\n cy: cy\n };\n arc.push(open_1 ?\n [\n 'M',\n cx + innerRadius * cosEnd,\n cy + innerRadius * sinEnd\n ] : [\n 'L',\n cx + innerRadius * cosEnd,\n cy + innerRadius * sinEnd\n ], arcSegment);\n }\n if (!open_1) {\n arc.push(['Z']);\n }\n }\n return arc;\n}\n/**\n * Callout shape used for default tooltips.\n */\nfunction callout(x, y, w, h, options) {\n var arrowLength = 6,\n halfDistance = 6,\n r = Math.min((options && options.r) || 0,\n w,\n h),\n safeDistance = r + halfDistance,\n anchorX = options && options.anchorX,\n anchorY = options && options.anchorY || 0;\n var path = roundedRect(x,\n y,\n w,\n h, { r: r });\n if (!Symbols_isNumber(anchorX)) {\n return path;\n }\n // Do not render a connector, if anchor starts inside the label\n if (anchorX < w && anchorX > 0 && anchorY < h && anchorY > 0) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX > w - safeDistance) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n if (anchorX < w) { // Corner connector\n var isTopCorner = anchorY < y + safeDistance,\n cornerY = isTopCorner ? y : y + h,\n sliceStart = isTopCorner ? 2 : 5;\n path.splice(sliceStart, 0, ['L', anchorX, anchorY], ['L', x + w - r, cornerY]);\n }\n else { // Side connector\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n }\n // Anchor on left side\n }\n else if (x + anchorX < safeDistance) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n if (anchorX > 0) { // Corner connector\n var isTopCorner = anchorY < y + safeDistance,\n cornerY = isTopCorner ? y : y + h,\n sliceStart = isTopCorner ? 1 : 6;\n path.splice(sliceStart, 0, ['L', anchorX, anchorY], ['L', x + r, cornerY]);\n }\n else { // Side connector\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n }\n else if ( // Replace bottom\n anchorY > h &&\n anchorX < w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // Replace top\n anchorY < 0 &&\n anchorX > safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n}\n/**\n *\n */\nfunction circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n}\n/**\n *\n */\nfunction diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n}\n// #15291\n/**\n *\n */\nfunction rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n}\n/**\n *\n */\nfunction roundedRect(x, y, w, h, options) {\n var r = (options === null || options === void 0 ? void 0 : options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y], // Top side\n ['A', r, r, 0, 0, 1, x + w, y + r], // Top-right corner\n ['L', x + w, y + h - r], // Right side\n ['A', r, r, 0, 0, 1, x + w - r, y + h], // Bottom-right corner\n ['L', x + r, y + h], // Bottom side\n ['A', r, r, 0, 0, 1, x, y + h - r], // Bottom-left corner\n ['L', x, y + r], // Left side\n ['A', r, r, 0, 0, 1, x + r, y],\n ['Z'] // Top-left corner\n ];\n}\n/**\n *\n */\nfunction triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n}\n/**\n *\n */\nfunction triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n}\nvar Symbols = {\n arc: arc,\n callout: callout,\n circle: circle,\n diamond: diamond,\n rect: rect,\n roundedRect: roundedRect,\n square: rect,\n triangle: triangle,\n 'triangle-down': triangleDown\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var SVG_Symbols = (Symbols);\n\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorSymbols.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\nvar relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n * Constants\n *\n * */\n/**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n * @private\n */\nfunction navigatorHandle(_x, _y, width, height, options) {\n if (options === void 0) { options = {}; }\n var halfWidth = options.width ? options.width / 2 : width,\n markerPosition = 1.5,\n r = relativeLength(options.borderRadius || 0,\n Math.min(halfWidth * 2,\n height));\n height = options.height || height;\n return __spreadArray([\n ['M', -markerPosition, height / 2 - 3.5],\n ['L', -markerPosition, height / 2 + 4.5],\n ['M', markerPosition - 1, height / 2 - 3.5],\n ['L', markerPosition - 1, height / 2 + 4.5]\n ], SVG_Symbols.rect(-halfWidth - 1, 0.5, halfWidth * 2 + 1, height, { r: r }), true);\n}\n/* *\n *\n * Default Export\n *\n * */\nvar NavigatorSymbols = {\n 'navigator-handle': navigatorHandle\n};\n/* harmony default export */ var Navigator_NavigatorSymbols = (NavigatorSymbols);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"RendererRegistry\"],\"commonjs\":[\"highcharts\",\"RendererRegistry\"],\"commonjs2\":[\"highcharts\",\"RendererRegistry\"],\"root\":[\"Highcharts\",\"RendererRegistry\"]}\nvar highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_ = __webpack_require__(608);\nvar highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_);\n;// ./code/es5/es-modules/Stock/Utilities/StockUtilities.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar StockUtilities_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Sets the chart.fixedRange to the specified value. If the value is larger\n * than actual range, sets it to the maximum possible range. (#20327)\n *\n * @private\n * @function Highcharts.StockChart#setFixedRange\n * @param {number|undefined} range\n * Range to set in axis units.\n */\nfunction setFixedRange(range) {\n var xAxis = this.xAxis[0];\n if (StockUtilities_defined(xAxis.dataMax) &&\n StockUtilities_defined(xAxis.dataMin) &&\n range) {\n this.fixedRange = Math.min(range, xAxis.dataMax - xAxis.dataMin);\n }\n else {\n this.fixedRange = range;\n }\n}\nvar StockUtilities = {\n setFixedRange: setFixedRange\n};\n/* harmony default export */ var Utilities_StockUtilities = (StockUtilities);\n\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorComposition.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar setOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setOptions;\n\nvar NavigatorComposition_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\n\n\nvar getRendererType = (highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default()).getRendererType;\n\nvar NavigatorComposition_setFixedRange = Utilities_StockUtilities.setFixedRange;\n\nvar NavigatorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, NavigatorComposition_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n * Variables\n *\n * */\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction NavigatorComposition_compose(ChartClass, AxisClass, SeriesClass) {\n NavigatorAxisComposition.compose(AxisClass);\n if (NavigatorComposition_pushUnique(NavigatorComposition_composed, 'Navigator')) {\n ChartClass.prototype.setFixedRange = NavigatorComposition_setFixedRange;\n extend(getRendererType().prototype.symbols, Navigator_NavigatorSymbols);\n NavigatorComposition_addEvent(SeriesClass, 'afterUpdate', onSeriesAfterUpdate);\n setOptions({ navigator: Navigator_NavigatorDefaults });\n }\n}\n/**\n * Handle updating series\n * @private\n */\nfunction onSeriesAfterUpdate() {\n if (this.chart.navigator && !this.options.isInternal) {\n this.chart.navigator.setBaseSeries(null, false);\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nvar NavigatorComposition = {\n compose: NavigatorComposition_compose\n};\n/* harmony default export */ var Navigator_NavigatorComposition = (NavigatorComposition);\n\n;// ./code/es5/es-modules/Core/Axis/ScrollbarAxis.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ScrollbarAxis_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar ScrollbarAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, ScrollbarAxis_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, ScrollbarAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, ScrollbarAxis_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n * Composition\n *\n * */\nvar ScrollbarAxis;\n(function (ScrollbarAxis) {\n /* *\n *\n * Variables\n *\n * */\n var Scrollbar;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Attaches to axis events to create scrollbars if enabled.\n *\n * @private\n *\n * @param {Highcharts.Axis} AxisClass\n * Axis class to extend.\n *\n * @param {Highcharts.Scrollbar} ScrollbarClass\n * Scrollbar class to use.\n */\n function compose(AxisClass, ScrollbarClass) {\n if (ScrollbarAxis_pushUnique(ScrollbarAxis_composed, 'Axis.Scrollbar')) {\n Scrollbar = ScrollbarClass;\n ScrollbarAxis_addEvent(AxisClass, 'afterGetOffset', onAxisAfterGetOffset);\n ScrollbarAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n ScrollbarAxis_addEvent(AxisClass, 'afterRender', onAxisAfterRender);\n }\n }\n ScrollbarAxis.compose = compose;\n /** @private */\n function getExtremes(axis) {\n var axisMin = ScrollbarAxis_pick(axis.options && axis.options.min,\n axis.min);\n var axisMax = ScrollbarAxis_pick(axis.options && axis.options.max,\n axis.max);\n return {\n axisMin: axisMin,\n axisMax: axisMax,\n scrollMin: ScrollbarAxis_defined(axis.dataMin) ?\n Math.min(axisMin, axis.min, axis.dataMin, ScrollbarAxis_pick(axis.threshold, Infinity)) : axisMin,\n scrollMax: ScrollbarAxis_defined(axis.dataMax) ?\n Math.max(axisMax, axis.max, axis.dataMax, ScrollbarAxis_pick(axis.threshold, -Infinity)) : axisMax\n };\n }\n /**\n * Make space for a scrollbar.\n * @private\n */\n function onAxisAfterGetOffset() {\n var axis = this,\n scrollbar = axis.scrollbar,\n opposite = scrollbar && !scrollbar.options.opposite,\n index = axis.horiz ? 2 : opposite ? 3 : 1;\n if (scrollbar) {\n // Reset scrollbars offsets\n axis.chart.scrollbarsOffsets = [0, 0];\n axis.chart.axisOffset[index] +=\n scrollbar.size + (scrollbar.options.margin || 0);\n }\n }\n /**\n * Wrap axis initialization and create scrollbar if enabled.\n * @private\n */\n function onAxisAfterInit() {\n var axis = this;\n if (axis.options &&\n axis.options.scrollbar &&\n axis.options.scrollbar.enabled) {\n // Predefined options:\n axis.options.scrollbar.vertical = !axis.horiz;\n axis.options.startOnTick = axis.options.endOnTick = false;\n axis.scrollbar = new Scrollbar(axis.chart.renderer, axis.options.scrollbar, axis.chart);\n ScrollbarAxis_addEvent(axis.scrollbar, 'changed', function (e) {\n var _a = getExtremes(axis),\n axisMin = _a.axisMin,\n axisMax = _a.axisMax,\n unitedMin = _a.scrollMin,\n unitedMax = _a.scrollMax,\n range = unitedMax - unitedMin;\n var to,\n from;\n // #12834, scroll when show/hide series, wrong extremes\n if (!ScrollbarAxis_defined(axisMin) || !ScrollbarAxis_defined(axisMax)) {\n return;\n }\n if ((axis.horiz && !axis.reversed) ||\n (!axis.horiz && axis.reversed)) {\n to = unitedMin + range * this.to;\n from = unitedMin + range * this.from;\n }\n else {\n // Y-values in browser are reversed, but this also\n // applies for reversed horizontal axis:\n to = unitedMin + range * (1 - this.from);\n from = unitedMin + range * (1 - this.to);\n }\n if (this.shouldUpdateExtremes(e.DOMType)) {\n // #17977, set animation to undefined instead of true\n var animate = e.DOMType === 'mousemove' ||\n e.DOMType === 'touchmove' ? false : void 0;\n axis.setExtremes(from, to, true, animate, e);\n }\n else {\n // When live redraw is disabled, don't change extremes\n // Only change the position of the scrollbar thumb\n this.setRange(this.from, this.to);\n }\n });\n }\n }\n /**\n * Wrap rendering axis, and update scrollbar if one is created.\n * @private\n */\n function onAxisAfterRender() {\n var axis = this,\n _a = getExtremes(axis),\n scrollMin = _a.scrollMin,\n scrollMax = _a.scrollMax,\n scrollbar = axis.scrollbar,\n offset = (axis.axisTitleMargin + (axis.titleOffset || 0)),\n scrollbarsOffsets = axis.chart.scrollbarsOffsets,\n axisMargin = axis.options.margin || 0;\n var offsetsIndex,\n from,\n to;\n if (scrollbar && scrollbarsOffsets) {\n if (axis.horiz) {\n // Reserve space for labels/title\n if (!axis.opposite) {\n scrollbarsOffsets[1] += offset;\n }\n scrollbar.position(axis.left, (axis.top +\n axis.height +\n 2 +\n scrollbarsOffsets[1] -\n (axis.opposite ? axisMargin : 0)), axis.width, axis.height);\n // Next scrollbar should reserve space for margin (if set)\n if (!axis.opposite) {\n scrollbarsOffsets[1] += axisMargin;\n }\n offsetsIndex = 1;\n }\n else {\n // Reserve space for labels/title\n if (axis.opposite) {\n scrollbarsOffsets[0] += offset;\n }\n var xPosition = void 0;\n if (!scrollbar.options.opposite) {\n xPosition = axis.opposite ? 0 : axisMargin;\n }\n else {\n xPosition = axis.left +\n axis.width +\n 2 +\n scrollbarsOffsets[0] -\n (axis.opposite ? 0 : axisMargin);\n }\n scrollbar.position(xPosition, axis.top, axis.width, axis.height);\n // Next scrollbar should reserve space for margin (if set)\n if (axis.opposite) {\n scrollbarsOffsets[0] += axisMargin;\n }\n offsetsIndex = 0;\n }\n scrollbarsOffsets[offsetsIndex] += scrollbar.size +\n (scrollbar.options.margin || 0);\n if (isNaN(scrollMin) ||\n isNaN(scrollMax) ||\n !ScrollbarAxis_defined(axis.min) ||\n !ScrollbarAxis_defined(axis.max) ||\n axis.dataMin === axis.dataMax // #10733\n ) {\n // Default action: when data extremes are the same or there is\n // not extremes on the axis, but scrollbar exists, make it\n // full size\n scrollbar.setRange(0, 1);\n }\n else if (axis.min === axis.max) { // #20359\n // When the extremes are the same, set the scrollbar to a point\n // within the extremes range. Utilize pointRange to perform the\n // calculations. (#20359)\n var interval = axis.pointRange / (axis.dataMax +\n 1);\n from = interval * axis.min;\n to = interval * (axis.max + 1);\n scrollbar.setRange(from, to);\n }\n else {\n from = ((axis.min - scrollMin) /\n (scrollMax - scrollMin));\n to = ((axis.max - scrollMin) /\n (scrollMax - scrollMin));\n if ((axis.horiz && !axis.reversed) ||\n (!axis.horiz && axis.reversed)) {\n scrollbar.setRange(from, to);\n }\n else {\n // Inverse vertical axis\n scrollbar.setRange(1 - to, 1 - from);\n }\n }\n }\n }\n})(ScrollbarAxis || (ScrollbarAxis = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Axis_ScrollbarAxis = (ScrollbarAxis);\n\n;// ./code/es5/es-modules/Stock/Scrollbar/ScrollbarDefaults.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Constant\n *\n * */\n/**\n *\n * The scrollbar is a means of panning over the X axis of a stock chart.\n * Scrollbars can also be applied to other types of axes.\n *\n * Another approach to scrollable charts is the [chart.scrollablePlotArea](\n * https://api.highcharts.com/highcharts/chart.scrollablePlotArea) option that\n * is especially suitable for simpler cartesian charts on mobile.\n *\n * In styled mode, all the presentational options for the\n * scrollbar are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample stock/yaxis/inverted-bar-scrollbar/\n * A scrollbar on a simple bar chart\n *\n * @product highstock gantt\n * @optionparent scrollbar\n *\n * @private\n */\nvar ScrollbarDefaults = {\n /**\n * The height of the scrollbar. If `buttonsEnabled` is true , the height\n * also applies to the width of the scroll arrows so that they are always\n * squares.\n *\n * @sample stock/scrollbar/style/\n * Non-default height\n *\n * @type {number}\n */\n height: 10,\n /**\n * The border rounding radius of the bar.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n barBorderRadius: 5,\n /**\n * The corner radius of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n buttonBorderRadius: 0,\n /**\n * Enable or disable the buttons at the end of the scrollbar.\n *\n * @since 11.0.0\n */\n buttonsEnabled: false,\n /**\n * Enable or disable the scrollbar.\n *\n * @sample stock/scrollbar/enabled/\n * Disable the scrollbar, only use navigator\n *\n * @type {boolean}\n * @default true\n * @apioption scrollbar.enabled\n */\n /**\n * Whether to redraw the main chart as the scrollbar or the navigator\n * zoomed window is moved. Defaults to `true` for modern browsers and\n * `false` for legacy IE browsers as well as mobile devices.\n *\n * @sample stock/scrollbar/liveredraw\n * Setting live redraw to false\n *\n * @type {boolean}\n * @since 1.3\n */\n liveRedraw: void 0,\n /**\n * The margin between the scrollbar and its axis when the scrollbar is\n * applied directly to an axis, or the navigator in case that is enabled.\n * Defaults to 10 for axis, 0 for navigator.\n *\n * @type {number|undefined}\n */\n margin: void 0,\n /**\n * The minimum width of the scrollbar.\n *\n * @since 1.2.5\n */\n minWidth: 6,\n /** @ignore-option */\n opposite: true,\n /**\n * Whether to show or hide the scrollbar when the scrolled content is\n * zoomed out to it full extent.\n *\n * @type {boolean}\n * @default true\n * @apioption scrollbar.showFull\n */\n step: 0.2,\n /**\n * The z index of the scrollbar group.\n */\n zIndex: 3,\n /**\n * The background color of the scrollbar itself.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n barBackgroundColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the bar's border.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n barBorderWidth: 0,\n /**\n * The color of the scrollbar's border.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n barBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the small arrow inside the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonArrowColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * The color of scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonBackgroundColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The color of the border of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The border width of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n buttonBorderWidth: 1,\n /**\n * The color of the small rifles in the middle of the scrollbar.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n rifleColor: 'none',\n /**\n * The color of the track background.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n trackBackgroundColor: 'rgba(255, 255, 255, 0.001)', // #18922\n /**\n * The color of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n trackBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The corner radius of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n trackBorderRadius: 5,\n /**\n * The width of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n trackBorderWidth: 1\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Scrollbar_ScrollbarDefaults = (ScrollbarDefaults);\n\n;// ./code/es5/es-modules/Stock/Scrollbar/Scrollbar.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar Scrollbar_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\n\n\n\nvar Scrollbar_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, Scrollbar_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, Scrollbar_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, Scrollbar_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, Scrollbar_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent;\n/* *\n *\n * Constants\n *\n * */\n/* eslint-disable no-invalid-this, valid-jsdoc */\n/**\n * A reusable scrollbar, internally used in Highcharts Stock's\n * navigator and optionally on individual axes.\n *\n * @private\n * @class\n * @name Highcharts.Scrollbar\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\nvar Scrollbar = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Scrollbar(renderer, options, chart) {\n /* *\n *\n * Properties\n *\n * */\n this._events = [];\n this.chartX = 0;\n this.chartY = 0;\n this.from = 0;\n this.scrollbarButtons = [];\n this.scrollbarLeft = 0;\n this.scrollbarStrokeWidth = 1;\n this.scrollbarTop = 0;\n this.size = 0;\n this.to = 0;\n this.trackBorderWidth = 1;\n this.x = 0;\n this.y = 0;\n this.init(renderer, options, chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n Scrollbar.compose = function (AxisClass) {\n Axis_ScrollbarAxis.compose(AxisClass, Scrollbar);\n };\n /**\n * When we have vertical scrollbar, rifles and arrow in buttons should be\n * rotated. The same method is used in Navigator's handles, to rotate them.\n *\n * @function Highcharts.swapXY\n *\n * @param {Highcharts.SVGPathArray} path\n * Path to be rotated.\n *\n * @param {boolean} [vertical]\n * If vertical scrollbar, swap x-y values.\n *\n * @return {Highcharts.SVGPathArray}\n * Rotated path.\n *\n * @requires modules/stock\n */\n Scrollbar.swapXY = function (path, vertical) {\n if (vertical) {\n path.forEach(function (seg) {\n var len = seg.length;\n var temp;\n for (var i = 0; i < len; i += 2) {\n temp = seg[i + 1];\n if (typeof temp === 'number') {\n seg[i + 1] = seg[i + 2];\n seg[i + 2] = temp;\n }\n }\n });\n }\n return path;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set up the mouse and touch events for the Scrollbar\n *\n * @private\n * @function Highcharts.Scrollbar#addEvents\n */\n Scrollbar.prototype.addEvents = function () {\n var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],\n buttons = this.scrollbarButtons,\n bar = this.scrollbarGroup.element,\n track = this.track.element,\n mouseDownHandler = this.mouseDownHandler.bind(this),\n mouseMoveHandler = this.mouseMoveHandler.bind(this),\n mouseUpHandler = this.mouseUpHandler.bind(this);\n var _events = [\n // Mouse events\n [\n buttons[buttonsOrder[0]].element,\n 'click',\n this.buttonToMinClick.bind(this)\n ],\n [\n buttons[buttonsOrder[1]].element,\n 'click',\n this.buttonToMaxClick.bind(this)\n ],\n [track, 'click',\n this.trackClick.bind(this)],\n [bar, 'mousedown',\n mouseDownHandler],\n [bar.ownerDocument, 'mousemove',\n mouseMoveHandler],\n [bar.ownerDocument, 'mouseup',\n mouseUpHandler],\n // Touch events\n [bar, 'touchstart',\n mouseDownHandler],\n [bar.ownerDocument, 'touchmove',\n mouseMoveHandler],\n [bar.ownerDocument, 'touchend',\n mouseUpHandler]\n ];\n // Add them all\n _events.forEach(function (args) {\n Scrollbar_addEvent.apply(null, args);\n });\n this._events = _events;\n };\n Scrollbar.prototype.buttonToMaxClick = function (e) {\n var scroller = this;\n var range = ((scroller.to - scroller.from) *\n Scrollbar_pick(scroller.options.step, 0.2));\n scroller.updatePosition(scroller.from + range, scroller.to + range);\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n Scrollbar.prototype.buttonToMinClick = function (e) {\n var scroller = this;\n var range = Scrollbar_correctFloat(scroller.to - scroller.from) *\n Scrollbar_pick(scroller.options.step, 0.2);\n scroller.updatePosition(Scrollbar_correctFloat(scroller.from - range), Scrollbar_correctFloat(scroller.to - range));\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n /**\n * Get normalized (0-1) cursor position over the scrollbar\n *\n * @private\n * @function Highcharts.Scrollbar#cursorToScrollbarPosition\n *\n * @param {*} normalizedEvent\n * normalized event, with chartX and chartY values\n *\n * @return {Highcharts.Dictionary<number>}\n * Local position {chartX, chartY}\n */\n Scrollbar.prototype.cursorToScrollbarPosition = function (normalizedEvent) {\n var scroller = this,\n options = scroller.options,\n minWidthDifference = options.minWidth > scroller.calculatedWidth ?\n options.minWidth :\n 0; // `minWidth` distorts translation\n return {\n chartX: (normalizedEvent.chartX - scroller.x -\n scroller.xOffset) /\n (scroller.barWidth - minWidthDifference),\n chartY: (normalizedEvent.chartY - scroller.y -\n scroller.yOffset) /\n (scroller.barWidth - minWidthDifference)\n };\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.Scrollbar#destroy\n */\n Scrollbar.prototype.destroy = function () {\n var scroller = this,\n navigator = scroller.chart.scroller;\n // Disconnect events added in addEvents\n scroller.removeEvents();\n // Destroy properties\n [\n 'track',\n 'scrollbarRifles',\n 'scrollbar',\n 'scrollbarGroup',\n 'group'\n ].forEach(function (prop) {\n if (scroller[prop] && scroller[prop].destroy) {\n scroller[prop] = scroller[prop].destroy();\n }\n });\n // #6421, chart may have more scrollbars\n if (navigator && scroller === navigator.scrollbar) {\n navigator.scrollbar = null;\n // Destroy elements in collection\n destroyObjectProperties(navigator.scrollbarButtons);\n }\n };\n /**\n * Draw the scrollbar buttons with arrows\n *\n * @private\n * @function Highcharts.Scrollbar#drawScrollbarButton\n * @param {number} index\n * 0 is left, 1 is right\n */\n Scrollbar.prototype.drawScrollbarButton = function (index) {\n var scroller = this,\n renderer = scroller.renderer,\n scrollbarButtons = scroller.scrollbarButtons,\n options = scroller.options,\n size = scroller.size,\n group = renderer.g().add(scroller.group);\n scrollbarButtons.push(group);\n if (options.buttonsEnabled) {\n // Create a rectangle for the scrollbar button\n var rect = renderer.rect()\n .addClass('highcharts-scrollbar-button')\n .add(group);\n // Presentational attributes\n if (!scroller.chart.styledMode) {\n rect.attr({\n stroke: options.buttonBorderColor,\n 'stroke-width': options.buttonBorderWidth,\n fill: options.buttonBackgroundColor\n });\n }\n // Place the rectangle based on the rendered stroke width\n rect.attr(rect.crisp({\n x: -0.5,\n y: -0.5,\n width: size,\n height: size,\n r: options.buttonBorderRadius\n }, rect.strokeWidth()));\n // Button arrow\n var arrow = renderer\n .path(Scrollbar.swapXY([[\n 'M',\n size / 2 + (index ? -1 : 1),\n size / 2 - 3\n ],\n [\n 'L',\n size / 2 + (index ? -1 : 1),\n size / 2 + 3\n ],\n [\n 'L',\n size / 2 + (index ? 2 : -2),\n size / 2\n ]],\n options.vertical))\n .addClass('highcharts-scrollbar-arrow')\n .add(scrollbarButtons[index]);\n if (!scroller.chart.styledMode) {\n arrow.attr({\n fill: options.buttonArrowColor\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Scrollbar#init\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\n Scrollbar.prototype.init = function (renderer, options, chart) {\n var scroller = this;\n scroller.scrollbarButtons = [];\n scroller.renderer = renderer;\n scroller.userOptions = options;\n scroller.options = Scrollbar_merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);\n scroller.options.margin = Scrollbar_pick(scroller.options.margin, 10);\n scroller.chart = chart;\n // Backward compatibility\n scroller.size = Scrollbar_pick(scroller.options.size, scroller.options.height);\n // Init\n if (options.enabled) {\n scroller.render();\n scroller.addEvents();\n }\n };\n Scrollbar.prototype.mouseDownHandler = function (e) {\n var _a;\n var scroller = this,\n normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);\n scroller.chartX = mousePosition.chartX;\n scroller.chartY = mousePosition.chartY;\n scroller.initPositions = [scroller.from, scroller.to];\n scroller.grabbedCenter = true;\n };\n /**\n * Event handler for the mouse move event.\n * @private\n */\n Scrollbar.prototype.mouseMoveHandler = function (e) {\n var _a;\n var scroller = this,\n normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n options = scroller.options,\n direction = options.vertical ?\n 'chartY' : 'chartX',\n initPositions = scroller.initPositions || [];\n var scrollPosition,\n chartPosition,\n change;\n // In iOS, a mousemove event with e.pageX === 0 is fired when\n // holding the finger down in the center of the scrollbar. This\n // should be ignored.\n if (scroller.grabbedCenter &&\n // #4696, scrollbar failed on Android\n (!e.touches || e.touches[0][direction] !== 0)) {\n chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];\n scrollPosition = scroller[direction];\n change = chartPosition - scrollPosition;\n scroller.hasDragged = true;\n scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);\n if (scroller.hasDragged) {\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMType: e.type,\n DOMEvent: e\n });\n }\n }\n };\n /**\n * Event handler for the mouse up event.\n * @private\n */\n Scrollbar.prototype.mouseUpHandler = function (e) {\n var scroller = this;\n if (scroller.hasDragged) {\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMType: e.type,\n DOMEvent: e\n });\n }\n scroller.grabbedCenter =\n scroller.hasDragged =\n scroller.chartX =\n scroller.chartY = null;\n };\n /**\n * Position the scrollbar, method called from a parent with defined\n * dimensions.\n *\n * @private\n * @function Highcharts.Scrollbar#position\n * @param {number} x\n * x-position on the chart\n * @param {number} y\n * y-position on the chart\n * @param {number} width\n * width of the scrollbar\n * @param {number} height\n * height of the scrollbar\n */\n Scrollbar.prototype.position = function (x, y, width, height) {\n var scroller = this,\n options = scroller.options,\n buttonsEnabled = options.buttonsEnabled,\n _a = options.margin,\n margin = _a === void 0 ? 0 : _a,\n vertical = options.vertical,\n method = scroller.rendered ? 'animate' : 'attr';\n var xOffset = height,\n yOffset = 0;\n // Make the scrollbar visible when it is repositioned, #15763.\n scroller.group.show();\n scroller.x = x;\n scroller.y = y + this.trackBorderWidth;\n scroller.width = width; // Width with buttons\n scroller.height = height;\n scroller.xOffset = xOffset;\n scroller.yOffset = yOffset;\n // If Scrollbar is a vertical type, swap options:\n if (vertical) {\n scroller.width = scroller.yOffset = width = yOffset = scroller.size;\n scroller.xOffset = xOffset = 0;\n scroller.yOffset = yOffset = buttonsEnabled ? scroller.size : 0;\n // Width without buttons\n scroller.barWidth = height - (buttonsEnabled ? width * 2 : 0);\n scroller.x = x = x + margin;\n }\n else {\n scroller.height = height = scroller.size;\n scroller.xOffset = xOffset = buttonsEnabled ? scroller.size : 0;\n // Width without buttons\n scroller.barWidth = width - (buttonsEnabled ? height * 2 : 0);\n scroller.y = scroller.y + margin;\n }\n // Set general position for a group:\n scroller.group[method]({\n translateX: x,\n translateY: scroller.y\n });\n // Resize background/track:\n scroller.track[method]({\n width: width,\n height: height\n });\n // Move right/bottom button to its place:\n scroller.scrollbarButtons[1][method]({\n translateX: vertical ? 0 : width - xOffset,\n translateY: vertical ? height - yOffset : 0\n });\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n *\n * @private\n * @function Highcharts.Scrollbar#removeEvents\n */\n Scrollbar.prototype.removeEvents = function () {\n this._events.forEach(function (args) {\n removeEvent.apply(null, args);\n });\n this._events.length = 0;\n };\n /**\n * Render scrollbar with all required items.\n *\n * @private\n * @function Highcharts.Scrollbar#render\n */\n Scrollbar.prototype.render = function () {\n var scroller = this,\n renderer = scroller.renderer,\n options = scroller.options,\n size = scroller.size,\n styledMode = scroller.chart.styledMode,\n group = renderer.g('scrollbar')\n .attr({\n zIndex: options.zIndex\n })\n .hide() // Initially hide the scrollbar #15863\n .add();\n // Draw the scrollbar group\n scroller.group = group;\n // Draw the scrollbar track:\n scroller.track = renderer.rect()\n .addClass('highcharts-scrollbar-track')\n .attr({\n r: options.trackBorderRadius || 0,\n height: size,\n width: size\n }).add(group);\n if (!styledMode) {\n scroller.track.attr({\n fill: options.trackBackgroundColor,\n stroke: options.trackBorderColor,\n 'stroke-width': options.trackBorderWidth\n });\n }\n var trackBorderWidth = scroller.trackBorderWidth =\n scroller.track.strokeWidth();\n scroller.track.attr({\n x: -crisp(0, trackBorderWidth),\n y: -crisp(0, trackBorderWidth)\n });\n // Draw the scrollbar itself\n scroller.scrollbarGroup = renderer.g().add(group);\n scroller.scrollbar = renderer.rect()\n .addClass('highcharts-scrollbar-thumb')\n .attr({\n height: size - trackBorderWidth,\n width: size - trackBorderWidth,\n r: options.barBorderRadius || 0\n }).add(scroller.scrollbarGroup);\n scroller.scrollbarRifles = renderer\n .path(Scrollbar.swapXY([\n ['M', -3, size / 4],\n ['L', -3, 2 * size / 3],\n ['M', 0, size / 4],\n ['L', 0, 2 * size / 3],\n ['M', 3, size / 4],\n ['L', 3, 2 * size / 3]\n ], options.vertical))\n .addClass('highcharts-scrollbar-rifles')\n .add(scroller.scrollbarGroup);\n if (!styledMode) {\n scroller.scrollbar.attr({\n fill: options.barBackgroundColor,\n stroke: options.barBorderColor,\n 'stroke-width': options.barBorderWidth\n });\n scroller.scrollbarRifles.attr({\n stroke: options.rifleColor,\n 'stroke-width': 1\n });\n }\n scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();\n scroller.scrollbarGroup.translate(-crisp(0, scroller.scrollbarStrokeWidth), -crisp(0, scroller.scrollbarStrokeWidth));\n // Draw the buttons:\n scroller.drawScrollbarButton(0);\n scroller.drawScrollbarButton(1);\n };\n /**\n * Set scrollbar size, with a given scale.\n *\n * @private\n * @function Highcharts.Scrollbar#setRange\n * @param {number} from\n * scale (0-1) where bar should start\n * @param {number} to\n * scale (0-1) where bar should end\n */\n Scrollbar.prototype.setRange = function (from, to) {\n var scroller = this,\n options = scroller.options,\n vertical = options.vertical,\n minWidth = options.minWidth,\n fullWidth = scroller.barWidth,\n method = (this.rendered &&\n !this.hasDragged &&\n !(this.chart.navigator && this.chart.navigator.hasDragged)) ? 'animate' : 'attr';\n if (!Scrollbar_defined(fullWidth)) {\n return;\n }\n var toPX = fullWidth * Math.min(to, 1);\n var fromPX,\n newSize;\n from = Math.max(from, 0);\n fromPX = Math.ceil(fullWidth * from);\n scroller.calculatedWidth = newSize = Scrollbar_correctFloat(toPX - fromPX);\n // We need to recalculate position, if minWidth is used\n if (newSize < minWidth) {\n fromPX = (fullWidth - minWidth + newSize) * from;\n newSize = minWidth;\n }\n var newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);\n var newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2\n // Store current position:\n scroller.from = from;\n scroller.to = to;\n if (!vertical) {\n scroller.scrollbarGroup[method]({\n translateX: newPos\n });\n scroller.scrollbar[method]({\n width: newSize\n });\n scroller.scrollbarRifles[method]({\n translateX: newRiflesPos\n });\n scroller.scrollbarLeft = newPos;\n scroller.scrollbarTop = 0;\n }\n else {\n scroller.scrollbarGroup[method]({\n translateY: newPos\n });\n scroller.scrollbar[method]({\n height: newSize\n });\n scroller.scrollbarRifles[method]({\n translateY: newRiflesPos\n });\n scroller.scrollbarTop = newPos;\n scroller.scrollbarLeft = 0;\n }\n if (newSize <= 12) {\n scroller.scrollbarRifles.hide();\n }\n else {\n scroller.scrollbarRifles.show();\n }\n // Show or hide the scrollbar based on the showFull setting\n if (options.showFull === false) {\n if (from <= 0 && to >= 1) {\n scroller.group.hide();\n }\n else {\n scroller.group.show();\n }\n }\n scroller.rendered = true;\n };\n /**\n * Checks if the extremes should be updated in response to a scrollbar\n * change event.\n *\n * @private\n * @function Highcharts.Scrollbar#shouldUpdateExtremes\n */\n Scrollbar.prototype.shouldUpdateExtremes = function (eventType) {\n return (Scrollbar_pick(this.options.liveRedraw, (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).svg &&\n !(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice &&\n !this.chart.boosted) ||\n // Mouseup always should change extremes\n eventType === 'mouseup' ||\n eventType === 'touchend' ||\n // Internal events\n !Scrollbar_defined(eventType));\n };\n Scrollbar.prototype.trackClick = function (e) {\n var _a;\n var scroller = this;\n var normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n range = scroller.to - scroller.from,\n top = scroller.y + scroller.scrollbarTop,\n left = scroller.x + scroller.scrollbarLeft;\n if ((scroller.options.vertical && normalizedEvent.chartY > top) ||\n (!scroller.options.vertical && normalizedEvent.chartX > left)) {\n // On the top or on the left side of the track:\n scroller.updatePosition(scroller.from + range, scroller.to + range);\n }\n else {\n // On the bottom or the right side of the track:\n scroller.updatePosition(scroller.from - range, scroller.to - range);\n }\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n /**\n * Update the scrollbar with new options\n *\n * @private\n * @function Highcharts.Scrollbar#update\n * @param {Highcharts.ScrollbarOptions} options\n */\n Scrollbar.prototype.update = function (options) {\n this.destroy();\n this.init(this.chart.renderer, Scrollbar_merge(true, this.options, options), this.chart);\n };\n /**\n * Update position option in the Scrollbar, with normalized 0-1 scale\n *\n * @private\n * @function Highcharts.Scrollbar#updatePosition\n * @param {number} from\n * @param {number} to\n */\n Scrollbar.prototype.updatePosition = function (from, to) {\n if (to > 1) {\n from = Scrollbar_correctFloat(1 - Scrollbar_correctFloat(to - from));\n to = 1;\n }\n if (from < 0) {\n to = Scrollbar_correctFloat(to - from);\n from = 0;\n }\n this.from = from;\n this.to = to;\n };\n /* *\n *\n * Static Properties\n *\n * */\n Scrollbar.defaultOptions = Scrollbar_ScrollbarDefaults;\n return Scrollbar;\n}());\n/* *\n *\n * Registry\n *\n * */\nScrollbar_defaultOptions.scrollbar = Scrollbar_merge(true, Scrollbar.defaultOptions, Scrollbar_defaultOptions.scrollbar);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Scrollbar_Scrollbar = (Scrollbar);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGRenderer\"],\"commonjs\":[\"highcharts\",\"SVGRenderer\"],\"commonjs2\":[\"highcharts\",\"SVGRenderer\"],\"root\":[\"Highcharts\",\"SVGRenderer\"]}\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_ = __webpack_require__(540);\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_);\n;// ./code/es5/es-modules/Stock/Navigator/Navigator.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\nvar Navigator_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar Navigator_isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\n\n\n\nvar symbols = (highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default()).prototype.symbols;\n\nvar Navigator_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, Navigator_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, Navigator_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Navigator_destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, erase = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).erase, Navigator_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, Navigator_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, Navigator_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, Navigator_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Navigator_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, Navigator_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, Navigator_removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent, Navigator_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Finding the min or max of a set of variables where we don't know if they are\n * defined, is a pattern that is repeated several places in Highcharts. Consider\n * making this a global utility method.\n * @private\n */\nfunction numExt(extreme) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var numbers = [].filter.call(args,\n Navigator_isNumber);\n if (numbers.length) {\n return Math[extreme].apply(0, numbers);\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * The Navigator class\n *\n * @private\n * @class\n * @name Highcharts.Navigator\n *\n * @param {Highcharts.Chart} chart\n * Chart object\n */\nvar Navigator = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Navigator(chart) {\n this.isDirty = false;\n this.scrollbarHeight = 0;\n this.init(chart);\n }\n /* *\n *\n * Static Properties\n *\n * */\n Navigator.compose = function (ChartClass, AxisClass, SeriesClass) {\n Navigator_ChartNavigatorComposition.compose(ChartClass, Navigator);\n Navigator_NavigatorComposition.compose(ChartClass, AxisClass, SeriesClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n *\n * @private\n * @function Highcharts.Navigator#drawHandle\n *\n * @param {number} x\n * The x center for the handle\n *\n * @param {number} index\n * 0 for left and 1 for right\n *\n * @param {boolean|undefined} inverted\n * Flag for chart.inverted\n *\n * @param {string} verb\n * Use 'animate' or 'attr'\n */\n Navigator.prototype.drawHandle = function (x, index, inverted, verb) {\n var navigator = this,\n height = navigator.navigatorOptions.handles.height;\n // Place it\n navigator.handles[index][verb](inverted ? {\n translateX: Math.round(navigator.left + navigator.height / 2),\n translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5 - height)\n } : {\n translateX: Math.round(navigator.left + parseInt(x, 10)),\n translateY: Math.round(navigator.top + navigator.height / 2 - height / 2 - 1)\n });\n };\n /**\n * Render outline around the zoomed range\n *\n * @private\n * @function Highcharts.Navigator#drawOutline\n *\n * @param {number} zoomedMin\n * in pixels position where zoomed range starts\n *\n * @param {number} zoomedMax\n * in pixels position where zoomed range ends\n *\n * @param {boolean|undefined} inverted\n * flag if chart is inverted\n *\n * @param {string} verb\n * use 'animate' or 'attr'\n */\n Navigator.prototype.drawOutline = function (zoomedMin, zoomedMax, inverted, verb) {\n var navigator = this, maskInside = navigator.navigatorOptions.maskInside, outlineWidth = navigator.outline.strokeWidth(), halfOutline = outlineWidth / 2, outlineCorrection = (outlineWidth % 2) / 2, // #5800\n scrollButtonSize = navigator.scrollButtonSize, navigatorSize = navigator.size, navigatorTop = navigator.top, height = navigator.height, lineTop = navigatorTop - halfOutline, lineBtm = navigatorTop + height;\n var left = navigator.left,\n verticalMin,\n path;\n if (inverted) {\n verticalMin = navigatorTop + zoomedMax + outlineCorrection;\n zoomedMax = navigatorTop + zoomedMin + outlineCorrection;\n path = [\n [\n 'M',\n left + height,\n navigatorTop - scrollButtonSize - outlineCorrection\n ],\n // Top right of zoomed range\n ['L', left + height, verticalMin],\n ['L', left, verticalMin], // Top left of z.r.\n ['M', left, zoomedMax], // Bottom left of z.r.\n ['L', left + height, zoomedMax], // Bottom right of z.r.\n [\n 'L',\n left + height,\n navigatorTop + navigatorSize + scrollButtonSize\n ]\n ];\n if (maskInside) {\n path.push(\n // Upper left of zoomed range\n ['M', left + height, verticalMin - halfOutline], \n // Upper right of z.r.\n [\n 'L',\n left + height,\n zoomedMax + halfOutline\n ]);\n }\n }\n else {\n left -= scrollButtonSize;\n zoomedMin += left + scrollButtonSize - outlineCorrection;\n zoomedMax += left + scrollButtonSize - outlineCorrection;\n path = [\n // Left\n ['M', left, lineTop],\n // Upper left of zoomed range\n ['L', zoomedMin, lineTop],\n // Lower left of z.r.\n ['L', zoomedMin, lineBtm],\n // Lower right of z.r.\n ['M', zoomedMax, lineBtm],\n // Upper right of z.r.\n ['L', zoomedMax, lineTop],\n // Right\n [\n 'L',\n left + navigatorSize + scrollButtonSize * 2,\n lineTop\n ]\n ];\n if (maskInside) {\n path.push(\n // Upper left of zoomed range\n ['M', zoomedMin - halfOutline, lineTop], \n // Upper right of z.r.\n ['L', zoomedMax + halfOutline, lineTop]);\n }\n }\n navigator.outline[verb]({\n d: path\n });\n };\n /**\n * Render outline around the zoomed range\n *\n * @private\n * @function Highcharts.Navigator#drawMasks\n *\n * @param {number} zoomedMin\n * in pixels position where zoomed range starts\n *\n * @param {number} zoomedMax\n * in pixels position where zoomed range ends\n *\n * @param {boolean|undefined} inverted\n * flag if chart is inverted\n *\n * @param {string} verb\n * use 'animate' or 'attr'\n */\n Navigator.prototype.drawMasks = function (zoomedMin, zoomedMax, inverted, verb) {\n var navigator = this,\n left = navigator.left,\n top = navigator.top,\n navigatorHeight = navigator.height;\n var height,\n width,\n x,\n y;\n // Determine rectangle position & size\n // According to (non)inverted position:\n if (inverted) {\n x = [left, left, left];\n y = [top, top + zoomedMin, top + zoomedMax];\n width = [navigatorHeight, navigatorHeight, navigatorHeight];\n height = [\n zoomedMin,\n zoomedMax - zoomedMin,\n navigator.size - zoomedMax\n ];\n }\n else {\n x = [left, left + zoomedMin, left + zoomedMax];\n y = [top, top, top];\n width = [\n zoomedMin,\n zoomedMax - zoomedMin,\n navigator.size - zoomedMax\n ];\n height = [navigatorHeight, navigatorHeight, navigatorHeight];\n }\n navigator.shades.forEach(function (shade, i) {\n shade[verb]({\n x: x[i],\n y: y[i],\n width: width[i],\n height: height[i]\n });\n });\n };\n /**\n * Generate and update DOM elements for a navigator:\n *\n * - main navigator group\n *\n * - all shades\n *\n * - outline\n *\n * - handles\n *\n * @private\n * @function Highcharts.Navigator#renderElements\n */\n Navigator.prototype.renderElements = function () {\n var _a,\n _b;\n var navigator = this,\n navigatorOptions = navigator.navigatorOptions,\n maskInside = navigatorOptions.maskInside,\n chart = navigator.chart,\n inverted = chart.inverted,\n renderer = chart.renderer,\n mouseCursor = {\n cursor: inverted ? 'ns-resize' : 'ew-resize'\n }, \n // Create the main navigator group\n navigatorGroup = (_a = navigator.navigatorGroup) !== null && _a !== void 0 ? _a : (navigator.navigatorGroup = renderer\n .g('navigator')\n .attr({\n zIndex: 8,\n visibility: 'hidden'\n })\n .add());\n // Create masks, each mask will get events and fill:\n [\n !maskInside,\n maskInside,\n !maskInside\n ].forEach(function (hasMask, index) {\n var _a;\n var shade = (_a = navigator.shades[index]) !== null && _a !== void 0 ? _a : (navigator.shades[index] = renderer.rect()\n .addClass('highcharts-navigator-mask' +\n (index === 1 ? '-inside' : '-outside'))\n .add(navigatorGroup));\n if (!chart.styledMode) {\n shade.attr({\n fill: hasMask ? navigatorOptions.maskFill : 'rgba(0,0,0,0)'\n });\n if (index === 1) {\n shade.css(mouseCursor);\n }\n }\n });\n // Create the outline:\n if (!navigator.outline) {\n navigator.outline = renderer.path()\n .addClass('highcharts-navigator-outline')\n .add(navigatorGroup);\n }\n if (!chart.styledMode) {\n navigator.outline.attr({\n 'stroke-width': navigatorOptions.outlineWidth,\n stroke: navigatorOptions.outlineColor\n });\n }\n // Create the handlers:\n if ((_b = navigatorOptions.handles) === null || _b === void 0 ? void 0 : _b.enabled) {\n var handlesOptions_1 = navigatorOptions.handles,\n height_1 = handlesOptions_1.height,\n width_1 = handlesOptions_1.width;\n [0, 1].forEach(function (index) {\n var _a;\n var symbolName = handlesOptions_1.symbols[index];\n if (!navigator.handles[index] ||\n navigator.handles[index].symbolUrl !== symbolName) {\n // Generate symbol from scratch if we're dealing with an URL\n (_a = navigator.handles[index]) === null || _a === void 0 ? void 0 : _a.destroy();\n navigator.handles[index] = renderer.symbol(symbolName, -width_1 / 2 - 1, 0, width_1, height_1, handlesOptions_1);\n // Z index is 6 for right handle, 7 for left. Can't be 10,\n // because of the tooltip in inverted chart (#2908).\n navigator.handles[index].attr({ zIndex: 7 - index })\n .addClass('highcharts-navigator-handle ' +\n 'highcharts-navigator-handle-' +\n ['left', 'right'][index]).add(navigatorGroup);\n navigator.addMouseEvents();\n // If the navigator symbol changed, update its path and name\n }\n else if (!navigator.handles[index].isImg &&\n navigator.handles[index].symbolName !== symbolName) {\n var symbolFn = symbols[symbolName],\n path = symbolFn.call(symbols, -width_1 / 2 - 1, 0,\n width_1,\n height_1);\n navigator.handles[index].attr({\n d: path\n });\n navigator.handles[index].symbolName = symbolName;\n }\n if (chart.inverted) {\n navigator.handles[index].attr({\n rotation: 90,\n rotationOriginX: Math.floor(-width_1 / 2),\n rotationOriginY: (height_1 + width_1) / 2\n });\n }\n if (!chart.styledMode) {\n navigator.handles[index]\n .attr({\n fill: handlesOptions_1.backgroundColor,\n stroke: handlesOptions_1.borderColor,\n 'stroke-width': handlesOptions_1.lineWidth,\n width: handlesOptions_1.width,\n height: handlesOptions_1.height,\n x: -width_1 / 2 - 1,\n y: 0\n })\n .css(mouseCursor);\n }\n });\n }\n };\n /**\n * Update navigator\n *\n * @private\n * @function Highcharts.Navigator#update\n *\n * @param {Highcharts.NavigatorOptions} options\n * Options to merge in when updating navigator\n */\n Navigator.prototype.update = function (options, redraw) {\n var _a,\n _b;\n var _this = this;\n var _c,\n _d;\n if (redraw === void 0) { redraw = false; }\n var chart = this.chart,\n invertedUpdate = chart.options.chart.inverted !==\n ((_c = chart.scrollbar) === null || _c === void 0 ? void 0 : _c.options.vertical);\n Navigator_merge(true, chart.options.navigator, options);\n this.navigatorOptions = chart.options.navigator || {};\n this.setOpposite();\n // Revert to destroy/init for navigator/scrollbar enabled toggle\n if (Navigator_defined(options.enabled) || invertedUpdate) {\n this.destroy();\n this.navigatorEnabled = options.enabled || this.navigatorEnabled;\n return this.init(chart);\n }\n if (this.navigatorEnabled) {\n this.isDirty = true;\n if (options.adaptToUpdatedData === false) {\n this.baseSeries.forEach(function (series) {\n Navigator_removeEvent(series, 'updatedData', _this.updatedDataHandler);\n }, this);\n }\n if (options.adaptToUpdatedData) {\n this.baseSeries.forEach(function (series) {\n series.eventsToUnbind.push(Navigator_addEvent(series, 'updatedData', _this.updatedDataHandler));\n }, this);\n }\n // Update navigator series\n if (options.series || options.baseSeries) {\n this.setBaseSeries(void 0, false);\n }\n // Update navigator axis\n if (options.height || options.xAxis || options.yAxis) {\n this.height = (_d = options.height) !== null && _d !== void 0 ? _d : this.height;\n var offsets = this.getXAxisOffsets();\n this.xAxis.update(__assign(__assign({}, options.xAxis), (_a = { offsets: offsets }, _a[chart.inverted ? 'width' : 'height'] = this.height, _a[chart.inverted ? 'height' : 'width'] = void 0, _a)), false);\n this.yAxis.update(__assign(__assign({}, options.yAxis), (_b = {}, _b[chart.inverted ? 'width' : 'height'] = this.height, _b)), false);\n }\n }\n if (redraw) {\n chart.redraw();\n }\n };\n /**\n * Render the navigator\n *\n * @private\n * @function Highcharts.Navigator#render\n * @param {number} min\n * X axis value minimum\n * @param {number} max\n * X axis value maximum\n * @param {number} [pxMin]\n * Pixel value minimum\n * @param {number} [pxMax]\n * Pixel value maximum\n */\n Navigator.prototype.render = function (min, max, pxMin, pxMax) {\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n pointRange = xAxis.pointRange || 0,\n scrollbarXAxis = xAxis.navigatorAxis.fake ? chart.xAxis[0] : xAxis,\n navigatorEnabled = navigator.navigatorEnabled,\n rendered = navigator.rendered,\n inverted = chart.inverted,\n minRange = chart.xAxis[0].minRange,\n maxRange = chart.xAxis[0].options.maxRange,\n scrollButtonSize = navigator.scrollButtonSize;\n var navigatorWidth,\n scrollbarLeft,\n scrollbarTop,\n scrollbarHeight = navigator.scrollbarHeight,\n navigatorSize,\n verb;\n // Don't redraw while moving the handles (#4703).\n if (this.hasDragged && !Navigator_defined(pxMin)) {\n return;\n }\n if (this.isDirty) {\n // Update DOM navigator elements\n this.renderElements();\n }\n min = Navigator_correctFloat(min - pointRange / 2);\n max = Navigator_correctFloat(max + pointRange / 2);\n // Don't render the navigator until we have data (#486, #4202, #5172).\n if (!Navigator_isNumber(min) || !Navigator_isNumber(max)) {\n // However, if navigator was already rendered, we may need to resize\n // it. For example hidden series, but visible navigator (#6022).\n if (rendered) {\n pxMin = 0;\n pxMax = Navigator_pick(xAxis.width, scrollbarXAxis.width);\n }\n else {\n return;\n }\n }\n navigator.left = Navigator_pick(xAxis.left, \n // In case of scrollbar only, without navigator\n chart.plotLeft + scrollButtonSize +\n (inverted ? chart.plotWidth : 0));\n var zoomedMax = navigator.size = navigatorSize = Navigator_pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -\n 2 * scrollButtonSize);\n if (inverted) {\n navigatorWidth = scrollbarHeight;\n }\n else {\n navigatorWidth = navigatorSize + 2 * scrollButtonSize;\n }\n // Get the pixel position of the handles\n pxMin = Navigator_pick(pxMin, xAxis.toPixels(min, true));\n pxMax = Navigator_pick(pxMax, xAxis.toPixels(max, true));\n // Verify (#1851, #2238)\n if (!Navigator_isNumber(pxMin) || Math.abs(pxMin) === Infinity) {\n pxMin = 0;\n pxMax = navigatorWidth;\n }\n // Are we below the minRange? (#2618, #6191)\n var newMin = xAxis.toValue(pxMin,\n true),\n newMax = xAxis.toValue(pxMax,\n true),\n currentRange = Math.abs(Navigator_correctFloat(newMax - newMin));\n if (currentRange < minRange) {\n if (this.grabbedLeft) {\n pxMin = xAxis.toPixels(newMax - minRange - pointRange, true);\n }\n else if (this.grabbedRight) {\n pxMax = xAxis.toPixels(newMin + minRange + pointRange, true);\n }\n }\n else if (Navigator_defined(maxRange) &&\n Navigator_correctFloat(currentRange - pointRange) > maxRange) {\n if (this.grabbedLeft) {\n pxMin = xAxis.toPixels(newMax - maxRange - pointRange, true);\n }\n else if (this.grabbedRight) {\n pxMax = xAxis.toPixels(newMin + maxRange + pointRange, true);\n }\n }\n // Handles are allowed to cross, but never exceed the plot area\n navigator.zoomedMax = clamp(Math.max(pxMin, pxMax), 0, zoomedMax);\n navigator.zoomedMin = clamp(navigator.fixedWidth ?\n navigator.zoomedMax - navigator.fixedWidth :\n Math.min(pxMin, pxMax), 0, zoomedMax);\n navigator.range = navigator.zoomedMax - navigator.zoomedMin;\n zoomedMax = Math.round(navigator.zoomedMax);\n var zoomedMin = Math.round(navigator.zoomedMin);\n if (navigatorEnabled) {\n navigator.navigatorGroup.attr({\n visibility: 'inherit'\n });\n // Place elements\n verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';\n navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n if (navigator.navigatorOptions.handles.enabled) {\n navigator.drawHandle(zoomedMin, 0, inverted, verb);\n navigator.drawHandle(zoomedMax, 1, inverted, verb);\n }\n }\n if (navigator.scrollbar) {\n if (inverted) {\n scrollbarTop = navigator.top - scrollButtonSize;\n scrollbarLeft = navigator.left - scrollbarHeight +\n (navigatorEnabled || !scrollbarXAxis.opposite ? 0 :\n // Multiple axes has offsets:\n (scrollbarXAxis.titleOffset || 0) +\n // Self margin from the axis.title\n scrollbarXAxis.axisTitleMargin);\n scrollbarHeight = navigatorSize + 2 * scrollButtonSize;\n }\n else {\n scrollbarTop = navigator.top + (navigatorEnabled ?\n navigator.height :\n -scrollbarHeight);\n scrollbarLeft = navigator.left - scrollButtonSize;\n }\n // Reposition scrollbar\n navigator.scrollbar.position(scrollbarLeft, scrollbarTop, navigatorWidth, scrollbarHeight);\n // Keep scale 0-1\n navigator.scrollbar.setRange(\n // Use real value, not rounded because range can be very small\n // (#1716)\n navigator.zoomedMin / (navigatorSize || 1), navigator.zoomedMax / (navigatorSize || 1));\n }\n navigator.rendered = true;\n this.isDirty = false;\n Navigator_fireEvent(this, 'afterRender');\n };\n /**\n * Set up the mouse and touch events for the navigator\n *\n * @private\n * @function Highcharts.Navigator#addMouseEvents\n */\n Navigator.prototype.addMouseEvents = function () {\n var navigator = this,\n chart = navigator.chart,\n container = chart.container;\n var eventsToUnbind = [],\n mouseMoveHandler,\n mouseUpHandler;\n /**\n * Create mouse events' handlers.\n * Make them as separate functions to enable wrapping them:\n */\n navigator.mouseMoveHandler = mouseMoveHandler = function (e) {\n navigator.onMouseMove(e);\n };\n navigator.mouseUpHandler = mouseUpHandler = function (e) {\n navigator.onMouseUp(e);\n };\n // Add shades and handles mousedown events\n eventsToUnbind = navigator.getPartsEvents('mousedown');\n eventsToUnbind.push(\n // Add mouse move and mouseup events. These are bind to doc/div,\n // because Navigator.grabbedSomething flags are stored in mousedown\n // events\n Navigator_addEvent(chart.renderTo, 'mousemove', mouseMoveHandler), Navigator_addEvent(container.ownerDocument, 'mouseup', mouseUpHandler), \n // Touch events\n Navigator_addEvent(chart.renderTo, 'touchmove', mouseMoveHandler), Navigator_addEvent(container.ownerDocument, 'touchend', mouseUpHandler));\n eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));\n navigator.eventsToUnbind = eventsToUnbind;\n // Data events\n if (navigator.series && navigator.series[0]) {\n eventsToUnbind.push(Navigator_addEvent(navigator.series[0].xAxis, 'foundExtremes', function () {\n chart.navigator.modifyNavigatorAxisExtremes();\n }));\n }\n };\n /**\n * Generate events for handles and masks\n *\n * @private\n * @function Highcharts.Navigator#getPartsEvents\n *\n * @param {string} eventName\n * Event name handler, 'mousedown' or 'touchstart'\n *\n * @return {Array<Function>}\n * An array of functions to remove navigator functions from the\n * events again.\n */\n Navigator.prototype.getPartsEvents = function (eventName) {\n var navigator = this,\n events = [];\n ['shades', 'handles'].forEach(function (name) {\n navigator[name].forEach(function (navigatorItem, index) {\n events.push(Navigator_addEvent(navigatorItem.element, eventName, function (e) {\n navigator[name + 'Mousedown'](e, index);\n }));\n });\n });\n return events;\n };\n /**\n * Mousedown on a shaded mask, either:\n *\n * - will be stored for future drag&drop\n *\n * - will directly shift to a new range\n *\n * @private\n * @function Highcharts.Navigator#shadesMousedown\n *\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n *\n * @param {number} index\n * Index of a mask in Navigator.shades array\n */\n Navigator.prototype.shadesMousedown = function (e, index) {\n var _a;\n e = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n zoomedMin = navigator.zoomedMin,\n navigatorSize = navigator.size,\n range = navigator.range;\n var navigatorPosition = navigator.left,\n chartX = e.chartX,\n fixedMax,\n fixedMin,\n ext,\n left;\n // For inverted chart, swap some options:\n if (chart.inverted) {\n chartX = e.chartY;\n navigatorPosition = navigator.top;\n }\n if (index === 1) {\n // Store information for drag&drop\n navigator.grabbedCenter = chartX;\n navigator.fixedWidth = range;\n navigator.dragOffset = chartX - zoomedMin;\n }\n else {\n // Shift the range by clicking on shaded areas\n left = chartX - navigatorPosition - range / 2;\n if (index === 0) {\n left = Math.max(0, left);\n }\n else if (index === 2 && left + range >= navigatorSize) {\n left = navigatorSize - range;\n if (navigator.reversedExtremes) {\n // #7713\n left -= range;\n fixedMin = navigator.getUnionExtremes().dataMin;\n }\n else {\n // #2293, #3543\n fixedMax = navigator.getUnionExtremes().dataMax;\n }\n }\n if (left !== zoomedMin) { // It has actually moved\n navigator.fixedWidth = range; // #1370\n ext = xAxis.navigatorAxis.toFixedRange(left, left + range, fixedMin, fixedMax);\n if (Navigator_defined(ext.min)) { // #7411\n Navigator_fireEvent(this, 'setRange', {\n min: Math.min(ext.min, ext.max),\n max: Math.max(ext.min, ext.max),\n redraw: true,\n eventArguments: {\n trigger: 'navigator'\n }\n });\n }\n }\n }\n };\n /**\n * Mousedown on a handle mask.\n * Will store necessary information for drag&drop.\n *\n * @private\n * @function Highcharts.Navigator#handlesMousedown\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n * @param {number} index\n * Index of a handle in Navigator.handles array\n */\n Navigator.prototype.handlesMousedown = function (e, index) {\n var _a;\n e = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n var navigator = this,\n chart = navigator.chart,\n baseXAxis = chart.xAxis[0], \n // For reversed axes, min and max are changed,\n // so the other extreme should be stored\n reverse = navigator.reversedExtremes;\n if (index === 0) {\n // Grab the left handle\n navigator.grabbedLeft = true;\n navigator.otherHandlePos = navigator.zoomedMax;\n navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;\n }\n else {\n // Grab the right handle\n navigator.grabbedRight = true;\n navigator.otherHandlePos = navigator.zoomedMin;\n navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;\n }\n chart.setFixedRange(void 0);\n };\n /**\n * Mouse move event based on x/y mouse position.\n *\n * @private\n * @function Highcharts.Navigator#onMouseMove\n *\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n */\n Navigator.prototype.onMouseMove = function (e) {\n var _a;\n var navigator = this,\n chart = navigator.chart,\n navigatorSize = navigator.navigatorSize,\n range = navigator.range,\n dragOffset = navigator.dragOffset,\n inverted = chart.inverted;\n var left = navigator.left,\n chartX;\n // In iOS, a mousemove event with e.pageX === 0 is fired when holding\n // the finger down in the center of the scrollbar. This should be\n // ignored.\n if (!e.touches || e.touches[0].pageX !== 0) { // #4696\n e = ((_a = chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n chartX = e.chartX;\n // Swap some options for inverted chart\n if (inverted) {\n left = navigator.top;\n chartX = e.chartY;\n }\n // Drag left handle or top handle\n if (navigator.grabbedLeft) {\n navigator.hasDragged = true;\n navigator.render(0, 0, chartX - left, navigator.otherHandlePos);\n // Drag right handle or bottom handle\n }\n else if (navigator.grabbedRight) {\n navigator.hasDragged = true;\n navigator.render(0, 0, navigator.otherHandlePos, chartX - left);\n // Drag scrollbar or open area in navigator\n }\n else if (navigator.grabbedCenter) {\n navigator.hasDragged = true;\n if (chartX < dragOffset) { // Outside left\n chartX = dragOffset;\n // Outside right\n }\n else if (chartX >\n navigatorSize + dragOffset - range) {\n chartX = navigatorSize + dragOffset - range;\n }\n navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);\n }\n if (navigator.hasDragged &&\n navigator.scrollbar &&\n Navigator_pick(navigator.scrollbar.options.liveRedraw, \n // By default, don't run live redraw on touch\n // devices or if the chart is in boost.\n !Navigator_isTouchDevice &&\n !this.chart.boosted)) {\n e.DOMType = e.type;\n setTimeout(function () {\n navigator.onMouseUp(e);\n }, 0);\n }\n }\n };\n /**\n * Mouse up event based on x/y mouse position.\n *\n * @private\n * @function Highcharts.Navigator#onMouseUp\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n */\n Navigator.prototype.onMouseUp = function (e) {\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n scrollbar = navigator.scrollbar,\n DOMEvent = e.DOMEvent || e,\n inverted = chart.inverted,\n verb = navigator.rendered && !navigator.hasDragged ?\n 'animate' : 'attr';\n var zoomedMax,\n zoomedMin,\n unionExtremes,\n fixedMin,\n fixedMax,\n ext;\n if (\n // MouseUp is called for both, navigator and scrollbar (that order),\n // which causes calling afterSetExtremes twice. Prevent first call\n // by checking if scrollbar is going to set new extremes (#6334)\n (navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||\n e.trigger === 'scrollbar') {\n unionExtremes = navigator.getUnionExtremes();\n // When dragging one handle, make sure the other one doesn't change\n if (navigator.zoomedMin === navigator.otherHandlePos) {\n fixedMin = navigator.fixedExtreme;\n }\n else if (navigator.zoomedMax === navigator.otherHandlePos) {\n fixedMax = navigator.fixedExtreme;\n }\n // Snap to right edge (#4076)\n if (navigator.zoomedMax === navigator.size) {\n fixedMax = navigator.reversedExtremes ?\n unionExtremes.dataMin :\n unionExtremes.dataMax;\n }\n // Snap to left edge (#7576)\n if (navigator.zoomedMin === 0) {\n fixedMin = navigator.reversedExtremes ?\n unionExtremes.dataMax :\n unionExtremes.dataMin;\n }\n ext = xAxis.navigatorAxis.toFixedRange(navigator.zoomedMin, navigator.zoomedMax, fixedMin, fixedMax);\n if (Navigator_defined(ext.min)) {\n Navigator_fireEvent(this, 'setRange', {\n min: Math.min(ext.min, ext.max),\n max: Math.max(ext.min, ext.max),\n redraw: true,\n animation: navigator.hasDragged ? false : null,\n eventArguments: {\n trigger: 'navigator',\n triggerOp: 'navigator-drag',\n DOMEvent: DOMEvent // #1838\n }\n });\n }\n }\n if (e.DOMType !== 'mousemove' &&\n e.DOMType !== 'touchmove') {\n navigator.grabbedLeft = navigator.grabbedRight =\n navigator.grabbedCenter = navigator.fixedWidth =\n navigator.fixedExtreme = navigator.otherHandlePos =\n navigator.hasDragged = navigator.dragOffset = null;\n }\n // Update position of navigator shades, outline and handles (#12573)\n if (navigator.navigatorEnabled &&\n Navigator_isNumber(navigator.zoomedMin) &&\n Navigator_isNumber(navigator.zoomedMax)) {\n zoomedMin = Math.round(navigator.zoomedMin);\n zoomedMax = Math.round(navigator.zoomedMax);\n if (navigator.shades) {\n navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n }\n if (navigator.outline) {\n navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n }\n if (navigator.navigatorOptions.handles.enabled &&\n Object.keys(navigator.handles).length ===\n navigator.handles.length) {\n navigator.drawHandle(zoomedMin, 0, inverted, verb);\n navigator.drawHandle(zoomedMax, 1, inverted, verb);\n }\n }\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n *\n * @private\n * @function Highcharts.Navigator#removeEvents\n */\n Navigator.prototype.removeEvents = function () {\n if (this.eventsToUnbind) {\n this.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n this.eventsToUnbind = void 0;\n }\n this.removeBaseSeriesEvents();\n };\n /**\n * Remove data events.\n *\n * @private\n * @function Highcharts.Navigator#removeBaseSeriesEvents\n */\n Navigator.prototype.removeBaseSeriesEvents = function () {\n var baseSeries = this.baseSeries || [];\n if (this.navigatorEnabled && baseSeries[0]) {\n if (this.navigatorOptions.adaptToUpdatedData !== false) {\n baseSeries.forEach(function (series) {\n Navigator_removeEvent(series, 'updatedData', this.updatedDataHandler);\n }, this);\n }\n // We only listen for extremes-events on the first baseSeries\n if (baseSeries[0].xAxis) {\n Navigator_removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);\n }\n }\n };\n /**\n * Calculate the navigator xAxis offsets\n *\n * @private\n */\n Navigator.prototype.getXAxisOffsets = function () {\n return (this.chart.inverted ?\n [this.scrollButtonSize, 0, -this.scrollButtonSize, 0] :\n [0, -this.scrollButtonSize, 0, this.scrollButtonSize]);\n };\n /**\n * Initialize the Navigator object\n *\n * @private\n * @function Highcharts.Navigator#init\n */\n Navigator.prototype.init = function (chart) {\n var _a;\n var chartOptions = chart.options,\n navigatorOptions = chartOptions.navigator || {},\n navigatorEnabled = navigatorOptions.enabled,\n scrollbarOptions = chartOptions.scrollbar || {},\n scrollbarEnabled = scrollbarOptions.enabled,\n height = navigatorEnabled && navigatorOptions.height || 0,\n scrollbarHeight = scrollbarEnabled && scrollbarOptions.height || 0,\n scrollButtonSize = scrollbarOptions.buttonsEnabled && scrollbarHeight || 0;\n this.handles = [];\n this.shades = [];\n this.chart = chart;\n this.setBaseSeries();\n this.height = height;\n this.scrollbarHeight = scrollbarHeight;\n this.scrollButtonSize = scrollButtonSize;\n this.scrollbarEnabled = scrollbarEnabled;\n this.navigatorEnabled = navigatorEnabled;\n this.navigatorOptions = navigatorOptions;\n this.scrollbarOptions = scrollbarOptions;\n this.setOpposite();\n var navigator = this,\n baseSeries = navigator.baseSeries,\n xAxisIndex = chart.xAxis.length,\n yAxisIndex = chart.yAxis.length,\n baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis ||\n chart.xAxis[0] || { options: {} };\n chart.isDirtyBox = true;\n if (navigator.navigatorEnabled) {\n var offsets = this.getXAxisOffsets();\n // An x axis is required for scrollbar also\n navigator.xAxis = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(chart, Navigator_merge({\n // Inherit base xAxis' break, ordinal options and overscroll\n breaks: baseXaxis.options.breaks,\n ordinal: baseXaxis.options.ordinal,\n overscroll: baseXaxis.options.overscroll\n }, navigatorOptions.xAxis, {\n type: 'datetime',\n yAxis: (_a = navigatorOptions.yAxis) === null || _a === void 0 ? void 0 : _a.id,\n index: xAxisIndex,\n isInternal: true,\n offset: 0,\n keepOrdinalPadding: true, // #2436\n startOnTick: false,\n endOnTick: false,\n // Inherit base xAxis' padding when ordinal is false (#16915).\n minPadding: baseXaxis.options.ordinal ? 0 :\n baseXaxis.options.minPadding,\n maxPadding: baseXaxis.options.ordinal ? 0 :\n baseXaxis.options.maxPadding,\n zoomEnabled: false\n }, chart.inverted ? {\n offsets: offsets,\n width: height\n } : {\n offsets: offsets,\n height: height\n }), 'xAxis');\n navigator.yAxis = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(chart, Navigator_merge(navigatorOptions.yAxis, {\n alignTicks: false,\n offset: 0,\n index: yAxisIndex,\n isInternal: true,\n reversed: Navigator_pick((navigatorOptions.yAxis &&\n navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false), // #14060\n zoomEnabled: false\n }, chart.inverted ? {\n width: height\n } : {\n height: height\n }), 'yAxis');\n // If we have a base series, initialize the navigator series\n if (baseSeries || navigatorOptions.series.data) {\n navigator.updateNavigatorSeries(false);\n // If not, set up an event to listen for added series\n }\n else if (chart.series.length === 0) {\n navigator.unbindRedraw = Navigator_addEvent(chart, 'beforeRedraw', function () {\n // We've got one, now add it as base\n if (chart.series.length > 0 && !navigator.series) {\n navigator.setBaseSeries();\n navigator.unbindRedraw(); // Reset\n }\n });\n }\n navigator.reversedExtremes = (chart.inverted && !navigator.xAxis.reversed) || (!chart.inverted && navigator.xAxis.reversed);\n // Render items, so we can bind events to them:\n navigator.renderElements();\n // Add mouse events\n navigator.addMouseEvents();\n // In case of scrollbar only, fake an x axis to get translation\n }\n else {\n navigator.xAxis = {\n chart: chart,\n navigatorAxis: {\n fake: true\n },\n translate: function (value, reverse) {\n var axis = chart.xAxis[0], ext = axis.getExtremes(), scrollTrackWidth = axis.len - 2 * scrollButtonSize, min = numExt('min', axis.options.min, ext.dataMin), valueRange = numExt('max', axis.options.max, ext.dataMax) - min;\n return reverse ?\n // From pixel to value\n (value * valueRange / scrollTrackWidth) + min :\n // From value to pixel\n scrollTrackWidth * (value - min) / valueRange;\n },\n toPixels: function (value) {\n return this.translate(value);\n },\n toValue: function (value) {\n return this.translate(value, true);\n }\n };\n navigator.xAxis.navigatorAxis.axis = navigator.xAxis;\n navigator.xAxis.navigatorAxis.toFixedRange = (NavigatorAxisComposition.prototype.toFixedRange.bind(navigator.xAxis.navigatorAxis));\n }\n // Initialize the scrollbar\n if (chart.options.scrollbar.enabled) {\n var options = Navigator_merge(chart.options.scrollbar, { vertical: chart.inverted });\n if (!Navigator_isNumber(options.margin) && navigator.navigatorEnabled) {\n options.margin = chart.inverted ? -3 : 3;\n }\n chart.scrollbar = navigator.scrollbar = new Scrollbar_Scrollbar(chart.renderer, options, chart);\n Navigator_addEvent(navigator.scrollbar, 'changed', function (e) {\n var range = navigator.size,\n to = range * this.to,\n from = range * this.from;\n navigator.hasDragged = navigator.scrollbar.hasDragged;\n navigator.render(0, 0, from, to);\n if (this.shouldUpdateExtremes(e.DOMType)) {\n setTimeout(function () {\n navigator.onMouseUp(e);\n });\n }\n });\n }\n // Add data events\n navigator.addBaseSeriesEvents();\n // Add redraw events\n navigator.addChartEvents();\n };\n /**\n * Set the opposite property on navigator\n *\n * @private\n */\n Navigator.prototype.setOpposite = function () {\n var navigatorOptions = this.navigatorOptions,\n navigatorEnabled = this.navigatorEnabled,\n chart = this.chart;\n this.opposite = Navigator_pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262\n };\n /**\n * Get the union data extremes of the chart - the outer data extremes of the\n * base X axis and the navigator axis.\n *\n * @private\n * @function Highcharts.Navigator#getUnionExtremes\n */\n Navigator.prototype.getUnionExtremes = function (returnFalseOnNoBaseSeries) {\n var baseAxis = this.chart.xAxis[0],\n time = this.chart.time,\n navAxis = this.xAxis,\n navAxisOptions = navAxis.options,\n baseAxisOptions = baseAxis.options;\n var ret;\n if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {\n ret = {\n dataMin: Navigator_pick(// #4053\n time.parse(navAxisOptions === null || navAxisOptions === void 0 ? void 0 : navAxisOptions.min), numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),\n dataMax: Navigator_pick(time.parse(navAxisOptions === null || navAxisOptions === void 0 ? void 0 : navAxisOptions.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))\n };\n }\n return ret;\n };\n /**\n * Set the base series and update the navigator series from this. With a bit\n * of modification we should be able to make this an API method to be called\n * from the outside\n *\n * @private\n * @function Highcharts.Navigator#setBaseSeries\n * @param {Highcharts.SeriesOptionsType} [baseSeriesOptions]\n * Additional series options for a navigator\n * @param {boolean} [redraw]\n * Whether to redraw after update.\n */\n Navigator.prototype.setBaseSeries = function (baseSeriesOptions, redraw) {\n var chart = this.chart,\n baseSeries = this.baseSeries = [];\n baseSeriesOptions = (baseSeriesOptions ||\n chart.options && chart.options.navigator.baseSeries ||\n (chart.series.length ?\n // Find the first non-navigator series (#8430)\n find(chart.series, function (s) { return (!s.options.isInternal); }).index :\n 0));\n // Iterate through series and add the ones that should be shown in\n // navigator.\n (chart.series || []).forEach(function (series, i) {\n if (\n // Don't include existing nav series\n !series.options.isInternal &&\n (series.options.showInNavigator ||\n (i === baseSeriesOptions ||\n series.options.id === baseSeriesOptions) &&\n series.options.showInNavigator !== false)) {\n baseSeries.push(series);\n }\n });\n // When run after render, this.xAxis already exists\n if (this.xAxis && !this.xAxis.navigatorAxis.fake) {\n this.updateNavigatorSeries(true, redraw);\n }\n };\n /**\n * Update series in the navigator from baseSeries, adding new if does not\n * exist.\n *\n * @private\n * @function Highcharts.Navigator.updateNavigatorSeries\n */\n Navigator.prototype.updateNavigatorSeries = function (addEvents, redraw) {\n var _a,\n _b;\n var navigator = this,\n chart = navigator.chart,\n baseSeries = navigator.baseSeries,\n navSeriesMixin = {\n enableMouseTracking: false,\n index: null, // #6162\n linkedTo: null, // #6734\n group: 'nav', // For columns\n padXAxis: false,\n xAxis: (_a = this.navigatorOptions.xAxis) === null || _a === void 0 ? void 0 : _a.id,\n yAxis: (_b = this.navigatorOptions.yAxis) === null || _b === void 0 ? void 0 : _b.id,\n showInLegend: false,\n stacking: void 0, // #4823\n isInternal: true,\n states: {\n inactive: {\n opacity: 1\n }\n }\n }, \n // Remove navigator series that are no longer in the baseSeries\n navigatorSeries = navigator.series =\n (navigator.series || []).filter(function (navSeries) {\n var base = navSeries.baseSeries;\n if (baseSeries.indexOf(base) < 0) { // Not in array\n // If there is still a base series connected to this\n // series, remove event handler and reference.\n if (base) {\n Navigator_removeEvent(base, 'updatedData', navigator.updatedDataHandler);\n delete base.navigatorSeries;\n }\n // Kill the nav series. It may already have been\n // destroyed (#8715).\n if (navSeries.chart) {\n navSeries.destroy();\n }\n return false;\n }\n return true;\n });\n var baseOptions,\n mergedNavSeriesOptions,\n chartNavigatorSeriesOptions = navigator.navigatorOptions.series,\n baseNavigatorOptions;\n // Go through each base series and merge the options to create new\n // series\n if (baseSeries && baseSeries.length) {\n baseSeries.forEach(function (base) {\n var _a;\n var linkedNavSeries = base.navigatorSeries,\n userNavOptions = Navigator_extend(\n // Grab color and visibility from base as default\n {\n color: base.color,\n visible: base.visible\n }, !Navigator_isArray(chartNavigatorSeriesOptions) ?\n chartNavigatorSeriesOptions :\n Navigator_defaultOptions.navigator.series);\n // Don't update if the series exists in nav and we have disabled\n // adaptToUpdatedData.\n if (linkedNavSeries &&\n navigator.navigatorOptions.adaptToUpdatedData === false) {\n return;\n }\n navSeriesMixin.name = 'Navigator ' + baseSeries.length;\n baseOptions = base.options || {};\n baseNavigatorOptions = baseOptions.navigatorOptions || {};\n // The dataLabels options are not merged correctly\n // if the settings are an array, #13847.\n userNavOptions.dataLabels = Navigator_splat(userNavOptions.dataLabels);\n mergedNavSeriesOptions = Navigator_merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);\n // Once nav series type is resolved, pick correct pointRange\n mergedNavSeriesOptions.pointRange = Navigator_pick(\n // Stricte set pointRange in options\n userNavOptions.pointRange, baseNavigatorOptions.pointRange, \n // Fallback to default values, e.g. `null` for column\n Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line'].pointRange);\n // Merge data separately. Do a slice to avoid mutating the\n // navigator options from base series (#4923).\n var navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data;\n navigator.hasNavigatorData =\n navigator.hasNavigatorData || !!navigatorSeriesData;\n mergedNavSeriesOptions.data = (navigatorSeriesData ||\n ((_a = baseOptions.data) === null || _a === void 0 ? void 0 : _a.slice(0)));\n // Update or add the series\n if (linkedNavSeries && linkedNavSeries.options) {\n linkedNavSeries.update(mergedNavSeriesOptions, redraw);\n }\n else {\n base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);\n // Set data on initial run with dataSorting enabled (#20318)\n chart.setSortedData();\n base.navigatorSeries.baseSeries = base; // Store ref\n navigatorSeries.push(base.navigatorSeries);\n }\n });\n }\n // If user has defined data (and no base series) or explicitly defined\n // navigator.series as an array, we create these series on top of any\n // base series.\n if (chartNavigatorSeriesOptions.data &&\n !(baseSeries && baseSeries.length) ||\n Navigator_isArray(chartNavigatorSeriesOptions)) {\n navigator.hasNavigatorData = false;\n // Allow navigator.series to be an array\n chartNavigatorSeriesOptions =\n Navigator_splat(chartNavigatorSeriesOptions);\n chartNavigatorSeriesOptions.forEach(function (userSeriesOptions, i) {\n navSeriesMixin.name =\n 'Navigator ' + (navigatorSeries.length + 1);\n mergedNavSeriesOptions = Navigator_merge(Navigator_defaultOptions.navigator.series, {\n // Since we don't have a base series to pull color from,\n // try to fake it by using color from series with same\n // index. Otherwise pull from the colors array. We need\n // an explicit color as otherwise updates will increment\n // color counter and we'll get a new color for each\n // update of the nav series.\n color: chart.series[i] &&\n !chart.series[i].options.isInternal &&\n chart.series[i].color ||\n chart.options.colors[i] ||\n chart.options.colors[0]\n }, navSeriesMixin, userSeriesOptions);\n mergedNavSeriesOptions.data = userSeriesOptions.data;\n if (mergedNavSeriesOptions.data) {\n navigator.hasNavigatorData = true;\n navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));\n }\n });\n }\n if (addEvents) {\n this.addBaseSeriesEvents();\n }\n };\n /**\n * Add data events.\n * For example when main series is updated we need to recalculate extremes\n *\n * @private\n * @function Highcharts.Navigator#addBaseSeriesEvent\n */\n Navigator.prototype.addBaseSeriesEvents = function () {\n var _this = this;\n var navigator = this,\n baseSeries = navigator.baseSeries || [];\n // Bind modified extremes event to first base's xAxis only.\n // In event of > 1 base-xAxes, the navigator will ignore those.\n // Adding this multiple times to the same axis is no problem, as\n // duplicates should be discarded by the browser.\n if (baseSeries[0] && baseSeries[0].xAxis) {\n baseSeries[0].eventsToUnbind.push(Navigator_addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes));\n }\n baseSeries.forEach(function (base) {\n // Link base series show/hide to navigator series visibility\n base.eventsToUnbind.push(Navigator_addEvent(base, 'show', function () {\n if (this.navigatorSeries) {\n this.navigatorSeries.setVisible(true, false);\n }\n }));\n base.eventsToUnbind.push(Navigator_addEvent(base, 'hide', function () {\n if (this.navigatorSeries) {\n this.navigatorSeries.setVisible(false, false);\n }\n }));\n // Respond to updated data in the base series, unless explicitly\n // not adapting to data changes.\n if (_this.navigatorOptions.adaptToUpdatedData !== false) {\n if (base.xAxis) {\n base.eventsToUnbind.push(Navigator_addEvent(base, 'updatedData', _this.updatedDataHandler));\n }\n }\n // Handle series removal\n base.eventsToUnbind.push(Navigator_addEvent(base, 'remove', function () {\n if (baseSeries) {\n erase(baseSeries, base); // #21043\n }\n if (this.navigatorSeries && navigator.series) {\n erase(navigator.series, this.navigatorSeries);\n if (Navigator_defined(this.navigatorSeries.options)) {\n this.navigatorSeries.remove(false);\n }\n delete this.navigatorSeries;\n }\n }));\n });\n };\n /**\n * Get minimum from all base series connected to the navigator\n * @private\n * @param {number} currentSeriesMin\n * Minium from the current series\n * @return {number}\n * Minimum from all series\n */\n Navigator.prototype.getBaseSeriesMin = function (currentSeriesMin) {\n return this.baseSeries.reduce(function (min, series) {\n var _a;\n // #10193\n return Math.min(min, (_a = series.getColumn('x')[0]) !== null && _a !== void 0 ? _a : min);\n }, currentSeriesMin);\n };\n /**\n * Set the navigator x axis extremes to reflect the total. The navigator\n * extremes should always be the extremes of the union of all series in the\n * chart as well as the navigator series.\n *\n * @private\n * @function Highcharts.Navigator#modifyNavigatorAxisExtremes\n */\n Navigator.prototype.modifyNavigatorAxisExtremes = function () {\n var xAxis = this.xAxis;\n if (typeof xAxis.getExtremes !== 'undefined') {\n var unionExtremes = this.getUnionExtremes(true);\n if (unionExtremes &&\n (unionExtremes.dataMin !== xAxis.min ||\n unionExtremes.dataMax !== xAxis.max)) {\n xAxis.min = unionExtremes.dataMin;\n xAxis.max = unionExtremes.dataMax;\n }\n }\n };\n /**\n * Hook to modify the base axis extremes with information from the Navigator\n *\n * @private\n * @function Highcharts.Navigator#modifyBaseAxisExtremes\n */\n Navigator.prototype.modifyBaseAxisExtremes = function () {\n var _a;\n var baseXAxis = this,\n navigator = baseXAxis.chart.navigator,\n baseExtremes = baseXAxis.getExtremes(),\n baseMin = baseExtremes.min,\n baseMax = baseExtremes.max,\n baseDataMin = baseExtremes.dataMin,\n baseDataMax = baseExtremes.dataMax,\n range = baseMax - baseMin,\n stickToMin = navigator.stickToMin,\n stickToMax = navigator.stickToMax,\n overscroll = Navigator_pick((_a = baseXAxis.ordinal) === null || _a === void 0 ? void 0 : _a.convertOverscroll(baseXAxis.options.overscroll), 0),\n navigatorSeries = navigator.series && navigator.series[0],\n hasSetExtremes = !!baseXAxis.setExtremes, \n // When the extremes have been set by range selector button, don't\n // stick to min or max. The range selector buttons will handle the\n // extremes. (#5489)\n unmutable = baseXAxis.eventArgs &&\n baseXAxis.eventArgs.trigger === 'rangeSelectorButton';\n var newMax,\n newMin;\n if (!unmutable) {\n // If the zoomed range is already at the min, move it to the right\n // as new data comes in\n if (stickToMin) {\n newMin = baseDataMin;\n newMax = newMin + range;\n }\n // If the zoomed range is already at the max, move it to the right\n // as new data comes in\n if (stickToMax) {\n newMax = baseDataMax + overscroll;\n // If stickToMin is true, the new min value is set above\n if (!stickToMin) {\n newMin = Math.max(baseDataMin, // Don't go below data extremes (#13184)\n newMax - range, navigator.getBaseSeriesMin(navigatorSeries && navigatorSeries.xData ?\n navigatorSeries.xData[0] :\n -Number.MAX_VALUE));\n }\n }\n // Update the extremes\n if (hasSetExtremes && (stickToMin || stickToMax)) {\n if (Navigator_isNumber(newMin)) {\n baseXAxis.min = baseXAxis.userMin = newMin;\n baseXAxis.max = baseXAxis.userMax = newMax;\n }\n }\n }\n // Reset\n navigator.stickToMin =\n navigator.stickToMax = null;\n };\n /**\n * Handler for updated data on the base series. When data is modified, the\n * navigator series must reflect it. This is called from the Chart.redraw\n * function before axis and series extremes are computed.\n *\n * @private\n * @function Highcharts.Navigator#updateDataHandler\n */\n Navigator.prototype.updatedDataHandler = function () {\n var navigator = this.chart.navigator,\n baseSeries = this,\n navigatorSeries = this.navigatorSeries,\n shouldStickToMax = navigator.reversedExtremes ?\n Math.round(navigator.zoomedMin) === 0 :\n Math.round(navigator.zoomedMax) >= Math.round(navigator.size);\n // If the scrollbar is scrolled all the way to the right, keep right as\n // new data comes in, unless user set navigator.stickToMax to false.\n navigator.stickToMax = Navigator_pick(this.chart.options.navigator &&\n this.chart.options.navigator.stickToMax, shouldStickToMax);\n navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);\n // Set the navigator series data to the new data of the base series\n if (navigatorSeries && !navigator.hasNavigatorData) {\n navigatorSeries.options.pointStart = baseSeries.getColumn('x')[0];\n navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414\n }\n };\n /**\n * Detect if the zoomed area should stick to the minimum, #14742.\n *\n * @private\n * @function Highcharts.Navigator#shouldStickToMin\n */\n Navigator.prototype.shouldStickToMin = function (baseSeries, navigator) {\n var xDataMin = navigator.getBaseSeriesMin(baseSeries.getColumn('x')[0]),\n xAxis = baseSeries.xAxis,\n max = xAxis.max,\n min = xAxis.min,\n range = xAxis.options.range;\n var stickToMin = true;\n if (Navigator_isNumber(max) && Navigator_isNumber(min)) {\n // If range declared, stick to the minimum only if the range\n // is smaller than the data set range.\n if (range && max - xDataMin > 0) {\n stickToMin = max - xDataMin < range;\n }\n else {\n // If the current axis minimum falls outside the new\n // updated dataset, we must adjust.\n stickToMin = min <= xDataMin;\n }\n }\n else {\n stickToMin = false; // #15864\n }\n return stickToMin;\n };\n /**\n * Add chart events, like redrawing navigator, when chart requires that.\n *\n * @private\n * @function Highcharts.Navigator#addChartEvents\n */\n Navigator.prototype.addChartEvents = function () {\n if (!this.eventsToUnbind) {\n this.eventsToUnbind = [];\n }\n this.eventsToUnbind.push(\n // Move the scrollbar after redraw, like after data updata even if\n // axes don't redraw\n Navigator_addEvent(this.chart, 'redraw', function () {\n var navigator = this.navigator,\n xAxis = navigator && (navigator.baseSeries &&\n navigator.baseSeries[0] &&\n navigator.baseSeries[0].xAxis ||\n this.xAxis[0]); // #5709, #13114\n if (xAxis) {\n navigator.render(xAxis.min,\n xAxis.max);\n }\n }), \n // Make room for the navigator, can be placed around the chart:\n Navigator_addEvent(this.chart, 'getMargins', function () {\n var chart = this,\n navigator = chart.navigator;\n var marginName = navigator.opposite ?\n 'plotTop' : 'marginBottom';\n if (chart.inverted) {\n marginName = navigator.opposite ?\n 'marginRight' : 'plotLeft';\n }\n chart[marginName] =\n (chart[marginName] || 0) + (navigator.navigatorEnabled || !chart.inverted ?\n navigator.height + navigator.scrollbarHeight :\n 0) + navigator.navigatorOptions.margin;\n }), Navigator_addEvent(Navigator, 'setRange', function (e) {\n this.chart.xAxis[0].setExtremes(e.min, e.max, e.redraw, e.animation, e.eventArguments);\n }));\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.Navigator#destroy\n */\n Navigator.prototype.destroy = function () {\n var _this = this;\n // Disconnect events added in addEvents\n this.removeEvents();\n if (this.xAxis) {\n erase(this.chart.xAxis, this.xAxis);\n erase(this.chart.axes, this.xAxis);\n }\n if (this.yAxis) {\n erase(this.chart.yAxis, this.yAxis);\n erase(this.chart.axes, this.yAxis);\n }\n // Destroy series\n (this.series || []).forEach(function (s) {\n if (s.destroy) {\n s.destroy();\n }\n });\n // Destroy properties\n [\n 'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',\n 'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',\n 'rendered'\n ].forEach(function (prop) {\n if (_this[prop] && _this[prop].destroy) {\n _this[prop].destroy();\n }\n _this[prop] = null;\n });\n // Destroy elements in collection\n [this.handles].forEach(function (coll) {\n Navigator_destroyObjectProperties(coll);\n });\n this.navigatorEnabled = false;\n };\n return Navigator;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Navigator_Navigator = (Navigator);\n\n;// ./code/es5/es-modules/Stock/RangeSelector/RangeSelectorDefaults.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Declarations\n *\n * */\n/**\n * An object containing language-related strings and settings. A typical setup\n * uses `Highcharts.setOptions` to make the options apply to all charts in the\n * same page.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * locale: 'fr'\n * }\n * });\n * ```\n *\n * @optionparent lang\n */\nvar lang = {\n /**\n * The text for the label for the range selector buttons.\n *\n * @product highstock gantt\n */\n rangeSelectorZoom: 'Zoom',\n /**\n * The text for the label for the \"from\" input box in the range\n * selector. Since v9.0, this string is empty as the label is not\n * rendered by default.\n *\n * @product highstock gantt\n */\n rangeSelectorFrom: '',\n /**\n * The text for the label for the \"to\" input box in the range selector.\n *\n * @product highstock gantt\n */\n rangeSelectorTo: '→'\n};\n/**\n * The range selector is a tool for selecting ranges to display within\n * the chart. It provides buttons to select preconfigured ranges in\n * the chart, like 1 day, 1 week, 1 month etc. It also provides input\n * boxes where min and max dates can be manually input.\n *\n * @product highstock gantt\n * @optionparent rangeSelector\n */\nvar rangeSelector = {\n /**\n * Whether to enable all buttons from the start. By default buttons are\n * only enabled if the corresponding time range exists on the X axis,\n * but enabling all buttons allows for dynamically loading different\n * time ranges.\n *\n * @sample {highstock} stock/rangeselector/allbuttonsenabled-true/\n * All buttons enabled\n *\n * @since 2.0.3\n */\n allButtonsEnabled: false,\n /**\n * An array of configuration objects for the buttons.\n *\n * Defaults to:\n * ```js\n * buttons: [{\n * type: 'month',\n * count: 1,\n * text: '1m',\n * title: 'View 1 month'\n * }, {\n * type: 'month',\n * count: 3,\n * text: '3m',\n * title: 'View 3 months'\n * }, {\n * type: 'month',\n * count: 6,\n * text: '6m',\n * title: 'View 6 months'\n * }, {\n * type: 'ytd',\n * text: 'YTD',\n * title: 'View year to date'\n * }, {\n * type: 'year',\n * count: 1,\n * text: '1y',\n * title: 'View 1 year'\n * }, {\n * type: 'all',\n * text: 'All',\n * title: 'View all'\n * }]\n * ```\n *\n * @sample {highstock} stock/demo/rangeselector-datagrouping/\n * Data grouping by buttons\n *\n * @type {Array<*>}\n */\n buttons: [{\n type: 'month',\n count: 1,\n text: '1m',\n title: 'View 1 month'\n }, {\n type: 'month',\n count: 3,\n text: '3m',\n title: 'View 3 months'\n }, {\n type: 'month',\n count: 6,\n text: '6m',\n title: 'View 6 months'\n }, {\n type: 'ytd',\n text: 'YTD',\n title: 'View year to date'\n }, {\n type: 'year',\n count: 1,\n text: '1y',\n title: 'View 1 year'\n }, {\n type: 'all',\n text: 'All',\n title: 'View all'\n }],\n /**\n * How many units of the defined type the button should span. If `type`\n * is \"month\" and `count` is 3, the button spans three months.\n *\n * @type {number}\n * @default 1\n * @apioption rangeSelector.buttons.count\n */\n /**\n * Fires when clicking on the rangeSelector button. One parameter,\n * event, is passed to the function, containing common event\n * information.\n *\n * ```js\n * click: function(e) {\n * console.log(this);\n * }\n * ```\n *\n * Return false to stop default button's click action.\n *\n * @sample {highstock} stock/rangeselector/button-click/\n * Click event on the button\n *\n * @type {Highcharts.RangeSelectorClickCallbackFunction}\n * @apioption rangeSelector.buttons.events.click\n */\n /**\n * Additional range (in milliseconds) added to the end of the calculated\n * time span.\n *\n * @sample {highstock} stock/rangeselector/min-max-offsets/\n * Button offsets\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @apioption rangeSelector.buttons.offsetMax\n */\n /**\n * Additional range (in milliseconds) added to the start of the\n * calculated time span.\n *\n * @sample {highstock} stock/rangeselector/min-max-offsets/\n * Button offsets\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @apioption rangeSelector.buttons.offsetMin\n */\n /**\n * When buttons apply dataGrouping on a series, by default zooming\n * in/out will deselect buttons and unset dataGrouping. Enable this\n * option to keep buttons selected when extremes change.\n *\n * @sample {highstock} stock/rangeselector/preserve-datagrouping/\n * Different preserveDataGrouping settings\n *\n * @type {boolean}\n * @default false\n * @since 6.1.2\n * @apioption rangeSelector.buttons.preserveDataGrouping\n */\n /**\n * A custom data grouping object for each button.\n *\n * @see [series.dataGrouping](#plotOptions.series.dataGrouping)\n *\n * @sample {highstock} stock/demo/rangeselector-datagrouping/\n * Data grouping by range selector buttons\n *\n * @type {*}\n * @extends plotOptions.series.dataGrouping\n * @apioption rangeSelector.buttons.dataGrouping\n */\n /**\n * The text for the button itself.\n *\n * @type {string}\n * @apioption rangeSelector.buttons.text\n */\n /**\n * Explanation for the button, shown as a tooltip on hover, and used by\n * assistive technology.\n *\n * @type {string}\n * @apioption rangeSelector.buttons.title\n */\n /**\n * Defined the time span for the button. Can be one of `millisecond`,\n * `second`, `minute`, `hour`, `day`, `week`, `month`, `year`, `ytd`,\n * and `all`.\n *\n * @type {Highcharts.RangeSelectorButtonTypeValue}\n * @apioption rangeSelector.buttons.type\n */\n /**\n * The space in pixels between the buttons in the range selector.\n */\n buttonSpacing: 5,\n /**\n * Whether to collapse the range selector buttons into a dropdown when\n * there is not enough room to show everything in a single row, instead\n * of dividing the range selector into multiple rows.\n * Can be one of the following:\n * - `always`: Always collapse\n * - `responsive`: Only collapse when there is not enough room\n * - `never`: Never collapse\n *\n * @sample {highstock} stock/rangeselector/dropdown/\n * Dropdown option\n *\n * @validvalue [\"always\", \"responsive\", \"never\"]\n * @since 9.0.0\n */\n dropdown: 'responsive',\n /**\n * Enable or disable the range selector. Default to `true` for stock\n * charts, using the `stockChart` factory.\n *\n * @sample {highstock} stock/rangeselector/enabled/\n * Disable the range selector\n *\n * @type {boolean|undefined}\n * @default {highstock} true\n */\n enabled: void 0,\n /**\n * The vertical alignment of the rangeselector box. Allowed properties\n * are `top`, `middle`, `bottom`.\n *\n * @sample {highstock} stock/rangeselector/vertical-align-middle/\n * Middle\n * @sample {highstock} stock/rangeselector/vertical-align-bottom/\n * Bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 6.0.0\n */\n verticalAlign: 'top',\n /**\n * A collection of attributes for the buttons. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,\n * a collection of CSS properties for the text.\n *\n * The object can also be extended with states, so you can set\n * presentational options for `hover`, `select` or `disabled` button\n * states.\n *\n * CSS styles for the text label.\n *\n * In styled mode, the buttons are styled by the\n * `.highcharts-range-selector-buttons .highcharts-button` rule with its\n * different states.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.SVGAttributes}\n */\n buttonTheme: {\n /** @ignore */\n width: 28,\n /** @ignore */\n height: 18,\n /** @ignore */\n padding: 2,\n /** @ignore */\n zIndex: 7 // #484, #852\n },\n /**\n * When the rangeselector is floating, the plot area does not reserve\n * space for it. This opens for positioning anywhere on the chart.\n *\n * @sample {highstock} stock/rangeselector/floating/\n * Placing the range selector between the plot area and the\n * navigator\n *\n * @since 6.0.0\n */\n floating: false,\n /**\n * The x offset of the range selector relative to its horizontal\n * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @since 6.0.0\n */\n x: 0,\n /**\n * The y offset of the range selector relative to its horizontal\n * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @since 6.0.0\n */\n y: 0,\n /**\n * Deprecated. The height of the range selector. Currently it is\n * calculated dynamically.\n *\n * @deprecated\n * @type {number|undefined}\n * @since 2.1.9\n */\n height: void 0, // Reserved space for buttons and input\n /**\n * The border color of the date input boxes.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.ColorString}\n * @since 1.3.7\n */\n inputBoxBorderColor: 'none',\n /**\n * The pixel height of the date input boxes.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @since 1.3.7\n */\n inputBoxHeight: 17,\n /**\n * The pixel width of the date input boxes. When `undefined`, the width\n * is fitted to the rendered content.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {number|undefined}\n * @since 1.3.7\n */\n inputBoxWidth: void 0,\n /**\n * The date format in the input boxes when not selected for editing.\n * Defaults to `%e %b %Y`.\n *\n * This is used to determine which type of input to show,\n * `datetime-local`, `date` or `time` and falling back to `text` when\n * the browser does not support the input type or the format contains\n * milliseconds.\n *\n * @sample {highstock} stock/rangeselector/input-type/\n * Input types\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n */\n inputDateFormat: '%[ebY]',\n /**\n * A custom callback function to parse values entered in the input boxes and\n * return a valid JavaScript time as milliseconds since 1970. The first\n * argument passed is the value to parse, second is a boolean indicating use\n * of UTC time. The third is a reference to the `time` object. Time zone can\n * be read from `time.timezone`.\n *\n * This will only get called for inputs of type `text`. Since v8.2.3, the\n * input type is dynamically determined based on the granularity of the\n * `inputDateFormat` and the browser support.\n *\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n * @type {Highcharts.RangeSelectorParseCallbackFunction}\n * @since 1.3.3\n */\n inputDateParser: void 0,\n /**\n * The date format in the input boxes when they are selected for\n * editing. This must be a format that is recognized by JavaScript\n * Date.parse.\n *\n * This will only be used for inputs of type `text`. Since v8.2.3,\n * the input type is dynamically determined based on the granularity\n * of the `inputDateFormat` and the browser support.\n *\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n */\n inputEditDateFormat: '%Y-%m-%d',\n /**\n * Enable or disable the date input boxes.\n */\n inputEnabled: true,\n /**\n * Positioning for the input boxes. Allowed properties are `align`,\n * `x` and `y`.\n *\n * @since 1.2.4\n */\n inputPosition: {\n /**\n * The alignment of the input box. Allowed properties are `left`,\n * `center`, `right`.\n *\n * @sample {highstock} stock/rangeselector/input-button-opposite-alignment/\n * Opposite alignment\n *\n * @sample {highstock} stock/rangeselector/input-button-same-alignment/\n * Same alignment for buttons and input\n *\n * @type {Highcharts.AlignValue}\n * @since 6.0.0\n */\n align: 'right',\n /**\n * X offset of the input row.\n */\n x: 0,\n /**\n * Y offset of the input row.\n */\n y: 0\n },\n /**\n * The space in pixels between the labels and the date input boxes in\n * the range selector.\n *\n * @since 9.0.0\n */\n inputSpacing: 5,\n /**\n * The index of the button to appear pre-selected. If the selected range\n * exceeds the total data range and the 'all' option is available,\n * the 'all' option, showing the full range, is automatically selected.\n *\n * @type {number}\n */\n selected: void 0,\n /**\n * Positioning for the button row.\n *\n * @since 1.2.4\n */\n buttonPosition: {\n /**\n * The alignment of the input box. Allowed properties are `left`,\n * `center`, `right`.\n *\n * @sample {highstock} stock/rangeselector/input-button-opposite-alignment/\n * Opposite alignment\n *\n * @sample {highstock} stock/rangeselector/input-button-same-alignment/\n * Same alignment for buttons and input\n *\n * @type {Highcharts.AlignValue}\n * @since 6.0.0\n */\n align: 'left',\n /**\n * X offset of the button row.\n */\n x: 0,\n /**\n * Y offset of the button row.\n */\n y: 0\n },\n /**\n * CSS for the HTML inputs in the range selector.\n *\n * In styled mode, the inputs are styled by the\n * `.highcharts-range-input text` rule in SVG mode, and\n * `input.highcharts-range-selector` when active.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.CSSObject}\n * @apioption rangeSelector.inputStyle\n */\n inputStyle: {\n /** @ignore */\n color: \"#334eff\" /* Palette.highlightColor80 */,\n /** @ignore */\n cursor: 'pointer',\n /** @ignore */\n fontSize: '0.8em'\n },\n /**\n * CSS styles for the labels - the Zoom, From and To texts.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-range-label` class.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.CSSObject}\n */\n labelStyle: {\n /** @ignore */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @ignore */\n fontSize: '0.8em'\n }\n};\n/* *\n *\n * Default Export\n *\n * */\nvar RangeSelectorDefaults = {\n lang: lang,\n rangeSelector: rangeSelector\n};\n/* harmony default export */ var RangeSelector_RangeSelectorDefaults = (RangeSelectorDefaults);\n\n;// ./code/es5/es-modules/Stock/RangeSelector/RangeSelectorComposition.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar RangeSelectorComposition_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar RangeSelectorComposition_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\nvar RangeSelectorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, RangeSelectorComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, RangeSelectorComposition_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, RangeSelectorComposition_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, RangeSelectorComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, RangeSelectorComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, RangeSelectorComposition_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n * Constants\n *\n * */\nvar chartDestroyEvents = [];\n/* *\n *\n * Variables\n *\n * */\nvar RangeSelectorConstructor;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Get the axis min value based on the range option and the current max. For\n * stock charts this is extended via the {@link RangeSelector} so that if the\n * selected range is a multiple of months or years, it is compensated for\n * various month lengths.\n *\n * @private\n * @function Highcharts.Axis#minFromRange\n * @return {number|undefined}\n * The new minimum value.\n */\nfunction axisMinFromRange() {\n var rangeOptions = this.range,\n type = rangeOptions.type,\n max = this.max,\n time = this.chart.time, \n // Get the true range from a start date\n getTrueRange = function (base,\n count) {\n var original = time.toParts(base),\n modified = original.slice();\n if (type === 'year') {\n modified[0] += count;\n }\n else {\n modified[1] += count;\n }\n var d = time.makeTime.apply(time,\n modified);\n var numbers = time.toParts(d);\n // When subtracting a month still places us in the same month, like\n // subtracting one month from March 31 places us on February 31,\n // which translates to March 3 (#6537)\n if (type === 'month' &&\n original[1] === numbers[1] &&\n Math.abs(count) === 1) {\n modified[0] = original[0];\n modified[1] = original[1];\n // 0 is the last day of the previous month\n modified[2] = 0;\n }\n d = time.makeTime.apply(time, modified);\n return d - base;\n };\n var min,\n range;\n if (RangeSelectorComposition_isNumber(rangeOptions)) {\n min = max - rangeOptions;\n range = rangeOptions;\n }\n else if (rangeOptions) {\n min = max + getTrueRange(max, -(rangeOptions.count || 1));\n // Let the fixedRange reflect initial settings (#5930)\n if (this.chart) {\n this.chart.setFixedRange(max - min);\n }\n }\n var dataMin = RangeSelectorComposition_pick(this.dataMin,\n Number.MIN_VALUE);\n if (!RangeSelectorComposition_isNumber(min)) {\n min = dataMin;\n }\n if (min <= dataMin) {\n min = dataMin;\n if (typeof range === 'undefined') { // #4501\n range = getTrueRange(min, rangeOptions.count);\n }\n this.newMax = Math.min(min + range, RangeSelectorComposition_pick(this.dataMax, Number.MAX_VALUE));\n }\n if (!RangeSelectorComposition_isNumber(max)) {\n min = void 0;\n }\n else if (!RangeSelectorComposition_isNumber(rangeOptions) &&\n rangeOptions &&\n rangeOptions._offsetMin) {\n min += rangeOptions._offsetMin;\n }\n return min;\n}\n/**\n * @private\n */\nfunction updateRangeSelectorButtons() {\n var _a;\n (_a = this.rangeSelector) === null || _a === void 0 ? void 0 : _a.redrawElements();\n}\n/**\n * @private\n */\nfunction RangeSelectorComposition_compose(AxisClass, ChartClass, RangeSelectorClass) {\n RangeSelectorConstructor = RangeSelectorClass;\n if (RangeSelectorComposition_pushUnique(RangeSelectorComposition_composed, 'RangeSelector')) {\n var chartProto = ChartClass.prototype;\n AxisClass.prototype.minFromRange = axisMinFromRange;\n RangeSelectorComposition_addEvent(ChartClass, 'afterGetContainer', createRangeSelector);\n RangeSelectorComposition_addEvent(ChartClass, 'beforeRender', RangeSelectorComposition_onChartBeforeRender);\n RangeSelectorComposition_addEvent(ChartClass, 'destroy', onChartDestroy);\n RangeSelectorComposition_addEvent(ChartClass, 'getMargins', onChartGetMargins);\n RangeSelectorComposition_addEvent(ChartClass, 'redraw', redrawRangeSelector);\n RangeSelectorComposition_addEvent(ChartClass, 'update', RangeSelectorComposition_onChartUpdate);\n RangeSelectorComposition_addEvent(ChartClass, 'beforeRedraw', updateRangeSelectorButtons);\n chartProto.callbacks.push(redrawRangeSelector);\n RangeSelectorComposition_extend(RangeSelectorComposition_defaultOptions, { rangeSelector: RangeSelector_RangeSelectorDefaults.rangeSelector });\n RangeSelectorComposition_extend(RangeSelectorComposition_defaultOptions.lang, RangeSelector_RangeSelectorDefaults.lang);\n }\n}\n/**\n * Initialize rangeselector for stock charts\n * @private\n */\nfunction createRangeSelector() {\n if (this.options.rangeSelector &&\n this.options.rangeSelector.enabled) {\n this.rangeSelector = new RangeSelectorConstructor(this);\n }\n}\n/**\n * @private\n */\nfunction RangeSelectorComposition_onChartBeforeRender() {\n var chart = this,\n rangeSelector = chart.rangeSelector;\n if (rangeSelector) {\n if (RangeSelectorComposition_isNumber(rangeSelector.deferredYTDClick)) {\n rangeSelector.clickButton(rangeSelector.deferredYTDClick);\n delete rangeSelector.deferredYTDClick;\n }\n var verticalAlign = rangeSelector.options.verticalAlign;\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign === 'top') {\n this.extraTopMargin = true;\n }\n }\n }\n}\nfunction redrawRangeSelector() {\n var chart = this;\n var rangeSelector = this.rangeSelector;\n if (!rangeSelector) {\n return;\n }\n var alignTo;\n var extremes = chart.xAxis[0].getExtremes();\n var legend = chart.legend;\n var verticalAlign = (rangeSelector &&\n rangeSelector.options.verticalAlign);\n if (RangeSelectorComposition_isNumber(extremes.min)) {\n rangeSelector.render(extremes.min, extremes.max);\n }\n // Re-align the legend so that it's below the rangeselector\n if (legend.display &&\n verticalAlign === 'top' &&\n verticalAlign === legend.options.verticalAlign) {\n // Create a new alignment box for the legend.\n alignTo = RangeSelectorComposition_merge(chart.spacingBox);\n if (legend.options.layout === 'vertical') {\n alignTo.y = chart.plotTop;\n }\n else {\n alignTo.y += rangeSelector.getHeight();\n }\n legend.group.placed = false; // Don't animate the alignment.\n legend.align(alignTo);\n }\n}\n/**\n * Remove resize/afterSetExtremes at chart destroy.\n * @private\n */\nfunction onChartDestroy() {\n for (var i = 0, iEnd = chartDestroyEvents.length; i < iEnd; ++i) {\n var events = chartDestroyEvents[i];\n if (events[0] === this) {\n events[1].forEach(function (unbind) { return unbind(); });\n chartDestroyEvents.splice(i, 1);\n return;\n }\n }\n}\n/**\n *\n */\nfunction onChartGetMargins() {\n var _a;\n var rangeSelector = this.rangeSelector;\n if ((_a = rangeSelector === null || rangeSelector === void 0 ? void 0 : rangeSelector.options) === null || _a === void 0 ? void 0 : _a.enabled) {\n var rangeSelectorHeight = rangeSelector.getHeight();\n var verticalAlign = rangeSelector.options.verticalAlign;\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.marginBottom += rangeSelectorHeight;\n }\n else if (verticalAlign !== 'middle') {\n this.plotTop += rangeSelectorHeight;\n }\n }\n }\n}\n/**\n * @private\n */\nfunction RangeSelectorComposition_onChartUpdate(e) {\n var chart = this,\n options = e.options,\n optionsRangeSelector = options.rangeSelector,\n extraBottomMarginWas = this.extraBottomMargin,\n extraTopMarginWas = this.extraTopMargin;\n var rangeSelector = chart.rangeSelector;\n if (optionsRangeSelector &&\n optionsRangeSelector.enabled &&\n !RangeSelectorComposition_defined(rangeSelector) &&\n this.options.rangeSelector) {\n this.options.rangeSelector.enabled = true;\n this.rangeSelector = rangeSelector = new RangeSelectorConstructor(this);\n }\n this.extraBottomMargin = false;\n this.extraTopMargin = false;\n if (rangeSelector) {\n var verticalAlign = (optionsRangeSelector &&\n optionsRangeSelector.verticalAlign) || (rangeSelector.options && rangeSelector.options.verticalAlign);\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n if (this.extraBottomMargin !== extraBottomMarginWas ||\n this.extraTopMargin !== extraTopMarginWas) {\n this.isDirtyBox = true;\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nvar RangeSelectorComposition = {\n compose: RangeSelectorComposition_compose\n};\n/* harmony default export */ var RangeSelector_RangeSelectorComposition = (RangeSelectorComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es5/es-modules/Data/DataTableCore.js\n/* *\n *\n * (c) 2009-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Authors:\n * - Sophie Bremer\n * - Gøran Slettemark\n * - Torstein Hønsi\n *\n * */\n\n\nvar DataTableCore_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, DataTableCore_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, DataTableCore_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey;\n/* *\n *\n * Class\n *\n * */\n/**\n * Class to manage columns and rows in a table structure. It provides methods\n * to add, remove, and manipulate columns and rows, as well as to retrieve data\n * from specific cells.\n *\n * @class\n * @name Highcharts.DataTable\n *\n * @param {Highcharts.DataTableOptions} [options]\n * Options to initialize the new DataTable instance.\n */\nvar DataTableCore = /** @class */ (function () {\n /**\n * Constructs an instance of the DataTable class.\n *\n * @example\n * const dataTable = new Highcharts.DataTableCore({\n * columns: {\n * year: [2020, 2021, 2022, 2023],\n * cost: [11, 13, 12, 14],\n * revenue: [12, 15, 14, 18]\n * }\n * });\n\n *\n * @param {Highcharts.DataTableOptions} [options]\n * Options to initialize the new DataTable instance.\n */\n function DataTableCore(options) {\n if (options === void 0) { options = {}; }\n var _this = this;\n /**\n * Whether the ID was automatic generated or given in the constructor.\n *\n * @name Highcharts.DataTable#autoId\n * @type {boolean}\n */\n this.autoId = !options.id;\n this.columns = {};\n /**\n * ID of the table for indentification purposes.\n *\n * @name Highcharts.DataTable#id\n * @type {string}\n */\n this.id = (options.id || uniqueKey());\n this.modified = this;\n this.rowCount = 0;\n this.versionTag = uniqueKey();\n var rowCount = 0;\n DataTableCore_objectEach(options.columns || {}, function (column, columnName) {\n _this.columns[columnName] = column.slice();\n rowCount = Math.max(rowCount, column.length);\n });\n this.applyRowCount(rowCount);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Applies a row count to the table by setting the `rowCount` property and\n * adjusting the length of all columns.\n *\n * @private\n * @param {number} rowCount The new row count.\n */\n DataTableCore.prototype.applyRowCount = function (rowCount) {\n this.rowCount = rowCount;\n DataTableCore_objectEach(this.columns, function (column) {\n if (DataTableCore_isArray(column)) { // Not on typed array\n column.length = rowCount;\n }\n });\n };\n /**\n * Fetches the given column by the canonical column name. Simplified version\n * of the full `DataTable.getRow` method, always returning by reference.\n *\n * @param {string} columnName\n * Name of the column to get.\n *\n * @return {Highcharts.DataTableColumn|undefined}\n * A copy of the column, or `undefined` if not found.\n */\n DataTableCore.prototype.getColumn = function (columnName, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n asReference) {\n return this.columns[columnName];\n };\n /**\n * Retrieves all or the given columns. Simplified version of the full\n * `DataTable.getColumns` method, always returning by reference.\n *\n * @param {Array<string>} [columnNames]\n * Column names to retrieve.\n *\n * @return {Highcharts.DataTableColumnCollection}\n * Collection of columns. If a requested column was not found, it is\n * `undefined`.\n */\n DataTableCore.prototype.getColumns = function (columnNames, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n asReference) {\n var _this = this;\n return (columnNames || Object.keys(this.columns)).reduce(function (columns, columnName) {\n columns[columnName] = _this.columns[columnName];\n return columns;\n }, {});\n };\n /**\n * Retrieves the row at a given index.\n *\n * @param {number} rowIndex\n * Row index to retrieve. First row has index 0.\n *\n * @param {Array<string>} [columnNames]\n * Column names to retrieve.\n *\n * @return {Record<string, number|string|undefined>|undefined}\n * Returns the row values, or `undefined` if not found.\n */\n DataTableCore.prototype.getRow = function (rowIndex, columnNames) {\n var _this = this;\n return (columnNames || Object.keys(this.columns)).map(function (key) { var _a; return (_a = _this.columns[key]) === null || _a === void 0 ? void 0 : _a[rowIndex]; });\n };\n /**\n * Sets cell values for a column. Will insert a new column, if not found.\n *\n * @param {string} columnName\n * Column name to set.\n *\n * @param {Highcharts.DataTableColumn} [column]\n * Values to set in the column.\n *\n * @param {number} [rowIndex=0]\n * Index of the first row to change. (Default: 0)\n *\n * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n * Custom information for pending events.\n *\n * @emits #setColumns\n * @emits #afterSetColumns\n */\n DataTableCore.prototype.setColumn = function (columnName, column, rowIndex, eventDetail) {\n var _a;\n if (column === void 0) { column = []; }\n if (rowIndex === void 0) { rowIndex = 0; }\n this.setColumns((_a = {}, _a[columnName] = column, _a), rowIndex, eventDetail);\n };\n /**\n * * Sets cell values for multiple columns. Will insert new columns, if not\n * found. Simplified version of the full `DataTable.setColumns`, limited to\n * full replacement of the columns (undefined `rowIndex`).\n *\n * @param {Highcharts.DataTableColumnCollection} columns\n * Columns as a collection, where the keys are the column names.\n *\n * @param {number} [rowIndex]\n * Index of the first row to change. Keep undefined to reset.\n *\n * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n * Custom information for pending events.\n *\n * @emits #setColumns\n * @emits #afterSetColumns\n */\n DataTableCore.prototype.setColumns = function (columns, rowIndex, eventDetail) {\n var _this = this;\n var rowCount = this.rowCount;\n DataTableCore_objectEach(columns, function (column, columnName) {\n _this.columns[columnName] = column.slice();\n rowCount = column.length;\n });\n this.applyRowCount(rowCount);\n if (!(eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.silent)) {\n DataTableCore_fireEvent(this, 'afterSetColumns');\n this.versionTag = uniqueKey();\n }\n };\n /**\n * Sets cell values of a row. Will insert a new row if no index was\n * provided, or if the index is higher than the total number of table rows.\n * A simplified version of the full `DateTable.setRow`, limited to objects.\n *\n * @param {Record<string, number|string|undefined>} row\n * Cell values to set.\n *\n * @param {number} [rowIndex]\n * Index of the row to set. Leave `undefind` to add as a new row.\n *\n * @param {boolean} [insert]\n * Whether to insert the row at the given index, or to overwrite the row.\n *\n * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n * Custom information for pending events.\n *\n * @emits #afterSetRows\n */\n DataTableCore.prototype.setRow = function (row, rowIndex, insert, eventDetail) {\n if (rowIndex === void 0) { rowIndex = this.rowCount; }\n var columns = this.columns,\n indexRowCount = insert ? this.rowCount + 1 : rowIndex + 1;\n DataTableCore_objectEach(row, function (cellValue, columnName) {\n var column = columns[columnName] ||\n (eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.addColumns) !== false && new Array(indexRowCount);\n if (column) {\n if (insert) {\n column.splice(rowIndex, 0, cellValue);\n }\n else {\n column[rowIndex] = cellValue;\n }\n columns[columnName] = column;\n }\n });\n if (indexRowCount > this.rowCount) {\n this.applyRowCount(indexRowCount);\n }\n if (!(eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.silent)) {\n DataTableCore_fireEvent(this, 'afterSetRows');\n this.versionTag = uniqueKey();\n }\n };\n return DataTableCore;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Data_DataTableCore = (DataTableCore);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * A column of values in a data table.\n * @typedef {Array<boolean|null|number|string|undefined>} Highcharts.DataTableColumn\n */ /**\n* A collection of data table columns defined by a object where the key is the\n* column name and the value is an array of the column values.\n* @typedef {Record<string, Highcharts.DataTableColumn>} Highcharts.DataTableColumnCollection\n*/\n/**\n * Options for the `DataTable` or `DataTableCore` classes.\n * @interface Highcharts.DataTableOptions\n */ /**\n* The column options for the data table. The columns are defined by an object\n* where the key is the column ID and the value is an array of the column\n* values.\n*\n* @name Highcharts.DataTableOptions.columns\n* @type {Highcharts.DataTableColumnCollection|undefined}\n*/ /**\n* Custom ID to identify the new DataTable instance.\n*\n* @name Highcharts.DataTableOptions.id\n* @type {string|undefined}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Core/Axis/OrdinalAxis.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar OrdinalAxis_assign = (undefined && undefined.__assign) || function () {\n OrdinalAxis_assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return OrdinalAxis_assign.apply(this, arguments);\n};\n\n\n\n\nvar OrdinalAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, OrdinalAxis_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css, OrdinalAxis_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, OrdinalAxis_error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, OrdinalAxis_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, OrdinalAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, timeUnits = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).timeUnits, isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString;\n/* *\n *\n * Composition\n *\n * */\n/**\n * Extends the axis with ordinal support.\n * @private\n */\nvar OrdinalAxis;\n(function (OrdinalAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends the axis with ordinal support.\n *\n * @private\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param ChartClass\n * Chart class to use.\n *\n * @param SeriesClass\n * Series class to use.\n */\n function compose(AxisClass, SeriesClass, ChartClass) {\n var axisProto = AxisClass.prototype;\n if (!axisProto.ordinal2lin) {\n axisProto.getTimeTicks = getTimeTicks;\n axisProto.index2val = index2val;\n axisProto.lin2val = lin2val;\n axisProto.val2lin = val2lin;\n // Record this to prevent overwriting by broken-axis module (#5979)\n axisProto.ordinal2lin = axisProto.val2lin;\n OrdinalAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n OrdinalAxis_addEvent(AxisClass, 'foundExtremes', onAxisFoundExtremes);\n OrdinalAxis_addEvent(AxisClass, 'afterSetScale', onAxisAfterSetScale);\n OrdinalAxis_addEvent(AxisClass, 'initialAxisTranslation', onAxisInitialAxisTranslation);\n OrdinalAxis_addEvent(ChartClass, 'pan', onChartPan);\n OrdinalAxis_addEvent(ChartClass, 'touchpan', onChartPan);\n OrdinalAxis_addEvent(SeriesClass, 'updatedData', onSeriesUpdatedData);\n }\n return AxisClass;\n }\n OrdinalAxis.compose = compose;\n /**\n * In an ordinal axis, there might be areas with dense concentrations of\n * points, then large gaps between some. Creating equally distributed\n * ticks over this entire range may lead to a huge number of ticks that\n * will later be removed. So instead, break the positions up in\n * segments, find the tick positions for each segment then concatenize\n * them. This method is used from both data grouping logic and X axis\n * tick position logic.\n * @private\n */\n function getTimeTicks(normalizedInterval, min, max, startOfWeek, positions, closestDistance, findHigherRanks) {\n if (positions === void 0) { positions = []; }\n if (closestDistance === void 0) { closestDistance = 0; }\n var higherRanks = {},\n tickPixelIntervalOption = this.options.tickPixelInterval,\n time = this.chart.time, \n // Record all the start positions of a segment, to use when\n // deciding what's a gap in the data.\n segmentStarts = [];\n var end,\n segmentPositions,\n hasCrossedHigherRank,\n info,\n outsideMax,\n start = 0,\n groupPositions = [],\n lastGroupPosition = -Number.MAX_VALUE;\n // The positions are not always defined, for example for ordinal\n // positions when data has regular interval (#1557, #2090)\n if ((!this.options.ordinal && !this.options.breaks) ||\n !positions ||\n positions.length < 3 ||\n typeof min === 'undefined') {\n return time.getTimeTicks.apply(time, arguments);\n }\n // Analyze the positions array to split it into segments on gaps\n // larger than 5 times the closest distance. The closest distance is\n // already found at this point, so we reuse that instead of\n // computing it again.\n var posLength = positions.length;\n for (end = 0; end < posLength; end++) {\n outsideMax = end && positions[end - 1] > max;\n if (positions[end] < min) { // Set the last position before min\n start = end;\n }\n if (end === posLength - 1 ||\n positions[end + 1] - positions[end] > closestDistance * 5 ||\n outsideMax) {\n // For each segment, calculate the tick positions from the\n // getTimeTicks utility function. The interval will be the\n // same regardless of how long the segment is.\n if (positions[end] > lastGroupPosition) { // #1475\n segmentPositions = time.getTimeTicks(normalizedInterval, positions[start], positions[end], startOfWeek);\n // Prevent duplicate groups, for example for multiple\n // segments within one larger time frame (#1475)\n while (segmentPositions.length &&\n segmentPositions[0] <= lastGroupPosition) {\n segmentPositions.shift();\n }\n if (segmentPositions.length) {\n lastGroupPosition =\n segmentPositions[segmentPositions.length - 1];\n }\n segmentStarts.push(groupPositions.length);\n groupPositions = groupPositions.concat(segmentPositions);\n }\n // Set start of next segment\n start = end + 1;\n }\n if (outsideMax) {\n break;\n }\n }\n // Get the grouping info from the last of the segments. The info is\n // the same for all segments.\n if (segmentPositions) {\n info = segmentPositions.info;\n // Optionally identify ticks with higher rank, for example\n // when the ticks have crossed midnight.\n if (findHigherRanks && info.unitRange <= timeUnits.hour) {\n end = groupPositions.length - 1;\n // Compare points two by two\n for (start = 1; start < end; start++) {\n if (time.dateFormat('%d', groupPositions[start]) !==\n time.dateFormat('%d', groupPositions[start - 1])) {\n higherRanks[groupPositions[start]] = 'day';\n hasCrossedHigherRank = true;\n }\n }\n // If the complete array has crossed midnight, we want\n // to mark the first positions also as higher rank\n if (hasCrossedHigherRank) {\n higherRanks[groupPositions[0]] = 'day';\n }\n info.higherRanks = higherRanks;\n }\n // Save the info\n info.segmentStarts = segmentStarts;\n groupPositions.info = info;\n }\n else {\n OrdinalAxis_error(12, false, this.chart);\n }\n // Don't show ticks within a gap in the ordinal axis, where the\n // space between two points is greater than a portion of the tick\n // pixel interval\n if (findHigherRanks && OrdinalAxis_defined(tickPixelIntervalOption)) {\n var length_1 = groupPositions.length,\n translatedArr = [],\n distances = [];\n var itemToRemove = void 0,\n translated = void 0,\n lastTranslated = void 0,\n medianDistance = void 0,\n distance = void 0,\n i = length_1;\n // Find median pixel distance in order to keep a reasonably even\n // distance between ticks (#748)\n while (i--) {\n translated = this.translate(groupPositions[i]);\n if (lastTranslated) {\n distances[i] = lastTranslated - translated;\n }\n translatedArr[i] = lastTranslated = translated;\n }\n distances.sort(function (a, b) { return a - b; });\n medianDistance = distances[Math.floor(distances.length / 2)];\n if (medianDistance < tickPixelIntervalOption * 0.6) {\n medianDistance = null;\n }\n // Now loop over again and remove ticks where needed\n i = groupPositions[length_1 - 1] > max ? length_1 - 1 : length_1; // #817\n lastTranslated = void 0;\n while (i--) {\n translated = translatedArr[i];\n distance = Math.abs(lastTranslated - translated);\n // #4175 - when axis is reversed, the distance, is negative but\n // tickPixelIntervalOption positive, so we need to compare the\n // same values\n // Remove ticks that are closer than 0.6 times the pixel\n // interval from the one to the right, but not if it is close to\n // the median distance (#748).\n if (lastTranslated &&\n distance < tickPixelIntervalOption * 0.8 &&\n (medianDistance === null || distance < medianDistance * 0.8)) {\n // Is this a higher ranked position with a normal\n // position to the right?\n if (higherRanks[groupPositions[i]] &&\n !higherRanks[groupPositions[i + 1]]) {\n // Yes: remove the lower ranked neighbour to the\n // right\n itemToRemove = i + 1;\n lastTranslated = translated; // #709\n }\n else {\n // No: remove this one\n itemToRemove = i;\n }\n groupPositions.splice(itemToRemove, 1);\n }\n else {\n lastTranslated = translated;\n }\n }\n }\n return groupPositions;\n }\n /**\n * Get axis position of given index of the extended ordinal positions.\n * Used only when panning an ordinal axis.\n *\n * @private\n * @function Highcharts.Axis#index2val\n * @param {number} index\n * The index value of searched point\n */\n function index2val(index) {\n var axis = this,\n ordinal = axis.ordinal, \n // Context could be changed to extendedOrdinalPositions.\n ordinalPositions = ordinal.positions;\n // The visible range contains only equally spaced values.\n if (!ordinalPositions) {\n return index;\n }\n var i = ordinalPositions.length - 1,\n distance;\n if (index < 0) { // Out of range, in effect panning to the left\n index = ordinalPositions[0];\n }\n else if (index > i) { // Out of range, panning to the right\n index = ordinalPositions[i];\n }\n else { // Split it up\n i = Math.floor(index);\n distance = index - i; // The decimal\n }\n if (typeof distance !== 'undefined' &&\n typeof ordinalPositions[i] !== 'undefined') {\n return ordinalPositions[i] + (distance ?\n distance *\n (ordinalPositions[i + 1] - ordinalPositions[i]) :\n 0);\n }\n return index;\n }\n /**\n * Translate from linear (internal) to axis value.\n *\n * @private\n * @function Highcharts.Axis#lin2val\n * @param {number} val\n * The linear abstracted value.\n */\n function lin2val(val) {\n var axis = this,\n ordinal = axis.ordinal,\n localMin = axis.old ? axis.old.min : axis.min,\n localA = axis.old ? axis.old.transA : axis.transA;\n // Always use extendedPositions (#19816)\n var positions = ordinal.getExtendedPositions();\n // In some cases (especially in early stages of the chart creation) the\n // getExtendedPositions might return undefined.\n if (positions === null || positions === void 0 ? void 0 : positions.length) {\n // Convert back from modivied value to pixels. // #15970\n var pixelVal = OrdinalAxis_correctFloat((val - localMin) * localA +\n axis.minPixelPadding),\n index = OrdinalAxis_correctFloat(ordinal.getIndexOfPoint(pixelVal,\n positions)),\n mantissa = OrdinalAxis_correctFloat(index % 1);\n // Check if the index is inside position array. If true,\n // read/approximate value for that exact index.\n if (index >= 0 && index <= positions.length - 1) {\n var leftNeighbour = positions[Math.floor(index)],\n rightNeighbour = positions[Math.ceil(index)],\n distance = rightNeighbour - leftNeighbour;\n return positions[Math.floor(index)] + mantissa * distance;\n }\n }\n // If the value is outside positions array, return initial value\n return val; // #16784\n }\n /**\n * Internal function to calculate the precise index in ordinalPositions\n * array.\n * @private\n */\n function getIndexInArray(ordinalPositions, val) {\n var index = OrdinalAxis.Additions.findIndexOf(ordinalPositions,\n val,\n true);\n if (ordinalPositions[index] === val) {\n return index;\n }\n var percent = (val - ordinalPositions[index]) /\n (ordinalPositions[index + 1] - ordinalPositions[index]);\n return index + percent;\n }\n /**\n * @private\n */\n function onAxisAfterInit() {\n var axis = this;\n if (!axis.ordinal) {\n axis.ordinal = new OrdinalAxis.Additions(axis);\n }\n }\n /**\n * @private\n */\n function onAxisFoundExtremes() {\n var axis = this,\n eventArgs = axis.eventArgs,\n options = axis.options;\n if (axis.isXAxis &&\n OrdinalAxis_defined(options.overscroll) &&\n options.overscroll !== 0 &&\n OrdinalAxis_isNumber(axis.max) &&\n OrdinalAxis_isNumber(axis.min)) {\n if (axis.options.ordinal && !axis.ordinal.originalOrdinalRange) {\n // Calculate the original ordinal range\n axis.ordinal.getExtendedPositions(false);\n }\n if (axis.max === axis.dataMax &&\n (\n // Panning is an exception. We don't want to apply\n // overscroll when panning over the dataMax\n (eventArgs === null || eventArgs === void 0 ? void 0 : eventArgs.trigger) !== 'pan' ||\n axis.isInternal) &&\n // Scrollbar buttons are the other execption\n (eventArgs === null || eventArgs === void 0 ? void 0 : eventArgs.trigger) !== 'navigator') {\n var overscroll = axis.ordinal.convertOverscroll(options.overscroll);\n axis.max += overscroll;\n // Live data and buttons require translation for the min:\n if (!axis.isInternal &&\n OrdinalAxis_defined(axis.userMin) &&\n (eventArgs === null || eventArgs === void 0 ? void 0 : eventArgs.trigger) !== 'mousewheel') {\n axis.min += overscroll;\n }\n }\n }\n }\n /**\n * For ordinal axis, that loads data async, redraw axis after data is\n * loaded. If we don't do that, axis will have the same extremes as\n * previously, but ordinal positions won't be calculated. See #10290\n * @private\n */\n function onAxisAfterSetScale() {\n var axis = this;\n if (axis.horiz && !axis.isDirty) {\n axis.isDirty = axis.isOrdinal &&\n axis.chart.navigator &&\n !axis.chart.navigator.adaptToUpdatedData;\n }\n }\n /**\n * @private\n */\n function onAxisInitialAxisTranslation() {\n var axis = this;\n if (axis.ordinal) {\n axis.ordinal.beforeSetTickPositions();\n axis.tickInterval = axis.ordinal.postProcessTickInterval(axis.tickInterval);\n }\n }\n /**\n * Extending the Chart.pan method for ordinal axes\n * @private\n */\n function onChartPan(e) {\n var chart = this,\n xAxis = chart.xAxis[0],\n overscroll = xAxis.ordinal.convertOverscroll(xAxis.options.overscroll),\n chartX = e.originalEvent.chartX,\n panning = chart.options.chart.panning;\n var runBase = false;\n if (panning &&\n panning.type !== 'y' &&\n xAxis.options.ordinal &&\n xAxis.series.length &&\n // On touch devices, let default function handle the pinching\n (!e.touches || e.touches.length <= 1)) {\n var mouseDownX = chart.mouseDownX,\n extremes = xAxis.getExtremes(),\n dataMin = extremes.dataMin,\n dataMax = extremes.dataMax,\n min = extremes.min,\n max = extremes.max,\n hoverPoints = chart.hoverPoints,\n closestPointRange = (xAxis.closestPointRange ||\n (xAxis.ordinal && xAxis.ordinal.overscrollPointsRange)),\n pointPixelWidth = (xAxis.translationSlope *\n (xAxis.ordinal.slope || closestPointRange)), \n // How many ordinal units did we move?\n movedUnits = Math.round((mouseDownX - chartX) / pointPixelWidth), \n // Get index of all the chart's points\n extendedOrdinalPositions = xAxis.ordinal.getExtendedPositions(),\n extendedAxis = {\n ordinal: {\n positions: extendedOrdinalPositions,\n extendedOrdinalPositions: extendedOrdinalPositions\n }\n },\n index2val_1 = xAxis.index2val,\n val2lin_1 = xAxis.val2lin;\n var trimmedRange = void 0,\n ordinalPositions = void 0;\n // Make sure panning to the edges does not decrease the zoomed range\n if ((min <= dataMin && movedUnits < 0) ||\n (max + overscroll >= dataMax && movedUnits > 0)) {\n return;\n }\n // We have an ordinal axis, but the data is equally spaced\n if (!extendedAxis.ordinal.positions) {\n runBase = true;\n }\n else if (Math.abs(movedUnits) > 1) {\n // Remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n // In grouped data series, the last ordinal position represents\n // the grouped data, which is to the left of the real data max.\n // If we don't compensate for this, we will be allowed to pan\n // grouped data series passed the right of the plot area.\n ordinalPositions = extendedAxis.ordinal.positions;\n if (dataMax >\n ordinalPositions[ordinalPositions.length - 1]) {\n ordinalPositions.push(dataMax);\n }\n // Get the new min and max values by getting the ordinal index\n // for the current extreme, then add the moved units and\n // translate back to values. This happens on the extended\n // ordinal positions if the new position is out of range, else\n // it happens on the current x axis which is smaller and faster.\n chart.setFixedRange(max - min);\n trimmedRange = xAxis.navigatorAxis\n .toFixedRange(void 0, void 0, index2val_1.apply(extendedAxis, [\n val2lin_1.apply(extendedAxis, [min, true]) +\n movedUnits\n ]), index2val_1.apply(extendedAxis, [\n val2lin_1.apply(extendedAxis, [max, true]) +\n movedUnits\n ]));\n // Apply it if it is within the available data range\n if (trimmedRange.min >= Math.min(ordinalPositions[0], min) &&\n trimmedRange.max <= Math.max(ordinalPositions[ordinalPositions.length - 1], max) + overscroll) {\n xAxis.setExtremes(trimmedRange.min, trimmedRange.max, true, false, { trigger: 'pan' });\n }\n chart.mouseDownX = chartX; // Set new reference for next run\n css(chart.container, { cursor: 'move' });\n }\n }\n else {\n runBase = true;\n }\n // Revert to the linear chart.pan version\n if (runBase || (panning && /y/.test(panning.type))) {\n if (overscroll) {\n xAxis.max = xAxis.dataMax + overscroll;\n }\n }\n else {\n e.preventDefault();\n }\n }\n /**\n * @private\n */\n function onSeriesUpdatedData() {\n var xAxis = this.xAxis;\n // Destroy the extended ordinal index on updated data\n // and destroy extendedOrdinalPositions, #16055.\n if (xAxis && xAxis.options.ordinal) {\n delete xAxis.ordinal.index;\n delete xAxis.ordinal.originalOrdinalRange;\n }\n }\n /**\n * Translate from a linear axis value to the corresponding ordinal axis\n * position. If there are no gaps in the ordinal axis this will be the\n * same. The translated value is the value that the point would have if\n * the axis was linear, using the same min and max.\n *\n * @private\n * @function Highcharts.Axis#val2lin\n * @param {number} val\n * The axis value.\n * @param {boolean} [toIndex]\n * Whether to return the index in the ordinalPositions or the new value.\n */\n function val2lin(val, toIndex) {\n var axis = this,\n ordinal = axis.ordinal,\n ordinalPositions = ordinal.positions;\n var slope = ordinal.slope,\n extendedOrdinalPositions;\n if (!ordinalPositions) {\n return val;\n }\n var ordinalLength = ordinalPositions.length;\n var ordinalIndex;\n // If the searched value is inside visible plotArea, ivastigate the\n // value basing on ordinalPositions.\n if (ordinalPositions[0] <= val &&\n ordinalPositions[ordinalLength - 1] >= val) {\n ordinalIndex = getIndexInArray(ordinalPositions, val);\n // Final return value is based on ordinalIndex\n }\n else {\n extendedOrdinalPositions =\n ordinal.getExtendedPositions &&\n ordinal.getExtendedPositions();\n if (!(extendedOrdinalPositions && extendedOrdinalPositions.length)) {\n return val;\n }\n var length_2 = extendedOrdinalPositions.length;\n if (!slope) {\n slope =\n (extendedOrdinalPositions[length_2 - 1] -\n extendedOrdinalPositions[0]) /\n length_2;\n }\n // `originalPointReference` is equal to the index of first point of\n // ordinalPositions in extendedOrdinalPositions.\n var originalPositionsReference = getIndexInArray(extendedOrdinalPositions,\n ordinalPositions[0]);\n // If the searched value is outside the visiblePlotArea,\n // check if it is inside extendedOrdinalPositions.\n if (val >= extendedOrdinalPositions[0] &&\n val <=\n extendedOrdinalPositions[length_2 - 1]) {\n // Return Value\n ordinalIndex = getIndexInArray(extendedOrdinalPositions, val) -\n originalPositionsReference;\n }\n else {\n if (!toIndex) {\n // If the value is outside positions array,\n // return initial value, #16784\n return val;\n }\n // Since ordinal.slope is the average distance between 2\n // points on visible plotArea, this can be used to calculate\n // the approximate position of the point, which is outside\n // the extendedOrdinalPositions.\n if (val < extendedOrdinalPositions[0]) {\n var diff = extendedOrdinalPositions[0] - val,\n approximateIndexOffset = diff / slope;\n ordinalIndex =\n -originalPositionsReference -\n approximateIndexOffset;\n }\n else {\n var diff = val -\n extendedOrdinalPositions[length_2 - 1],\n approximateIndexOffset = diff / slope;\n ordinalIndex =\n approximateIndexOffset +\n length_2 -\n originalPositionsReference;\n }\n }\n }\n return toIndex ? ordinalIndex : slope * (ordinalIndex || 0) +\n ordinal.offset;\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * @private\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function Additions(axis) {\n this.index = {};\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculate the ordinal positions before tick positions are calculated.\n * @private\n */\n Additions.prototype.beforeSetTickPositions = function () {\n var _a;\n var axis = this.axis,\n ordinal = axis.ordinal,\n extremes = axis.getExtremes(),\n min = extremes.min,\n max = extremes.max,\n hasBreaks = (_a = axis.brokenAxis) === null || _a === void 0 ? void 0 : _a.hasBreaks,\n isOrdinal = axis.options.ordinal;\n var len,\n uniqueOrdinalPositions,\n dist,\n minIndex,\n maxIndex,\n slope,\n i,\n ordinalPositions = [],\n overscrollPointsRange = Number.MAX_VALUE,\n useOrdinal = false,\n adjustOrdinalExtremesPoints = false,\n isBoosted = false;\n // Apply the ordinal logic\n if (isOrdinal || hasBreaks) { // #4167 YAxis is never ordinal ?\n var distanceBetweenPoint_1 = 0;\n axis.series.forEach(function (series, i) {\n var xData = series.getColumn('x',\n true);\n uniqueOrdinalPositions = [];\n // For an axis with multiple series, check if the distance\n // between points is identical throughout all series.\n if (i > 0 &&\n series.options.id !== 'highcharts-navigator-series' &&\n xData.length > 1) {\n adjustOrdinalExtremesPoints = (distanceBetweenPoint_1 !== xData[1] - xData[0]);\n }\n distanceBetweenPoint_1 = xData[1] - xData[0];\n if (series.boosted) {\n isBoosted = series.boosted;\n }\n if (series.reserveSpace() &&\n (series\n .takeOrdinalPosition !== false || hasBreaks)) {\n // Concatenate the processed X data into the existing\n // positions, or the empty array\n ordinalPositions = ordinalPositions.concat(xData);\n len = ordinalPositions.length;\n // Remove duplicates (#1588)\n ordinalPositions.sort(function (a, b) {\n // Without a custom function it is sorted as strings\n return a - b;\n });\n overscrollPointsRange = Math.min(overscrollPointsRange, OrdinalAxis_pick(\n // Check for a single-point series:\n series.closestPointRange, overscrollPointsRange));\n if (len) {\n i = 0;\n while (i < len - 1) {\n if (ordinalPositions[i] !==\n ordinalPositions[i + 1]) {\n uniqueOrdinalPositions.push(ordinalPositions[i + 1]);\n }\n i++;\n }\n // Check first item:\n if (uniqueOrdinalPositions[0] !==\n ordinalPositions[0]) {\n uniqueOrdinalPositions.unshift(ordinalPositions[0]);\n }\n ordinalPositions = uniqueOrdinalPositions;\n }\n }\n });\n if (!axis.ordinal.originalOrdinalRange) {\n // Calculate current originalOrdinalRange\n axis.ordinal.originalOrdinalRange =\n (ordinalPositions.length - 1) * overscrollPointsRange;\n }\n // If the distance between points is not identical throughout\n // all series, remove the first and last ordinal position to\n // avoid enabling ordinal logic when it is not needed, #17405.\n // Only for boosted series because changes are negligible.\n if (adjustOrdinalExtremesPoints && isBoosted) {\n ordinalPositions.pop();\n ordinalPositions.shift();\n }\n // Cache the length\n len = ordinalPositions.length;\n // Check if we really need the overhead of mapping axis data\n // against the ordinal positions. If the series consist of\n // evenly spaced data any way, we don't need any ordinal logic.\n if (len > 2) { // Two points have equal distance by default\n dist = ordinalPositions[1] - ordinalPositions[0];\n i = len - 1;\n while (i-- && !useOrdinal) {\n if (ordinalPositions[i + 1] - ordinalPositions[i] !==\n dist) {\n useOrdinal = true;\n }\n }\n // When zooming in on a week, prevent axis padding for\n // weekends even though the data within the week is evenly\n // spaced.\n if (!axis.options.keepOrdinalPadding &&\n (ordinalPositions[0] - min > dist ||\n (max -\n ordinalPositions[ordinalPositions.length - 1]) > dist)) {\n useOrdinal = true;\n }\n }\n else if (axis.options.overscroll) {\n if (len === 2) {\n // Exactly two points, distance for overscroll is fixed:\n overscrollPointsRange =\n ordinalPositions[1] - ordinalPositions[0];\n }\n else if (len === 1) {\n // We have just one point, closest distance is unknown.\n // Assume then it is last point and overscrolled range:\n overscrollPointsRange = axis.ordinal.convertOverscroll(axis.options.overscroll);\n ordinalPositions = [\n ordinalPositions[0],\n ordinalPositions[0] + overscrollPointsRange\n ];\n }\n else {\n // In case of zooming in on overscrolled range, stick to\n // the old range:\n overscrollPointsRange = ordinal.overscrollPointsRange;\n }\n }\n // Record the slope and offset to compute the linear values from\n // the array index. Since the ordinal positions may exceed the\n // current range, get the start and end positions within it\n // (#719, #665b)\n if (useOrdinal || axis.forceOrdinal) {\n if (axis.options.overscroll) {\n ordinal.overscrollPointsRange = overscrollPointsRange;\n ordinalPositions = ordinalPositions.concat(ordinal.getOverscrollPositions());\n }\n // Register\n ordinal.positions = ordinalPositions;\n // This relies on the ordinalPositions being set. Use\n // Math.max and Math.min to prevent padding on either sides\n // of the data.\n minIndex = axis.ordinal2lin(// #5979\n Math.max(min, ordinalPositions[0]), true);\n maxIndex = Math.max(axis.ordinal2lin(Math.min(max, ordinalPositions[ordinalPositions.length - 1]), true), 1); // #3339\n // Set the slope and offset of the values compared to the\n // indices in the ordinal positions.\n ordinal.slope = slope =\n (max - min) / (maxIndex - minIndex);\n ordinal.offset = min - (minIndex * slope);\n }\n else {\n ordinal.overscrollPointsRange = OrdinalAxis_pick(axis.closestPointRange, ordinal.overscrollPointsRange);\n ordinal.positions = axis.ordinal.slope = ordinal.offset =\n void 0;\n }\n }\n axis.isOrdinal = isOrdinal && useOrdinal; // #3818, #4196, #4926\n ordinal.groupIntervalFactor = null; // Reset for next run\n };\n /**\n * Faster way of using the Array.indexOf method.\n * Works for sorted arrays only with unique values.\n *\n * @param {Array} sortedArray\n * The sorted array inside which we are looking for.\n * @param {number} key\n * The key to being found.\n * @param {boolean} indirectSearch\n * In case of lack of the point in the array, should return\n * value be equal to -1 or the closest smaller index.\n * @private\n */\n Additions.findIndexOf = function (sortedArray, key, indirectSearch) {\n var start = 0,\n end = sortedArray.length - 1,\n middle;\n while (start < end) {\n middle = Math.ceil((start + end) / 2);\n // Key found as the middle element.\n if (sortedArray[middle] <= key) {\n // Continue searching to the right.\n start = middle;\n }\n else {\n // Continue searching to the left.\n end = middle - 1;\n }\n }\n if (sortedArray[start] === key) {\n return start;\n }\n // Key could not be found.\n return !indirectSearch ? -1 : start;\n };\n /**\n * Get the ordinal positions for the entire data set. This is necessary\n * in chart panning because we need to find out what points or data\n * groups are available outside the visible range. When a panning\n * operation starts, if an index for the given grouping does not exists,\n * it is created and cached. This index is deleted on updated data, so\n * it will be regenerated the next time a panning operation starts.\n * @private\n */\n Additions.prototype.getExtendedPositions = function (withOverscroll) {\n if (withOverscroll === void 0) { withOverscroll = true; }\n var ordinal = this,\n axis = ordinal.axis,\n axisProto = axis.constructor.prototype,\n chart = axis.chart,\n key = axis.series.reduce(function (k,\n series) {\n var grouping = series.currentDataGrouping;\n return (k +\n (grouping ? grouping.count + grouping.unitName : 'raw'));\n }, ''), overscroll = withOverscroll ?\n axis.ordinal.convertOverscroll(axis.options.overscroll) : 0, extremes = axis.getExtremes();\n var fakeAxis,\n fakeSeries = void 0,\n ordinalIndex = ordinal.index;\n // If this is the first time, or the ordinal index is deleted by\n // updatedData,\n // create it.\n if (!ordinalIndex) {\n ordinalIndex = ordinal.index = {};\n }\n if (!ordinalIndex[key]) {\n // Create a fake axis object where the extended ordinal\n // positions are emulated\n fakeAxis = {\n series: [],\n chart: chart,\n forceOrdinal: false,\n getExtremes: function () {\n return {\n min: extremes.dataMin,\n max: extremes.dataMax + overscroll\n };\n },\n applyGrouping: axisProto.applyGrouping,\n getGroupPixelWidth: axisProto.getGroupPixelWidth,\n getTimeTicks: axisProto.getTimeTicks,\n options: {\n ordinal: true\n },\n ordinal: {\n getGroupIntervalFactor: this.getGroupIntervalFactor\n },\n ordinal2lin: axisProto.ordinal2lin, // #6276\n getIndexOfPoint: axisProto.getIndexOfPoint,\n val2lin: axisProto.val2lin // #2590\n };\n fakeAxis.ordinal.axis = fakeAxis;\n // Add the fake series to hold the full data, then apply\n // processData to it\n axis.series.forEach(function (series) {\n var _a,\n _b,\n _c;\n fakeSeries = {\n xAxis: fakeAxis,\n chart: chart,\n groupPixelWidth: series.groupPixelWidth,\n destroyGroupedData: (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop,\n getColumn: series.getColumn,\n applyGrouping: series.applyGrouping,\n getProcessedData: series.getProcessedData,\n reserveSpace: series.reserveSpace,\n visible: series.visible\n };\n var xData = series.getColumn('x').concat(withOverscroll ?\n ordinal.getOverscrollPositions() :\n []);\n fakeSeries.dataTable = new Data_DataTableCore({\n columns: {\n x: xData\n }\n });\n fakeSeries.options = OrdinalAxis_assign(OrdinalAxis_assign({}, series.options), { dataGrouping: series.currentDataGrouping ? {\n firstAnchor: (_a = series.options.dataGrouping) === null || _a === void 0 ? void 0 : _a.firstAnchor,\n anchor: (_b = series.options.dataGrouping) === null || _b === void 0 ? void 0 : _b.anchor,\n lastAnchor: (_c = series.options.dataGrouping) === null || _c === void 0 ? void 0 : _c.firstAnchor,\n enabled: true,\n forced: true,\n approximation: 'open',\n units: [[\n series.currentDataGrouping.unitName,\n [series.currentDataGrouping.count]\n ]]\n } : {\n enabled: false\n } });\n fakeAxis.series.push(fakeSeries);\n series.processData.apply(fakeSeries);\n });\n fakeAxis.applyGrouping({ hasExtremesChanged: true });\n // Force to use the ordinal when points are evenly spaced (e.g.\n // weeks), #3825.\n if (((fakeSeries === null || fakeSeries === void 0 ? void 0 : fakeSeries.closestPointRange) !==\n (fakeSeries === null || fakeSeries === void 0 ? void 0 : fakeSeries.basePointRange)) &&\n fakeSeries.currentDataGrouping) {\n fakeAxis.forceOrdinal = true;\n }\n // Run beforeSetTickPositions to compute the ordinalPositions\n axis.ordinal.beforeSetTickPositions.apply({ axis: fakeAxis });\n if (!axis.ordinal.originalOrdinalRange &&\n fakeAxis.ordinal.originalOrdinalRange) {\n axis.ordinal.originalOrdinalRange =\n fakeAxis.ordinal.originalOrdinalRange;\n }\n // Cache it\n if (fakeAxis.ordinal.positions) {\n ordinalIndex[key] = fakeAxis.ordinal.positions;\n }\n }\n return ordinalIndex[key];\n };\n /**\n * Find the factor to estimate how wide the plot area would have been if\n * ordinal gaps were included. This value is used to compute an imagined\n * plot width in order to establish the data grouping interval.\n *\n * A real world case is the intraday-candlestick example. Without this\n * logic, it would show the correct data grouping when viewing a range\n * within each day, but once moving the range to include the gap between\n * two days, the interval would include the cut-away night hours and the\n * data grouping would be wrong. So the below method tries to compensate\n * by identifying the most common point interval, in this case days.\n *\n * An opposite case is presented in issue #718. We have a long array of\n * daily data, then one point is appended one hour after the last point.\n * We expect the data grouping not to change.\n *\n * In the future, if we find cases where this estimation doesn't work\n * optimally, we might need to add a second pass to the data grouping\n * logic, where we do another run with a greater interval if the number\n * of data groups is more than a certain fraction of the desired group\n * count.\n * @private\n */\n Additions.prototype.getGroupIntervalFactor = function (xMin, xMax, series) {\n var ordinal = this,\n processedXData = series.getColumn('x',\n true),\n len = processedXData.length,\n distances = [];\n var median,\n i,\n groupIntervalFactor = ordinal.groupIntervalFactor;\n // Only do this computation for the first series, let the other\n // inherit it (#2416)\n if (!groupIntervalFactor) {\n // Register all the distances in an array\n for (i = 0; i < len - 1; i++) {\n distances[i] = (processedXData[i + 1] -\n processedXData[i]);\n }\n // Sort them and find the median\n distances.sort(function (a, b) {\n return a - b;\n });\n median = distances[Math.floor(len / 2)];\n // Compensate for series that don't extend through the entire\n // axis extent. #1675.\n xMin = Math.max(xMin, processedXData[0]);\n xMax = Math.min(xMax, processedXData[len - 1]);\n ordinal.groupIntervalFactor = groupIntervalFactor =\n (len * median) / (xMax - xMin);\n }\n // Return the factor needed for data grouping\n return groupIntervalFactor;\n };\n /**\n * Get index of point inside the ordinal positions array.\n *\n * @private\n * @param {number} pixelVal\n * The pixel value of a point.\n *\n * @param {Array<number>} [ordinalArray]\n * An array of all points available on the axis for the given data set.\n * Either ordinalPositions if the value is inside the plotArea or\n * extendedOrdinalPositions if not.\n */\n Additions.prototype.getIndexOfPoint = function (pixelVal, ordinalArray) {\n var ordinal = this,\n axis = ordinal.axis,\n min = axis.min,\n minX = axis.minPixelPadding,\n indexOfMin = getIndexInArray(ordinalArray,\n min);\n var ordinalPointPixelInterval = axis.translationSlope *\n (ordinal.slope ||\n axis.closestPointRange ||\n ordinal.overscrollPointsRange);\n var shiftIndex = OrdinalAxis_correctFloat((pixelVal - minX) / ordinalPointPixelInterval);\n return indexOfMin + shiftIndex;\n };\n /**\n * Get ticks for an ordinal axis within a range where points don't\n * exist. It is required when overscroll is enabled. We can't base on\n * points, because we may not have any, so we use approximated\n * pointRange and generate these ticks between Axis.dataMax,\n * Axis.dataMax + Axis.overscroll evenly spaced. Used in panning and\n * navigator scrolling.\n * @private\n */\n Additions.prototype.getOverscrollPositions = function () {\n var ordinal = this,\n axis = ordinal.axis,\n extraRange = ordinal.convertOverscroll(axis.options.overscroll),\n distance = ordinal.overscrollPointsRange,\n positions = [];\n var max = axis.dataMax;\n if (OrdinalAxis_defined(distance)) {\n // Max + pointRange because we need to scroll to the last\n while (max < axis.dataMax + extraRange) {\n max += distance;\n positions.push(max);\n }\n }\n return positions;\n };\n /**\n * Make the tick intervals closer because the ordinal gaps make the\n * ticks spread out or cluster.\n * @private\n */\n Additions.prototype.postProcessTickInterval = function (tickInterval) {\n // Problem: https://jsfiddle.net/highcharts/FQm4E/1/. This is a case\n // where this algorithm doesn't work optimally. In this case, the\n // tick labels are spread out per week, but all the gaps reside\n // within weeks. So we have a situation where the labels are courser\n // than the ordinal gaps, and thus the tick interval should not be\n // altered.\n var ordinal = this,\n axis = ordinal.axis,\n ordinalSlope = ordinal.slope,\n closestPointRange = axis.closestPointRange;\n var ret;\n if (ordinalSlope && closestPointRange) {\n if (!axis.options.breaks) {\n ret = (tickInterval /\n (ordinalSlope / closestPointRange));\n }\n else {\n ret = closestPointRange || tickInterval; // #7275\n }\n }\n else {\n ret = tickInterval;\n }\n return ret;\n };\n /**\n * If overscroll is pixel or pecentage value, convert it to axis range.\n *\n * @private\n * @param {number | string} overscroll\n * Overscroll value in axis range, pixels or percentage value.\n * @return {number}\n * Overscroll value in axis range.\n */\n Additions.prototype.convertOverscroll = function (overscroll) {\n if (overscroll === void 0) { overscroll = 0; }\n var ordinal = this,\n axis = ordinal.axis,\n calculateOverscroll = function (overscrollPercentage) {\n return OrdinalAxis_pick(ordinal.originalOrdinalRange,\n OrdinalAxis_defined(axis.dataMax) && OrdinalAxis_defined(axis.dataMin) ?\n axis.dataMax - axis.dataMin : 0) * overscrollPercentage;\n };\n if (isString(overscroll)) {\n var overscrollValue = parseInt(overscroll, 10);\n if (/%$/.test(overscroll)) {\n // If overscroll is percentage\n return calculateOverscroll(overscrollValue / 100);\n }\n if (/px/.test(overscroll)) {\n // If overscroll is pixels, it is limited to 90% of the axis\n // length to prevent division by zero\n var limitedOverscrollValue = Math.min(overscrollValue,\n axis.len * 0.9),\n pixelToPercent = limitedOverscrollValue / axis.len;\n return calculateOverscroll(pixelToPercent / (1 - pixelToPercent));\n }\n // If overscroll is a string but not pixels or percentage,\n // return 0 as no overscroll\n return 0;\n }\n return overscroll;\n };\n return Additions;\n }());\n OrdinalAxis.Additions = Additions;\n})(OrdinalAxis || (OrdinalAxis = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Axis_OrdinalAxis = (OrdinalAxis);\n\n;// ./code/es5/es-modules/Stock/RangeSelector/RangeSelector.js\n/* *\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar RangeSelector_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\n\n\n\n\nvar RangeSelector_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, createElement = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).createElement, RangeSelector_css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css, RangeSelector_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, RangeSelector_destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, diffObjects = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).diffObjects, discardElement = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).discardElement, RangeSelector_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, RangeSelector_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, RangeSelector_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, RangeSelector_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, RangeSelector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, RangeSelector_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, RangeSelector_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, RangeSelector_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Get the preferred input type based on a date format string.\n *\n * @private\n * @function preferredInputType\n */\nfunction preferredInputType(format) {\n var hasTimeKey = function (char) {\n return new RegExp(\"%[[a-zA-Z]*\".concat(char)).test(format);\n };\n var ms = RangeSelector_isString(format) ?\n format.indexOf('%L') !== -1 :\n // Implemented but not typed as of 2024\n format.fractionalSecondDigits;\n if (ms) {\n return 'text';\n }\n var date = RangeSelector_isString(format) ?\n ['a', 'A', 'd', 'e', 'w', 'b', 'B', 'm', 'o', 'y', 'Y']\n .some(hasTimeKey) :\n format.dateStyle || format.day || format.month || format.year;\n var time = RangeSelector_isString(format) ?\n ['H', 'k', 'I', 'l', 'M', 'S'].some(hasTimeKey) :\n format.timeStyle || format.hour || format.minute || format.second;\n if (date && time) {\n return 'datetime-local';\n }\n if (date) {\n return 'date';\n }\n if (time) {\n return 'time';\n }\n return 'text';\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * The range selector.\n *\n * @private\n * @class\n * @name Highcharts.RangeSelector\n * @param {Highcharts.Chart} chart\n */\nvar RangeSelector = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function RangeSelector(chart) {\n var _this = this;\n this.isDirty = false;\n this.buttonOptions = RangeSelector.prototype.defaultButtons;\n this.initialButtonGroupWidth = 0;\n this.maxButtonWidth = function () {\n var buttonWidth = 0;\n _this.buttons.forEach(function (button) {\n var bBox = button.getBBox();\n if (bBox.width > buttonWidth) {\n buttonWidth = bBox.width;\n }\n });\n return buttonWidth;\n };\n this.init(chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n RangeSelector.compose = function (AxisClass, ChartClass) {\n RangeSelector_RangeSelectorComposition.compose(AxisClass, ChartClass, RangeSelector);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * The method to run when one of the buttons in the range selectors is\n * clicked\n *\n * @private\n * @function Highcharts.RangeSelector#clickButton\n * @param {number} i\n * The index of the button\n * @param {boolean} [redraw]\n */\n RangeSelector.prototype.clickButton = function (i, redraw) {\n var rangeSelector = this,\n chart = rangeSelector.chart,\n rangeOptions = rangeSelector.buttonOptions[i],\n baseAxis = chart.xAxis[0],\n unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {},\n type = rangeOptions.type,\n dataGrouping = rangeOptions.dataGrouping;\n var dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n newMin,\n newMax = RangeSelector_isNumber(baseAxis === null || baseAxis === void 0 ? void 0 : baseAxis.max) ? Math.round(Math.min(baseAxis.max,\n dataMax !== null && dataMax !== void 0 ? dataMax : baseAxis.max)) : void 0, // #1568\n baseXAxisOptions,\n range = rangeOptions._range,\n rangeMin,\n ctx,\n ytdExtremes,\n addOffsetMin = true;\n // Chart has no data, base series is removed\n if (dataMin === null || dataMax === null) {\n return;\n }\n rangeSelector.setSelected(i);\n // Apply dataGrouping associated to button\n if (dataGrouping) {\n this.forcedDataGrouping = true;\n highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default().prototype.setDataGrouping.call(baseAxis || { chart: this.chart }, dataGrouping, false);\n this.frozenStates = rangeOptions.preserveDataGrouping;\n }\n // Apply range\n if (type === 'month' || type === 'year') {\n if (!baseAxis) {\n // This is set to the user options and picked up later when the\n // axis is instantiated so that we know the min and max.\n range = rangeOptions;\n }\n else {\n ctx = {\n range: rangeOptions,\n max: newMax,\n chart: chart,\n dataMin: dataMin,\n dataMax: dataMax\n };\n newMin = baseAxis.minFromRange.call(ctx);\n if (RangeSelector_isNumber(ctx.newMax)) {\n newMax = ctx.newMax;\n }\n // #15799: offsetMin is added in minFromRange so that it works\n // with pre-selected buttons as well\n addOffsetMin = false;\n }\n // Fixed times like minutes, hours, days\n }\n else if (range) {\n if (RangeSelector_isNumber(newMax)) {\n newMin = Math.max(newMax - range, dataMin);\n newMax = Math.min(newMin + range, dataMax);\n addOffsetMin = false;\n }\n }\n else if (type === 'ytd') {\n // On user clicks on the buttons, or a delayed action running from\n // the beforeRender event (below), the baseAxis is defined.\n if (baseAxis) {\n // When \"ytd\" is the pre-selected button for the initial view,\n // its calculation is delayed and rerun in the beforeRender\n // event (below). When the series are initialized, but before\n // the chart is rendered, we have access to the xData array\n // (#942).\n if (baseAxis.hasData() && (!RangeSelector_isNumber(dataMax) ||\n !RangeSelector_isNumber(dataMin))) {\n dataMin = Number.MAX_VALUE;\n dataMax = -Number.MAX_VALUE;\n chart.series.forEach(function (series) {\n // Reassign it to the last item\n var xData = series.getColumn('x');\n if (xData.length) {\n dataMin = Math.min(xData[0], dataMin);\n dataMax = Math.max(xData[xData.length - 1], dataMax);\n }\n });\n redraw = false;\n }\n if (RangeSelector_isNumber(dataMax) && RangeSelector_isNumber(dataMin)) {\n ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin);\n newMin = rangeMin = ytdExtremes.min;\n newMax = ytdExtremes.max;\n }\n // \"ytd\" is pre-selected. We don't yet have access to processed\n // point and extremes data (things like pointStart and pointInterval\n // are missing), so we delay the process (#942)\n }\n else {\n rangeSelector.deferredYTDClick = i;\n return;\n }\n }\n else if (type === 'all' && baseAxis) {\n // If the navigator exist and the axis range is declared reset that\n // range and from now on only use the range set by a user, #14742.\n if (chart.navigator && chart.navigator.baseSeries[0]) {\n chart.navigator.baseSeries[0].xAxis.options.range = void 0;\n }\n newMin = dataMin;\n newMax = dataMax;\n }\n if (addOffsetMin && rangeOptions._offsetMin && RangeSelector_defined(newMin)) {\n newMin += rangeOptions._offsetMin;\n }\n if (rangeOptions._offsetMax && RangeSelector_defined(newMax)) {\n newMax += rangeOptions._offsetMax;\n }\n if (this.dropdown) {\n this.dropdown.selectedIndex = i + 1;\n }\n // Update the chart\n if (!baseAxis) {\n // Axis not yet instantiated. Temporarily set min and range\n // options and axes once defined and remove them on\n // chart load (#4317 & #20529).\n baseXAxisOptions = RangeSelector_splat(chart.options.xAxis || {})[0];\n var axisRangeUpdateEvent_1 = RangeSelector_addEvent(chart, 'afterCreateAxes',\n function () {\n var xAxis = chart.xAxis[0];\n xAxis.range = xAxis.options.range = range;\n xAxis.min = xAxis.options.min = rangeMin;\n });\n RangeSelector_addEvent(chart, 'load', function resetMinAndRange() {\n var xAxis = chart.xAxis[0];\n chart.setFixedRange(rangeOptions._range);\n xAxis.options.range = baseXAxisOptions.range;\n xAxis.options.min = baseXAxisOptions.min;\n axisRangeUpdateEvent_1(); // Remove event\n });\n }\n else if (RangeSelector_isNumber(newMin) && RangeSelector_isNumber(newMax)) {\n // Existing axis object. Set extremes after render time.\n baseAxis.setExtremes(newMin, newMax, RangeSelector_pick(redraw, true), void 0, // Auto animation\n {\n trigger: 'rangeSelectorButton',\n rangeSelectorButton: rangeOptions\n });\n chart.setFixedRange(rangeOptions._range);\n }\n RangeSelector_fireEvent(this, 'afterBtnClick');\n };\n /**\n * Set the selected option. This method only sets the internal flag, it\n * doesn't update the buttons or the actual zoomed range.\n *\n * @private\n * @function Highcharts.RangeSelector#setSelected\n * @param {number} [selected]\n */\n RangeSelector.prototype.setSelected = function (selected) {\n this.selected = this.options.selected = selected;\n };\n /**\n * Initialize the range selector\n *\n * @private\n * @function Highcharts.RangeSelector#init\n * @param {Highcharts.Chart} chart\n */\n RangeSelector.prototype.init = function (chart) {\n var rangeSelector = this,\n options = chart.options.rangeSelector,\n buttonOptions = options.buttons,\n selectedOption = options.selected,\n blurInputs = function () {\n var minInput = rangeSelector.minInput,\n maxInput = rangeSelector.maxInput;\n // #3274 in some case blur is not defined\n if (minInput && !!minInput.blur) {\n RangeSelector_fireEvent(minInput, 'blur');\n }\n if (maxInput && !!maxInput.blur) {\n RangeSelector_fireEvent(maxInput, 'blur');\n }\n };\n rangeSelector.chart = chart;\n rangeSelector.options = options;\n rangeSelector.buttons = [];\n rangeSelector.buttonOptions = buttonOptions;\n this.eventsToUnbind = [];\n this.eventsToUnbind.push(RangeSelector_addEvent(chart.container, 'mousedown', blurInputs));\n this.eventsToUnbind.push(RangeSelector_addEvent(chart, 'resize', blurInputs));\n // Extend the buttonOptions with actual range\n buttonOptions.forEach(rangeSelector.computeButtonRange);\n // Zoomed range based on a pre-selected button index\n if (typeof selectedOption !== 'undefined' &&\n buttonOptions[selectedOption]) {\n this.clickButton(selectedOption, false);\n }\n this.eventsToUnbind.push(RangeSelector_addEvent(chart, 'load', function () {\n // If a data grouping is applied to the current button, release it\n // when extremes change\n if (chart.xAxis && chart.xAxis[0]) {\n RangeSelector_addEvent(chart.xAxis[0], 'setExtremes', function (e) {\n if (RangeSelector_isNumber(this.max) &&\n RangeSelector_isNumber(this.min) &&\n this.max - this.min !== chart.fixedRange &&\n e.trigger !== 'rangeSelectorButton' &&\n e.trigger !== 'updatedData' &&\n rangeSelector.forcedDataGrouping &&\n !rangeSelector.frozenStates) {\n this.setDataGrouping(false, false);\n }\n });\n }\n }));\n this.createElements();\n };\n /**\n * Dynamically update the range selector buttons after a new range has been\n * set\n *\n * @private\n * @function Highcharts.RangeSelector#updateButtonStates\n */\n RangeSelector.prototype.updateButtonStates = function () {\n var rangeSelector = this,\n chart = this.chart,\n dropdown = this.dropdown,\n dropdownLabel = this.dropdownLabel,\n baseAxis = chart.xAxis[0],\n actualRange = Math.round(baseAxis.max - baseAxis.min),\n hasNoData = !baseAxis.hasVisibleSeries,\n day = 24 * 36e5, // A single day in milliseconds\n unionExtremes = (chart.scroller &&\n chart.scroller.getUnionExtremes()) || baseAxis,\n dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n ytdExtremes = rangeSelector.getYTDExtremes(dataMax,\n dataMin),\n ytdMin = ytdExtremes.min,\n ytdMax = ytdExtremes.max,\n selected = rangeSelector.selected,\n allButtonsEnabled = rangeSelector.options.allButtonsEnabled,\n buttonStates = new Array(rangeSelector.buttonOptions.length)\n .fill(0),\n selectedExists = RangeSelector_isNumber(selected),\n buttons = rangeSelector.buttons;\n var isSelectedTooGreat = false,\n selectedIndex = null;\n rangeSelector.buttonOptions.forEach(function (rangeOptions, i) {\n var _a;\n var range = rangeOptions._range,\n type = rangeOptions.type,\n count = rangeOptions.count || 1,\n offsetRange = rangeOptions._offsetMax -\n rangeOptions._offsetMin,\n isSelected = i === selected, \n // Disable buttons where the range exceeds what is allowed i;\n // the current view\n isTooGreatRange = range >\n dataMax - dataMin, \n // Disable buttons where the range is smaller than the minimum\n // range\n isTooSmallRange = range < baseAxis.minRange;\n // Do not select the YTD button if not explicitly told so\n var isYTDButNotSelected = false, \n // Disable the All button if we're already showing all\n isSameRange = range === actualRange;\n if (isSelected && isTooGreatRange) {\n isSelectedTooGreat = true;\n }\n if (baseAxis.isOrdinal &&\n ((_a = baseAxis.ordinal) === null || _a === void 0 ? void 0 : _a.positions) &&\n range &&\n actualRange < range) {\n // Handle ordinal ranges\n var positions = baseAxis.ordinal.positions,\n prevOrdinalPosition = Axis_OrdinalAxis.Additions.findIndexOf(positions,\n baseAxis.min,\n true),\n nextOrdinalPosition = Math.min(Axis_OrdinalAxis.Additions.findIndexOf(positions,\n baseAxis.max,\n true) + 1,\n positions.length - 1);\n if (positions[nextOrdinalPosition] -\n positions[prevOrdinalPosition] > range) {\n isSameRange = true;\n }\n }\n else if (\n // Months and years have variable range so we check the extremes\n (type === 'month' || type === 'year') &&\n (actualRange + 36e5 >=\n { month: 28, year: 365 }[type] * day * count - offsetRange) &&\n (actualRange - 36e5 <=\n { month: 31, year: 366 }[type] * day * count + offsetRange)) {\n isSameRange = true;\n }\n else if (type === 'ytd') {\n isSameRange = (ytdMax - ytdMin + offsetRange) === actualRange;\n isYTDButNotSelected = !isSelected;\n }\n else if (type === 'all') {\n isSameRange = (baseAxis.max - baseAxis.min >=\n dataMax - dataMin);\n }\n // The new zoom area happens to match the range for a button - mark\n // it selected. This happens when scrolling across an ordinal gap.\n // It can be seen in the intraday demos when selecting 1h and scroll\n // across the night gap.\n var disable = (!allButtonsEnabled &&\n !(isSelectedTooGreat && type === 'all') &&\n (isTooGreatRange ||\n isTooSmallRange ||\n hasNoData));\n var select = ((isSelectedTooGreat && type === 'all') ||\n (isYTDButNotSelected ? false : isSameRange) ||\n (isSelected && rangeSelector.frozenStates));\n if (disable) {\n buttonStates[i] = 3;\n }\n else if (select) {\n if (!selectedExists || i === selected) {\n selectedIndex = i;\n }\n }\n });\n if (selectedIndex !== null) {\n buttonStates[selectedIndex] = 2;\n rangeSelector.setSelected(selectedIndex);\n if (this.dropdown) {\n this.dropdown.selectedIndex = selectedIndex + 1;\n }\n }\n else {\n rangeSelector.setSelected();\n if (this.dropdown) {\n this.dropdown.selectedIndex = -1;\n }\n if (dropdownLabel) {\n dropdownLabel.setState(0);\n dropdownLabel.attr({\n text: (RangeSelector_defaultOptions.lang.rangeSelectorZoom || '') + ' ▾'\n });\n }\n }\n for (var i = 0; i < buttonStates.length; i++) {\n var state = buttonStates[i];\n var button = buttons[i];\n if (button.state !== state) {\n button.setState(state);\n if (dropdown) {\n dropdown.options[i + 1].disabled = (state === 3);\n if (state === 2) {\n if (dropdownLabel) {\n dropdownLabel.setState(2);\n dropdownLabel.attr({\n text: rangeSelector.buttonOptions[i].text + ' ▾'\n });\n }\n dropdown.selectedIndex = i + 1;\n }\n var bbox = dropdownLabel.getBBox();\n RangeSelector_css(dropdown, {\n width: \"\" + bbox.width + \"px\",\n height: \"\" + bbox.height + \"px\"\n });\n }\n }\n }\n };\n /**\n * Compute and cache the range for an individual button\n *\n * @private\n * @function Highcharts.RangeSelector#computeButtonRange\n * @param {Highcharts.RangeSelectorButtonsOptions} rangeOptions\n */\n RangeSelector.prototype.computeButtonRange = function (rangeOptions) {\n var type = rangeOptions.type,\n count = rangeOptions.count || 1, \n // These time intervals have a fixed number of milliseconds, as\n // opposed to month, ytd and year\n fixedTimes = {\n millisecond: 1,\n second: 1000,\n minute: 60 * 1000,\n hour: 3600 * 1000,\n day: 24 * 3600 * 1000,\n week: 7 * 24 * 3600 * 1000\n };\n // Store the range on the button object\n if (fixedTimes[type]) {\n rangeOptions._range = fixedTimes[type] * count;\n }\n else if (type === 'month' || type === 'year') {\n rangeOptions._range = {\n month: 30,\n year: 365\n }[type] * 24 * 36e5 * count;\n }\n rangeOptions._offsetMin = RangeSelector_pick(rangeOptions.offsetMin, 0);\n rangeOptions._offsetMax = RangeSelector_pick(rangeOptions.offsetMax, 0);\n rangeOptions._range +=\n rangeOptions._offsetMax - rangeOptions._offsetMin;\n };\n /**\n * Get the unix timestamp of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#getInputValue\n */\n RangeSelector.prototype.getInputValue = function (name) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n var options = this.chart.options\n .rangeSelector;\n var time = this.chart.time;\n if (input) {\n return ((input.type === 'text' && options.inputDateParser) ||\n this.defaultInputDateParser)(input.value, time.timezone === 'UTC', time);\n }\n return 0;\n };\n /**\n * Set the internal and displayed value of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#setInputValue\n */\n RangeSelector.prototype.setInputValue = function (name, inputTime) {\n var options = this.options, time = this.chart.time, input = name === 'min' ? this.minInput : this.maxInput, dateBox = name === 'min' ? this.minDateBox : this.maxDateBox;\n if (input) {\n input.setAttribute('type', preferredInputType(options.inputDateFormat || '%e %b %Y'));\n var hcTimeAttr = input.getAttribute('data-hc-time');\n var updatedTime = RangeSelector_defined(hcTimeAttr) ? Number(hcTimeAttr) : void 0;\n if (RangeSelector_defined(inputTime)) {\n var previousTime = updatedTime;\n if (RangeSelector_defined(previousTime)) {\n input.setAttribute('data-hc-time-previous', previousTime);\n }\n input.setAttribute('data-hc-time', inputTime);\n updatedTime = inputTime;\n }\n input.value = time.dateFormat((this.inputTypeFormats[input.type] ||\n options.inputEditDateFormat), updatedTime);\n if (dateBox) {\n dateBox.attr({\n text: time.dateFormat(options.inputDateFormat, updatedTime)\n });\n }\n }\n };\n /**\n * Set the min and max value of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#setInputExtremes\n */\n RangeSelector.prototype.setInputExtremes = function (name, min, max) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input) {\n var format = this.inputTypeFormats[input.type];\n var time = this.chart.time;\n if (format) {\n var newMin = time.dateFormat(format,\n min);\n if (input.min !== newMin) {\n input.min = newMin;\n }\n var newMax = time.dateFormat(format,\n max);\n if (input.max !== newMax) {\n input.max = newMax;\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#showInput\n * @param {string} name\n */\n RangeSelector.prototype.showInput = function (name) {\n var dateBox = name === 'min' ? this.minDateBox : this.maxDateBox, input = name === 'min' ? this.minInput : this.maxInput;\n if (input && dateBox && this.inputGroup) {\n var isTextInput = input.type === 'text',\n _a = this.inputGroup,\n _b = _a.translateX,\n translateX = _b === void 0 ? 0 : _b,\n _c = _a.translateY,\n translateY = _c === void 0 ? 0 : _c,\n _d = dateBox.x,\n x = _d === void 0 ? 0 : _d,\n _e = dateBox.width,\n width = _e === void 0 ? 0 : _e,\n _f = dateBox.height,\n height = _f === void 0 ? 0 : _f,\n inputBoxWidth = this.options.inputBoxWidth;\n RangeSelector_css(input, {\n width: isTextInput ?\n ((width + (inputBoxWidth ? -2 : 20)) + 'px') :\n 'auto',\n height: (height - 2) + 'px',\n border: '2px solid silver'\n });\n if (isTextInput && inputBoxWidth) {\n RangeSelector_css(input, {\n left: (translateX + x) + 'px',\n top: translateY + 'px'\n });\n // Inputs of types date, time or datetime-local should be centered\n // on top of the dateBox\n }\n else {\n RangeSelector_css(input, {\n left: Math.min(Math.round(x +\n translateX -\n (input.offsetWidth - width) / 2), this.chart.chartWidth - input.offsetWidth) + 'px',\n top: (translateY - (input.offsetHeight - height) / 2) + 'px'\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#hideInput\n * @param {string} name\n */\n RangeSelector.prototype.hideInput = function (name) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input) {\n RangeSelector_css(input, {\n top: '-9999em',\n border: 0,\n width: '1px',\n height: '1px'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#defaultInputDateParser\n */\n RangeSelector.prototype.defaultInputDateParser = function (inputDate, useUTC, time) {\n return (time === null || time === void 0 ? void 0 : time.parse(inputDate)) || 0;\n };\n /**\n * Draw either the 'from' or the 'to' HTML input box of the range selector\n *\n * @private\n * @function Highcharts.RangeSelector#drawInput\n */\n RangeSelector.prototype.drawInput = function (name) {\n var _a = this,\n chart = _a.chart,\n div = _a.div,\n inputGroup = _a.inputGroup;\n var rangeSelector = this,\n chartStyle = chart.renderer.style || {},\n renderer = chart.renderer,\n options = chart.options.rangeSelector,\n lang = RangeSelector_defaultOptions.lang,\n isMin = name === 'min';\n /**\n * @private\n */\n function updateExtremes(name) {\n var _a;\n var maxInput = rangeSelector.maxInput,\n minInput = rangeSelector.minInput,\n chartAxis = chart.xAxis[0],\n unionExtremes = ((_a = chart.scroller) === null || _a === void 0 ? void 0 : _a.getUnionExtremes()) || chartAxis,\n dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n currentExtreme = chart.xAxis[0].getExtremes()[name];\n var value = rangeSelector.getInputValue(name);\n if (RangeSelector_isNumber(value) && value !== currentExtreme) {\n // Validate the extremes. If it goes beyond the data min or\n // max, use the actual data extreme (#2438).\n if (isMin && maxInput && RangeSelector_isNumber(dataMin)) {\n if (value > Number(maxInput.getAttribute('data-hc-time'))) {\n value = void 0;\n }\n else if (value < dataMin) {\n value = dataMin;\n }\n }\n else if (minInput && RangeSelector_isNumber(dataMax)) {\n if (value < Number(minInput.getAttribute('data-hc-time'))) {\n value = void 0;\n }\n else if (value > dataMax) {\n value = dataMax;\n }\n }\n // Set the extremes\n if (typeof value !== 'undefined') { // @todo typeof undefined\n chartAxis.setExtremes(isMin ? value : chartAxis.min, isMin ? chartAxis.max : value, void 0, void 0, { trigger: 'rangeSelectorInput' });\n }\n }\n }\n // Create the text label\n var text = lang[isMin ? 'rangeSelectorFrom' : 'rangeSelectorTo'] || '';\n var label = renderer\n .label(text, 0)\n .addClass('highcharts-range-label')\n .attr({\n padding: text ? 2 : 0,\n height: text ? options.inputBoxHeight : 0\n })\n .add(inputGroup);\n // Create an SVG label that shows updated date ranges and records click\n // events that bring in the HTML input.\n var dateBox = renderer\n .label('', 0)\n .addClass('highcharts-range-input')\n .attr({\n padding: 2,\n width: options.inputBoxWidth,\n height: options.inputBoxHeight,\n 'text-align': 'center'\n })\n .on('click',\n function () {\n // If it is already focused, the onfocus event doesn't fire\n // (#3713)\n rangeSelector.showInput(name);\n rangeSelector[name + 'Input'].focus();\n });\n if (!chart.styledMode) {\n dateBox.attr({\n stroke: options.inputBoxBorderColor,\n 'stroke-width': 1\n });\n }\n dateBox.add(inputGroup);\n // Create the HTML input element. This is rendered as 1x1 pixel then set\n // to the right size when focused.\n var input = createElement('input', {\n name: name,\n className: 'highcharts-range-selector'\n },\n void 0,\n div);\n // #14788: Setting input.type to an unsupported type throws in IE, so\n // we need to use setAttribute instead\n input.setAttribute('type', preferredInputType(options.inputDateFormat || '%e %b %Y'));\n if (!chart.styledMode) {\n // Styles\n label.css(RangeSelector_merge(chartStyle, options.labelStyle));\n dateBox.css(RangeSelector_merge({\n color: \"#333333\" /* Palette.neutralColor80 */\n }, chartStyle, options.inputStyle));\n RangeSelector_css(input, RangeSelector_extend({\n position: 'absolute',\n border: 0,\n boxShadow: '0 0 15px rgba(0,0,0,0.3)',\n width: '1px', // Chrome needs a pixel to see it\n height: '1px',\n padding: 0,\n textAlign: 'center',\n fontSize: chartStyle.fontSize,\n fontFamily: chartStyle.fontFamily,\n top: '-9999em' // #4798\n }, options.inputStyle));\n }\n // Blow up the input box\n input.onfocus = function () {\n rangeSelector.showInput(name);\n };\n // Hide away the input box\n input.onblur = function () {\n // Update extremes only when inputs are active\n if (input === (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc.activeElement) { // Only when focused\n // Update also when no `change` event is triggered, like when\n // clicking inside the SVG (#4710)\n updateExtremes(name);\n }\n // #10404 - move hide and blur outside focus\n rangeSelector.hideInput(name);\n rangeSelector.setInputValue(name);\n input.blur(); // #4606\n };\n var keyDown = false;\n // Handle changes in the input boxes\n input.onchange = function () {\n // Update extremes and blur input when clicking date input calendar\n if (!keyDown) {\n updateExtremes(name);\n rangeSelector.hideInput(name);\n input.blur();\n }\n };\n input.onkeypress = function (event) {\n // IE does not fire onchange on enter\n if (event.keyCode === 13) {\n updateExtremes(name);\n }\n };\n input.onkeydown = function (event) {\n keyDown = true;\n // Arrow keys\n if (event.key === 'ArrowUp' ||\n event.key === 'ArrowDown' ||\n event.key === 'Tab') {\n updateExtremes(name);\n }\n };\n input.onkeyup = function () {\n keyDown = false;\n };\n return { dateBox: dateBox, input: input, label: label };\n };\n /**\n * Get the position of the range selector buttons and inputs. This can be\n * overridden from outside for custom positioning.\n *\n * @private\n * @function Highcharts.RangeSelector#getPosition\n */\n RangeSelector.prototype.getPosition = function () {\n var chart = this.chart,\n options = chart.options.rangeSelector,\n top = options.verticalAlign === 'top' ?\n chart.plotTop - chart.axisOffset[0] :\n 0; // Set offset only for verticalAlign top\n return {\n buttonTop: top + options.buttonPosition.y,\n inputTop: top + options.inputPosition.y - 10\n };\n };\n /**\n * Get the extremes of YTD. Will choose dataMax if its value is lower than\n * the current timestamp. Will choose dataMin if its value is higher than\n * the timestamp for the start of current year.\n *\n * @private\n * @function Highcharts.RangeSelector#getYTDExtremes\n * @return {*}\n * Returns min and max for the YTD\n */\n RangeSelector.prototype.getYTDExtremes = function (dataMax, dataMin) {\n var time = this.chart.time,\n year = time.toParts(dataMax)[0],\n startOfYear = time.makeTime(year, 0);\n return {\n max: dataMax,\n min: Math.max(dataMin, startOfYear)\n };\n };\n RangeSelector.prototype.createElements = function () {\n var _a;\n var chart = this.chart,\n renderer = chart.renderer,\n container = chart.container,\n chartOptions = chart.options,\n options = chartOptions.rangeSelector,\n inputEnabled = options.inputEnabled,\n inputsZIndex = RangeSelector_pick((_a = chartOptions.chart.style) === null || _a === void 0 ? void 0 : _a.zIndex, 0) + 1;\n if (options.enabled === false) {\n return;\n }\n this.group = renderer.g('range-selector-group')\n .attr({\n zIndex: 7\n })\n .add();\n this.div = createElement('div', void 0, {\n position: 'relative',\n height: 0,\n zIndex: inputsZIndex\n });\n if (this.buttonOptions.length) {\n this.renderButtons();\n }\n // First create a wrapper outside the container in order to make\n // the inputs work and make export correct\n if (container.parentNode) {\n container.parentNode.insertBefore(this.div, container);\n }\n if (inputEnabled) {\n this.createInputs();\n }\n };\n /**\n * Create the input elements and its group.\n *\n */\n RangeSelector.prototype.createInputs = function () {\n this.inputGroup = this.chart.renderer.g('input-group').add(this.group);\n var minElems = this.drawInput('min');\n this.minDateBox = minElems.dateBox;\n this.minLabel = minElems.label;\n this.minInput = minElems.input;\n var maxElems = this.drawInput('max');\n this.maxDateBox = maxElems.dateBox;\n this.maxLabel = maxElems.label;\n this.maxInput = maxElems.input;\n };\n /**\n * Render the range selector including the buttons and the inputs. The first\n * time render is called, the elements are created and positioned. On\n * subsequent calls, they are moved and updated.\n *\n * @private\n * @function Highcharts.RangeSelector#render\n * @param {number} [min]\n * X axis minimum\n * @param {number} [max]\n * X axis maximum\n */\n RangeSelector.prototype.render = function (min, max) {\n var _a,\n _b;\n if (this.options.enabled === false) {\n return;\n }\n var chart = this.chart,\n chartOptions = chart.options,\n options = chartOptions.rangeSelector, \n // Place inputs above the container\n inputEnabled = options.inputEnabled;\n if (inputEnabled) {\n if (!this.inputGroup) {\n this.createInputs();\n }\n // Set or reset the input values\n this.setInputValue('min', min);\n this.setInputValue('max', max);\n if (!this.chart.styledMode) {\n (_a = this.maxLabel) === null || _a === void 0 ? void 0 : _a.css(options.labelStyle);\n (_b = this.minLabel) === null || _b === void 0 ? void 0 : _b.css(options.labelStyle);\n }\n var unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || chart.xAxis[0] || {};\n if (RangeSelector_defined(unionExtremes.dataMin) &&\n RangeSelector_defined(unionExtremes.dataMax)) {\n var minRange = chart.xAxis[0].minRange || 0;\n this.setInputExtremes('min', unionExtremes.dataMin, Math.min(unionExtremes.dataMax, this.getInputValue('max')) - minRange);\n this.setInputExtremes('max', Math.max(unionExtremes.dataMin, this.getInputValue('min')) + minRange, unionExtremes.dataMax);\n }\n // Reflow\n if (this.inputGroup) {\n var x_1 = 0;\n [\n this.minLabel,\n this.minDateBox,\n this.maxLabel,\n this.maxDateBox\n ].forEach(function (label) {\n if (label) {\n var width = label.getBBox().width;\n if (width) {\n label.attr({ x: x_1 });\n x_1 += width + options.inputSpacing;\n }\n }\n });\n }\n }\n else {\n if (this.inputGroup) {\n this.inputGroup.destroy();\n delete this.inputGroup;\n }\n }\n if (!this.chart.styledMode) {\n if (this.zoomText) {\n this.zoomText.css(options.labelStyle);\n }\n }\n this.alignElements();\n this.updateButtonStates();\n };\n /**\n * Render the range buttons. This only runs the first time, later the\n * positioning is laid out in alignElements.\n *\n * @private\n * @function Highcharts.RangeSelector#renderButtons\n */\n RangeSelector.prototype.renderButtons = function () {\n var _this = this;\n var _a,\n _b;\n var _c;\n var _d = this,\n chart = _d.chart,\n options = _d.options;\n var lang = RangeSelector_defaultOptions.lang;\n var renderer = chart.renderer;\n var buttonTheme = RangeSelector_merge(options.buttonTheme);\n var states = buttonTheme && buttonTheme.states;\n // Prevent the button from resetting the width when the button state\n // changes since we need more control over the width when collapsing\n // the buttons\n delete buttonTheme.width;\n delete buttonTheme.states;\n this.buttonGroup = renderer.g('range-selector-buttons').add(this.group);\n var dropdown = this.dropdown = createElement('select',\n void 0, {\n position: 'absolute',\n padding: 0,\n border: 0,\n cursor: 'pointer',\n opacity: 0.0001\n },\n this.div);\n // Create a label for dropdown select element\n var userButtonTheme = (_a = chart.userOptions.rangeSelector) === null || _a === void 0 ? void 0 : _a.buttonTheme;\n this.dropdownLabel = renderer.button('', 0, 0, function () { }, RangeSelector_merge(buttonTheme, {\n 'stroke-width': RangeSelector_pick(buttonTheme['stroke-width'], 0),\n width: 'auto',\n paddingLeft: RangeSelector_pick(options.buttonTheme.paddingLeft, userButtonTheme === null || userButtonTheme === void 0 ? void 0 : userButtonTheme.padding, 8),\n paddingRight: RangeSelector_pick(options.buttonTheme.paddingRight, userButtonTheme === null || userButtonTheme === void 0 ? void 0 : userButtonTheme.padding, 8)\n }), states && states.hover, states && states.select, states && states.disabled)\n .hide()\n .add(this.group);\n // Prevent page zoom on iPhone\n RangeSelector_addEvent(dropdown, 'touchstart', function () {\n dropdown.style.fontSize = '16px';\n });\n // Forward events from select to button\n var mouseOver = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ? 'mouseover' : 'mouseenter', mouseOut = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ? 'mouseout' : 'mouseleave';\n RangeSelector_addEvent(dropdown, mouseOver, function () {\n RangeSelector_fireEvent(_this.dropdownLabel.element, mouseOver);\n });\n RangeSelector_addEvent(dropdown, mouseOut, function () {\n RangeSelector_fireEvent(_this.dropdownLabel.element, mouseOut);\n });\n RangeSelector_addEvent(dropdown, 'change', function () {\n var button = _this.buttons[dropdown.selectedIndex - 1];\n RangeSelector_fireEvent(button.element, 'click');\n });\n this.zoomText = renderer\n .label(lang.rangeSelectorZoom || '', 0)\n .attr({\n padding: options.buttonTheme.padding,\n height: options.buttonTheme.height,\n paddingLeft: 0,\n paddingRight: 0\n })\n .add(this.buttonGroup);\n if (!this.chart.styledMode) {\n this.zoomText.css(options.labelStyle);\n (_b = (_c = options.buttonTheme)['stroke-width']) !== null && _b !== void 0 ? _b : (_c['stroke-width'] = 0);\n }\n createElement('option', {\n textContent: this.zoomText.textStr,\n disabled: true\n }, void 0, dropdown);\n this.createButtons();\n };\n RangeSelector.prototype.createButtons = function () {\n var _this = this;\n var options = this.options;\n var buttonTheme = RangeSelector_merge(options.buttonTheme);\n var states = buttonTheme && buttonTheme.states;\n // Prevent the button from resetting the width when the button state\n // changes since we need more control over the width when collapsing\n // the buttons\n var width = buttonTheme.width || 28;\n delete buttonTheme.width;\n delete buttonTheme.states;\n this.buttonOptions.forEach(function (rangeOptions, i) {\n _this.createButton(rangeOptions, i, width, states);\n });\n };\n RangeSelector.prototype.createButton = function (rangeOptions, i, width, states) {\n var _this = this;\n var _a = this,\n dropdown = _a.dropdown,\n buttons = _a.buttons,\n chart = _a.chart,\n options = _a.options;\n var renderer = chart.renderer;\n var buttonTheme = RangeSelector_merge(options.buttonTheme);\n dropdown === null || dropdown === void 0 ? void 0 : dropdown.add(createElement('option', {\n textContent: rangeOptions.title || rangeOptions.text\n }), i + 2);\n buttons[i] = renderer\n .button(rangeOptions.text, 0, 0, function (e) {\n // Extract events from button object and call\n var buttonEvents = (rangeOptions.events && rangeOptions.events.click);\n var callDefaultEvent;\n if (buttonEvents) {\n callDefaultEvent =\n buttonEvents.call(rangeOptions, e);\n }\n if (callDefaultEvent !== false) {\n _this.clickButton(i);\n }\n _this.isActive = true;\n }, buttonTheme, states && states.hover, states && states.select, states && states.disabled)\n .attr({\n 'text-align': 'center',\n width: width\n })\n .add(this.buttonGroup);\n if (rangeOptions.title) {\n buttons[i].attr('title', rangeOptions.title);\n }\n };\n /**\n * Align the elements horizontally and vertically.\n *\n * @private\n * @function Highcharts.RangeSelector#alignElements\n */\n RangeSelector.prototype.alignElements = function () {\n var _this = this;\n var _a;\n var _b = this,\n buttonGroup = _b.buttonGroup,\n buttons = _b.buttons,\n chart = _b.chart,\n group = _b.group,\n inputGroup = _b.inputGroup,\n options = _b.options,\n zoomText = _b.zoomText;\n var chartOptions = chart.options;\n var navButtonOptions = (chartOptions.exporting &&\n chartOptions.exporting.enabled !== false &&\n chartOptions.navigation &&\n chartOptions.navigation.buttonOptions);\n var buttonPosition = options.buttonPosition,\n inputPosition = options.inputPosition,\n verticalAlign = options.verticalAlign;\n // Get the X offset required to avoid overlapping with the exporting\n // button. This is used both by the buttonGroup and the inputGroup.\n var getXOffsetForExportButton = function (group,\n position,\n rightAligned) {\n if (navButtonOptions &&\n _this.titleCollision(chart) &&\n verticalAlign === 'top' &&\n rightAligned && ((position.y -\n group.getBBox().height - 12) <\n ((navButtonOptions.y || 0) +\n (navButtonOptions.height || 0) +\n chart.spacing[0]))) {\n return -40;\n }\n return 0;\n };\n var plotLeft = chart.plotLeft;\n if (group && buttonPosition && inputPosition) {\n var translateX = buttonPosition.x - chart.spacing[3];\n if (buttonGroup) {\n this.positionButtons();\n if (!this.initialButtonGroupWidth) {\n var width_1 = 0;\n if (zoomText) {\n width_1 += zoomText.getBBox().width + 5;\n }\n buttons.forEach(function (button, i) {\n width_1 += button.width || 0;\n if (i !== buttons.length - 1) {\n width_1 += options.buttonSpacing;\n }\n });\n this.initialButtonGroupWidth = width_1;\n }\n plotLeft -= chart.spacing[3];\n // Detect collision between button group and exporting\n var xOffsetForExportButton_1 = getXOffsetForExportButton(buttonGroup,\n buttonPosition,\n buttonPosition.align === 'right' ||\n inputPosition.align === 'right');\n this.alignButtonGroup(xOffsetForExportButton_1);\n if ((_a = this.buttonGroup) === null || _a === void 0 ? void 0 : _a.translateY) {\n this.dropdownLabel\n .attr({ y: this.buttonGroup.translateY });\n }\n // Skip animation\n group.placed = buttonGroup.placed = chart.hasLoaded;\n }\n var xOffsetForExportButton = 0;\n if (options.inputEnabled && inputGroup) {\n // Detect collision between the input group and exporting button\n xOffsetForExportButton = getXOffsetForExportButton(inputGroup, inputPosition, buttonPosition.align === 'right' ||\n inputPosition.align === 'right');\n if (inputPosition.align === 'left') {\n translateX = plotLeft;\n }\n else if (inputPosition.align === 'right') {\n translateX = -Math.max(chart.axisOffset[1], -xOffsetForExportButton);\n }\n // Update the alignment to the updated spacing box\n inputGroup.align({\n y: inputPosition.y,\n width: inputGroup.getBBox().width,\n align: inputPosition.align,\n // Fix wrong getBBox() value on right align\n x: inputPosition.x + translateX - 2\n }, true, chart.spacingBox);\n // Skip animation\n inputGroup.placed = chart.hasLoaded;\n }\n this.handleCollision(xOffsetForExportButton);\n // Vertical align\n group.align({\n verticalAlign: verticalAlign\n }, true, chart.spacingBox);\n var alignTranslateY = group.alignAttr.translateY;\n // Set position\n var groupHeight = group.getBBox().height + 20; // # 20 padding\n var translateY = 0;\n // Calculate bottom position\n if (verticalAlign === 'bottom') {\n var legendOptions = chart.legend && chart.legend.options;\n var legendHeight = (legendOptions &&\n legendOptions.verticalAlign === 'bottom' &&\n legendOptions.enabled &&\n !legendOptions.floating ?\n (chart.legend.legendHeight +\n RangeSelector_pick(legendOptions.margin, 10)) :\n 0);\n groupHeight = groupHeight + legendHeight - 20;\n translateY = (alignTranslateY -\n groupHeight -\n (options.floating ? 0 : options.y) -\n (chart.titleOffset ? chart.titleOffset[2] : 0) -\n 10 // 10 spacing\n );\n }\n if (verticalAlign === 'top') {\n if (options.floating) {\n translateY = 0;\n }\n if (chart.titleOffset && chart.titleOffset[0]) {\n translateY = chart.titleOffset[0];\n }\n translateY += ((chart.margin[0] - chart.spacing[0]) || 0);\n }\n else if (verticalAlign === 'middle') {\n if (inputPosition.y === buttonPosition.y) {\n translateY = alignTranslateY;\n }\n else if (inputPosition.y || buttonPosition.y) {\n if (inputPosition.y < 0 ||\n buttonPosition.y < 0) {\n translateY -= Math.min(inputPosition.y, buttonPosition.y);\n }\n else {\n translateY = alignTranslateY - groupHeight;\n }\n }\n }\n group.translate(options.x, options.y + Math.floor(translateY));\n // Translate HTML inputs\n var _c = this,\n minInput = _c.minInput,\n maxInput = _c.maxInput,\n dropdown = _c.dropdown;\n if (options.inputEnabled && minInput && maxInput) {\n minInput.style.marginTop = group.translateY + 'px';\n maxInput.style.marginTop = group.translateY + 'px';\n }\n if (dropdown) {\n dropdown.style.marginTop = group.translateY + 'px';\n }\n }\n };\n /**\n * @private\n */\n RangeSelector.prototype.redrawElements = function () {\n var _a,\n _b,\n _c,\n _d,\n _e,\n _f,\n _g;\n var chart = this.chart,\n _h = this.options,\n inputBoxHeight = _h.inputBoxHeight,\n inputBoxBorderColor = _h.inputBoxBorderColor;\n (_a = this.maxDateBox) === null || _a === void 0 ? void 0 : _a.attr({\n height: inputBoxHeight\n });\n (_b = this.minDateBox) === null || _b === void 0 ? void 0 : _b.attr({\n height: inputBoxHeight\n });\n if (!chart.styledMode) {\n (_c = this.maxDateBox) === null || _c === void 0 ? void 0 : _c.attr({\n stroke: inputBoxBorderColor\n });\n (_d = this.minDateBox) === null || _d === void 0 ? void 0 : _d.attr({\n stroke: inputBoxBorderColor\n });\n }\n if (this.isDirty) {\n this.isDirty = false;\n // Reset this prop to force redrawing collapse of buttons\n this.isCollapsed = void 0;\n var newButtonsOptions = (_e = this.options.buttons) !== null && _e !== void 0 ? _e : [];\n var btnLength = Math.min(newButtonsOptions.length,\n this.buttonOptions.length);\n var _j = this,\n dropdown = _j.dropdown,\n options = _j.options;\n var buttonTheme = RangeSelector_merge(options.buttonTheme);\n var states = buttonTheme && buttonTheme.states;\n // Prevent the button from resetting the width when the button state\n // changes since we need more control over the width when collapsing\n // the buttons\n var width = buttonTheme.width || 28;\n // Destroy additional buttons\n if (newButtonsOptions.length < this.buttonOptions.length) {\n for (var i = this.buttonOptions.length - 1; i >= newButtonsOptions.length; i--) {\n var btn = this.buttons.pop();\n btn === null || btn === void 0 ? void 0 : btn.destroy();\n (_f = this.dropdown) === null || _f === void 0 ? void 0 : _f.options.remove(i + 1);\n }\n }\n // Update current buttons\n for (var i = btnLength - 1; i >= 0; i--) {\n var diff = diffObjects(newButtonsOptions[i],\n this.buttonOptions[i]);\n if (Object.keys(diff).length !== 0) {\n var rangeOptions = newButtonsOptions[i];\n this.buttons[i].destroy();\n dropdown === null || dropdown === void 0 ? void 0 : dropdown.options.remove(i + 1);\n this.createButton(rangeOptions, i, width, states);\n this.computeButtonRange(rangeOptions);\n }\n }\n // Create missing buttons\n if (newButtonsOptions.length > this.buttonOptions.length) {\n for (var i = this.buttonOptions.length; i < newButtonsOptions.length; i++) {\n this.createButton(newButtonsOptions[i], i, width, states);\n this.computeButtonRange(newButtonsOptions[i]);\n }\n }\n this.buttonOptions = (_g = this.options.buttons) !== null && _g !== void 0 ? _g : [];\n if (RangeSelector_defined(this.options.selected) && this.buttons.length) {\n this.clickButton(this.options.selected, false);\n }\n }\n };\n /**\n * Align the button group horizontally and vertically.\n *\n * @private\n * @function Highcharts.RangeSelector#alignButtonGroup\n * @param {number} xOffsetForExportButton\n * @param {number} [width]\n */\n RangeSelector.prototype.alignButtonGroup = function (xOffsetForExportButton, width) {\n var _a = this,\n chart = _a.chart,\n options = _a.options,\n buttonGroup = _a.buttonGroup,\n dropdown = _a.dropdown,\n dropdownLabel = _a.dropdownLabel;\n var buttonPosition = options.buttonPosition;\n var plotLeft = chart.plotLeft - chart.spacing[3];\n var translateX = buttonPosition.x - chart.spacing[3];\n var dropdownTranslateX = chart.plotLeft;\n if (buttonPosition.align === 'right') {\n translateX += xOffsetForExportButton - plotLeft; // #13014\n if (this.hasVisibleDropdown) {\n dropdownTranslateX = chart.chartWidth +\n xOffsetForExportButton -\n this.maxButtonWidth() - 20;\n }\n }\n else if (buttonPosition.align === 'center') {\n translateX -= plotLeft / 2;\n if (this.hasVisibleDropdown) {\n dropdownTranslateX = chart.chartWidth / 2 -\n this.maxButtonWidth();\n }\n }\n if (dropdown) {\n RangeSelector_css(dropdown, {\n left: dropdownTranslateX + 'px',\n top: (buttonGroup === null || buttonGroup === void 0 ? void 0 : buttonGroup.translateY) + 'px'\n });\n }\n dropdownLabel === null || dropdownLabel === void 0 ? void 0 : dropdownLabel.attr({\n x: dropdownTranslateX\n });\n if (buttonGroup) {\n // Align button group\n buttonGroup.align({\n y: buttonPosition.y,\n width: RangeSelector_pick(width, this.initialButtonGroupWidth),\n align: buttonPosition.align,\n x: translateX\n }, true, chart.spacingBox);\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#positionButtons\n */\n RangeSelector.prototype.positionButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n chart = _a.chart,\n options = _a.options,\n zoomText = _a.zoomText;\n var verb = chart.hasLoaded ? 'animate' : 'attr';\n var buttonPosition = options.buttonPosition;\n var plotLeft = chart.plotLeft;\n var buttonLeft = plotLeft;\n if (zoomText && zoomText.visibility !== 'hidden') {\n // #8769, allow dynamically updating margins\n zoomText[verb]({\n x: RangeSelector_pick(plotLeft + buttonPosition.x, plotLeft)\n });\n // Button start position\n buttonLeft += buttonPosition.x +\n zoomText.getBBox().width + 5;\n }\n for (var i = 0, iEnd = this.buttonOptions.length; i < iEnd; ++i) {\n if (buttons[i].visibility !== 'hidden') {\n buttons[i][verb]({ x: buttonLeft });\n // Increase the button position for the next button\n buttonLeft += (buttons[i].width || 0) + options.buttonSpacing;\n }\n else {\n buttons[i][verb]({ x: plotLeft });\n }\n }\n };\n /**\n * Handle collision between the button group and the input group\n *\n * @private\n * @function Highcharts.RangeSelector#handleCollision\n *\n * @param {number} xOffsetForExportButton\n * The X offset of the group required to make room for the\n * exporting button\n */\n RangeSelector.prototype.handleCollision = function (xOffsetForExportButton) {\n var _a = this,\n chart = _a.chart,\n buttonGroup = _a.buttonGroup,\n inputGroup = _a.inputGroup,\n initialButtonGroupWidth = _a.initialButtonGroupWidth;\n var _b = this.options,\n buttonPosition = _b.buttonPosition,\n dropdown = _b.dropdown,\n inputPosition = _b.inputPosition;\n var moveInputsDown = function () {\n if (inputGroup && buttonGroup) {\n inputGroup.attr({\n translateX: inputGroup.alignAttr.translateX + (chart.axisOffset[1] >= -xOffsetForExportButton ?\n 0 :\n -xOffsetForExportButton),\n translateY: inputGroup.alignAttr.translateY +\n buttonGroup.getBBox().height + 10\n });\n }\n };\n // Detect collision\n if (inputGroup && buttonGroup) {\n if (inputPosition.align === buttonPosition.align) {\n moveInputsDown();\n if (initialButtonGroupWidth >\n chart.plotWidth + xOffsetForExportButton - 20) {\n this.collapseButtons();\n }\n else {\n this.expandButtons();\n }\n }\n else if (initialButtonGroupWidth -\n xOffsetForExportButton +\n inputGroup.getBBox().width >\n chart.plotWidth) {\n if (dropdown === 'responsive') {\n this.collapseButtons();\n }\n else {\n moveInputsDown();\n }\n }\n else {\n this.expandButtons();\n }\n }\n else if (buttonGroup && dropdown === 'responsive') {\n if (initialButtonGroupWidth > chart.plotWidth) {\n this.collapseButtons();\n }\n else {\n this.expandButtons();\n }\n }\n // Forced states\n if (buttonGroup) {\n if (dropdown === 'always') {\n this.collapseButtons();\n }\n if (dropdown === 'never') {\n this.expandButtons();\n }\n }\n this.alignButtonGroup(xOffsetForExportButton);\n };\n /**\n * Collapse the buttons and show the select element.\n *\n * @private\n * @function Highcharts.RangeSelector#collapseButtons\n * @param {number} xOffsetForExportButton\n */\n RangeSelector.prototype.collapseButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n zoomText = _a.zoomText;\n if (this.isCollapsed === true) {\n return;\n }\n this.isCollapsed = true;\n zoomText.hide();\n buttons.forEach(function (button) { return void button.hide(); });\n this.showDropdown();\n };\n /**\n * Show all the buttons and hide the select element.\n *\n * @private\n * @function Highcharts.RangeSelector#expandButtons\n */\n RangeSelector.prototype.expandButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n zoomText = _a.zoomText;\n if (this.isCollapsed === false) {\n return;\n }\n this.isCollapsed = false;\n this.hideDropdown();\n zoomText.show();\n buttons.forEach(function (button) { return void button.show(); });\n this.positionButtons();\n };\n /**\n * Position the select element on top of the button.\n *\n * @private\n * @function Highcharts.RangeSelector#showDropdown\n */\n RangeSelector.prototype.showDropdown = function () {\n var _a = this,\n buttonGroup = _a.buttonGroup,\n dropdownLabel = _a.dropdownLabel,\n dropdown = _a.dropdown;\n if (buttonGroup && dropdown) {\n dropdownLabel.show();\n RangeSelector_css(dropdown, { visibility: 'inherit' });\n this.hasVisibleDropdown = true;\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#hideDropdown\n */\n RangeSelector.prototype.hideDropdown = function () {\n var dropdown = this.dropdown;\n if (dropdown) {\n this.dropdownLabel.hide();\n RangeSelector_css(dropdown, {\n visibility: 'hidden',\n width: '1px',\n height: '1px'\n });\n this.hasVisibleDropdown = false;\n }\n };\n /**\n * Extracts height of range selector\n *\n * @private\n * @function Highcharts.RangeSelector#getHeight\n * @return {number}\n * Returns rangeSelector height\n */\n RangeSelector.prototype.getHeight = function () {\n var rangeSelector = this,\n options = rangeSelector.options,\n rangeSelectorGroup = rangeSelector.group,\n inputPosition = options.inputPosition,\n buttonPosition = options.buttonPosition,\n yPosition = options.y,\n buttonPositionY = buttonPosition.y,\n inputPositionY = inputPosition.y;\n var rangeSelectorHeight = 0;\n if (options.height) {\n return options.height;\n }\n // Align the elements before we read the height in case we're switching\n // between wrapped and non-wrapped layout\n this.alignElements();\n rangeSelectorHeight = rangeSelectorGroup ?\n // 13px to keep back compatibility\n (rangeSelectorGroup.getBBox(true).height) + 13 +\n yPosition :\n 0;\n var minPosition = Math.min(inputPositionY,\n buttonPositionY);\n if ((inputPositionY < 0 && buttonPositionY < 0) ||\n (inputPositionY > 0 && buttonPositionY > 0)) {\n rangeSelectorHeight += Math.abs(minPosition);\n }\n return rangeSelectorHeight;\n };\n /**\n * Detect collision with title or subtitle\n *\n * @private\n * @function Highcharts.RangeSelector#titleCollision\n * @return {boolean}\n * Returns collision status\n */\n RangeSelector.prototype.titleCollision = function (chart) {\n return !(chart.options.title.text ||\n chart.options.subtitle.text);\n };\n /**\n * Update the range selector with new options\n *\n * @private\n * @function Highcharts.RangeSelector#update\n * @param {Highcharts.RangeSelectorOptions} options\n */\n RangeSelector.prototype.update = function (options, redraw) {\n if (redraw === void 0) { redraw = true; }\n var chart = this.chart;\n RangeSelector_merge(true, this.options, options);\n if (this.options.selected &&\n this.options.selected >= this.options.buttons.length) {\n this.options.selected = void 0;\n chart.options.rangeSelector.selected = void 0;\n }\n if (RangeSelector_defined(options.enabled)) {\n this.destroy();\n return this.init(chart);\n }\n this.isDirty = !!options.buttons;\n if (redraw) {\n this.render();\n }\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.RangeSelector#destroy\n */\n RangeSelector.prototype.destroy = function () {\n var rSelector = this,\n minInput = rSelector.minInput,\n maxInput = rSelector.maxInput;\n if (rSelector.eventsToUnbind) {\n rSelector.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n rSelector.eventsToUnbind = void 0;\n }\n // Destroy elements in collections\n RangeSelector_destroyObjectProperties(rSelector.buttons);\n // Clear input element events\n if (minInput) {\n minInput.onfocus = minInput.onblur = minInput.onchange = null;\n }\n if (maxInput) {\n maxInput.onfocus = maxInput.onblur = maxInput.onchange = null;\n }\n // Destroy HTML and SVG elements\n RangeSelector_objectEach(rSelector, function (val, key) {\n if (val && key !== 'chart') {\n if (val instanceof (highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default())) {\n // SVGElement\n val.destroy();\n }\n else if (val instanceof window.HTMLElement) {\n // HTML element\n discardElement(val);\n }\n delete rSelector[key];\n }\n if (val !== RangeSelector.prototype[key]) {\n rSelector[key] = null;\n }\n }, this);\n this.buttons = [];\n };\n return RangeSelector;\n}());\nRangeSelector_extend(RangeSelector.prototype, {\n /**\n * The date formats to use when setting min, max and value on date inputs.\n * @private\n */\n inputTypeFormats: {\n 'datetime-local': '%Y-%m-%dT%H:%M:%S',\n 'date': '%Y-%m-%d',\n 'time': '%H:%M:%S'\n }\n});\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var RangeSelector_RangeSelector = (RangeSelector);\n/* *\n *\n * API Options\n *\n * */\n/**\n * Define the time span for the button\n *\n * @typedef {\"all\"|\"day\"|\"hour\"|\"millisecond\"|\"minute\"|\"month\"|\"second\"|\"week\"|\"year\"|\"ytd\"} Highcharts.RangeSelectorButtonTypeValue\n */\n/**\n * Callback function to react on button clicks.\n *\n * @callback Highcharts.RangeSelectorClickCallbackFunction\n *\n * @param {global.Event} e\n * Event arguments.\n *\n * @param {boolean|undefined}\n * Return false to cancel the default button event.\n */\n/**\n * Callback function to parse values entered in the input boxes and return a\n * valid JavaScript time as milliseconds since 1970.\n *\n * @callback Highcharts.RangeSelectorParseCallbackFunction\n *\n * @param {string} value\n * Input value to parse.\n *\n * @return {number}\n * Parsed JavaScript time value.\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Series/PathUtilities.js\n/* *\n *\n * (c) 2010-2024 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar getLinkPath = {\n 'default': getDefaultPath,\n straight: getStraightPath,\n curved: getCurvedPath\n};\n/**\n *\n */\nfunction getDefaultPath(pathParams) {\n var x1 = pathParams.x1,\n y1 = pathParams.y1,\n x2 = pathParams.x2,\n y2 = pathParams.y2,\n _a = pathParams.width,\n width = _a === void 0 ? 0 : _a,\n _b = pathParams.inverted,\n inverted = _b === void 0 ? false : _b,\n radius = pathParams.radius,\n parentVisible = pathParams.parentVisible;\n var path = [\n ['M',\n x1,\n y1],\n ['L',\n x1,\n y1],\n ['C',\n x1,\n y1,\n x1,\n y2,\n x1,\n y2],\n ['L',\n x1,\n y2],\n ['C',\n x1,\n y1,\n x1,\n y2,\n x1,\n y2],\n ['L',\n x1,\n y2]\n ];\n return parentVisible ?\n applyRadius([\n ['M', x1, y1],\n ['L', x1 + width * (inverted ? -0.5 : 0.5), y1],\n ['L', x1 + width * (inverted ? -0.5 : 0.5), y2],\n ['L', x2, y2]\n ], radius) :\n path;\n}\n/**\n *\n */\nfunction getStraightPath(pathParams) {\n var x1 = pathParams.x1,\n y1 = pathParams.y1,\n x2 = pathParams.x2,\n y2 = pathParams.y2,\n _a = pathParams.width,\n width = _a === void 0 ? 0 : _a,\n _b = pathParams.inverted,\n inverted = _b === void 0 ? false : _b,\n parentVisible = pathParams.parentVisible;\n return parentVisible ? [\n ['M', x1, y1],\n ['L', x1 + width * (inverted ? -1 : 1), y2],\n ['L', x2, y2]\n ] : [\n ['M', x1, y1],\n ['L', x1, y2],\n ['L', x1, y2]\n ];\n}\n/**\n *\n */\nfunction getCurvedPath(pathParams) {\n var x1 = pathParams.x1,\n y1 = pathParams.y1,\n x2 = pathParams.x2,\n y2 = pathParams.y2,\n _a = pathParams.offset,\n offset = _a === void 0 ? 0 : _a,\n _b = pathParams.width,\n width = _b === void 0 ? 0 : _b,\n _c = pathParams.inverted,\n inverted = _c === void 0 ? false : _c,\n parentVisible = pathParams.parentVisible;\n return parentVisible ?\n [\n ['M', x1, y1],\n [\n 'C',\n x1 + offset,\n y1,\n x1 - offset + width * (inverted ? -1 : 1),\n y2,\n x1 + width * (inverted ? -1 : 1),\n y2\n ],\n ['L', x2, y2]\n ] :\n [\n ['M', x1, y1],\n ['C', x1, y1, x1, y2, x1, y2],\n ['L', x2, y2]\n ];\n}\n/**\n * General function to apply corner radius to a path\n * @private\n */\nfunction applyRadius(path, r) {\n var d = [];\n for (var i = 0; i < path.length; i++) {\n var x = path[i][1];\n var y = path[i][2];\n if (typeof x === 'number' && typeof y === 'number') {\n // MoveTo\n if (i === 0) {\n d.push(['M', x, y]);\n }\n else if (i === path.length - 1) {\n d.push(['L', x, y]);\n // CurveTo\n }\n else if (r) {\n var prevSeg = path[i - 1];\n var nextSeg = path[i + 1];\n if (prevSeg && nextSeg) {\n var x1 = prevSeg[1],\n y1 = prevSeg[2],\n x2 = nextSeg[1],\n y2 = nextSeg[2];\n // Only apply to breaks\n if (typeof x1 === 'number' &&\n typeof x2 === 'number' &&\n typeof y1 === 'number' &&\n typeof y2 === 'number' &&\n x1 !== x2 &&\n y1 !== y2) {\n var directionX = x1 < x2 ? 1 : -1,\n directionY = y1 < y2 ? 1 : -1;\n d.push([\n 'L',\n x - directionX * Math.min(Math.abs(x - x1), r),\n y - directionY * Math.min(Math.abs(y - y1), r)\n ], [\n 'C',\n x,\n y,\n x,\n y,\n x + directionX * Math.min(Math.abs(x - x2), r),\n y + directionY * Math.min(Math.abs(y - y2), r)\n ]);\n }\n }\n // LineTo\n }\n else {\n d.push(['L', x, y]);\n }\n }\n }\n return d;\n}\nvar PathUtilities = {\n applyRadius: applyRadius,\n getLinkPath: getLinkPath\n};\n/* harmony default export */ var Series_PathUtilities = (PathUtilities);\n\n;// ./code/es5/es-modules/Gantt/PathfinderAlgorithms.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Author: Øystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar PathfinderAlgorithms_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Constants\n *\n * */\nvar PathfinderAlgorithms_min = Math.min, PathfinderAlgorithms_max = Math.max, abs = Math.abs;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Get index of last obstacle before xMin. Employs a type of binary search, and\n * thus requires that obstacles are sorted by xMin value.\n *\n * @private\n * @function findLastObstacleBefore\n *\n * @param {Array<object>} obstacles\n * Array of obstacles to search in.\n *\n * @param {number} xMin\n * The xMin threshold.\n *\n * @param {number} [startIx]\n * Starting index to search from. Must be within array range.\n *\n * @return {number}\n * The index of the last obstacle element before xMin.\n */\nfunction findLastObstacleBefore(obstacles, xMin, startIx) {\n var min = xMin - 0.0000001; // Make sure we include all obstacles at xMin\n var left = startIx || 0, // Left limit\n right = obstacles.length - 1, // Right limit\n cursor,\n cmp;\n while (left <= right) {\n cursor = (right + left) >> 1;\n cmp = min - obstacles[cursor].xMin;\n if (cmp > 0) {\n left = cursor + 1;\n }\n else if (cmp < 0) {\n right = cursor - 1;\n }\n else {\n return cursor;\n }\n }\n return left > 0 ? left - 1 : 0;\n}\n/**\n * Test if a point lays within an obstacle.\n *\n * @private\n * @function pointWithinObstacle\n *\n * @param {Object} obstacle\n * Obstacle to test.\n *\n * @param {Highcharts.Point} point\n * Point with x/y props.\n *\n * @return {boolean}\n * Whether point is within the obstacle or not.\n */\nfunction pointWithinObstacle(obstacle, point) {\n return (point.x <= obstacle.xMax &&\n point.x >= obstacle.xMin &&\n point.y <= obstacle.yMax &&\n point.y >= obstacle.yMin);\n}\n/**\n * Find the index of an obstacle that wraps around a point.\n * Returns -1 if not found.\n *\n * @private\n * @function findObstacleFromPoint\n *\n * @param {Array<object>} obstacles\n * Obstacles to test.\n *\n * @param {Highcharts.Point} point\n * Point with x/y props.\n *\n * @return {number}\n * Ix of the obstacle in the array, or -1 if not found.\n */\nfunction findObstacleFromPoint(obstacles, point) {\n var i = findLastObstacleBefore(obstacles,\n point.x + 1) + 1;\n while (i--) {\n if (obstacles[i].xMax >= point.x &&\n // Optimization using lazy evaluation\n pointWithinObstacle(obstacles[i], point)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Get SVG path array from array of line segments.\n *\n * @private\n * @function pathFromSegments\n *\n * @param {Array<object>} segments\n * The segments to build the path from.\n *\n * @return {Highcharts.SVGPathArray}\n * SVG path array as accepted by the SVG Renderer.\n */\nfunction pathFromSegments(segments) {\n var path = [];\n if (segments.length) {\n path.push(['M', segments[0].start.x, segments[0].start.y]);\n for (var i = 0; i < segments.length; ++i) {\n path.push(['L', segments[i].end.x, segments[i].end.y]);\n }\n }\n return path;\n}\n/**\n * Limits obstacle max/mins in all directions to bounds. Modifies input\n * obstacle.\n *\n * @private\n * @function limitObstacleToBounds\n *\n * @param {Object} obstacle\n * Obstacle to limit.\n *\n * @param {Object} bounds\n * Bounds to use as limit.\n *\n * @return {void}\n */\nfunction limitObstacleToBounds(obstacle, bounds) {\n obstacle.yMin = PathfinderAlgorithms_max(obstacle.yMin, bounds.yMin);\n obstacle.yMax = PathfinderAlgorithms_min(obstacle.yMax, bounds.yMax);\n obstacle.xMin = PathfinderAlgorithms_max(obstacle.xMin, bounds.xMin);\n obstacle.xMax = PathfinderAlgorithms_min(obstacle.xMax, bounds.xMax);\n}\n/**\n * Get an SVG path from a starting coordinate to an ending coordinate.\n * Draws a straight line.\n *\n * @function Highcharts.Pathfinder.algorithms.straight\n *\n * @param {Highcharts.PositionObject} start\n * Starting coordinate, object with x/y props.\n *\n * @param {Highcharts.PositionObject} end\n * Ending coordinate, object with x/y props.\n *\n * @return {Object}\n * An object with the SVG path in Array form as accepted by the SVG\n * renderer, as well as an array of new obstacles making up this\n * path.\n */\nfunction straight(start, end) {\n return {\n path: [\n ['M', start.x, start.y],\n ['L', end.x, end.y]\n ],\n obstacles: [{ start: start, end: end }]\n };\n}\n/**\n * Find a path from a starting coordinate to an ending coordinate, using\n * right angles only, and taking only starting/ending obstacle into\n * consideration.\n *\n * @function Highcharts.Pathfinder.algorithms.simpleConnect\n *\n * @param {Highcharts.PositionObject} start\n * Starting coordinate, object with x/y props.\n *\n * @param {Highcharts.PositionObject} end\n * Ending coordinate, object with x/y props.\n *\n * @param {Object} options\n * Options for the algorithm:\n * - chartObstacles: Array of chart obstacles to avoid\n * - startDirectionX: Optional. True if starting in the X direction.\n * If not provided, the algorithm starts in the direction that is\n * the furthest between start/end.\n *\n * @return {Object}\n * An object with the SVG path in Array form as accepted by the SVG\n * renderer, as well as an array of new obstacles making up this\n * path.\n */\nvar simpleConnect = function (start, end, options) {\n var segments = [],\n chartObstacles = options.chartObstacles,\n startObstacleIx = findObstacleFromPoint(chartObstacles,\n start),\n endObstacleIx = findObstacleFromPoint(chartObstacles,\n end);\n var endSegment,\n dir = PathfinderAlgorithms_pick(options.startDirectionX,\n abs(end.x - start.x) > abs(end.y - start.y)) ? 'x' : 'y',\n startObstacle,\n endObstacle,\n waypoint,\n useMax,\n endPoint;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Return a clone of a point with a property set from a target object,\n * optionally with an offset\n * @private\n */\n function copyFromPoint(from, fromKey, to, toKey, offset) {\n var point = {\n x: from.x,\n y: from.y\n };\n point[fromKey] = to[toKey || fromKey] + (offset || 0);\n return point;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Return waypoint outside obstacle.\n * @private\n */\n function getMeOut(obstacle, point, direction) {\n var useMax = abs(point[direction] - obstacle[direction + 'Min']) >\n abs(point[direction] - obstacle[direction + 'Max']);\n return copyFromPoint(point, direction, obstacle, direction + (useMax ? 'Max' : 'Min'), useMax ? 1 : -1);\n }\n // Pull out end point\n if (endObstacleIx > -1) {\n endObstacle = chartObstacles[endObstacleIx];\n waypoint = getMeOut(endObstacle, end, dir);\n endSegment = {\n start: waypoint,\n end: end\n };\n endPoint = waypoint;\n }\n else {\n endPoint = end;\n }\n // If an obstacle envelops the start point, add a segment to get out,\n // and around it.\n if (startObstacleIx > -1) {\n startObstacle = chartObstacles[startObstacleIx];\n waypoint = getMeOut(startObstacle, start, dir);\n segments.push({\n start: start,\n end: waypoint\n });\n // If we are going back again, switch direction to get around start\n // obstacle.\n if (\n // Going towards max from start:\n waypoint[dir] >= start[dir] ===\n // Going towards min to end:\n waypoint[dir] >= endPoint[dir]) {\n dir = dir === 'y' ? 'x' : 'y';\n useMax = start[dir] < end[dir];\n segments.push({\n start: waypoint,\n end: copyFromPoint(waypoint, dir, startObstacle, dir + (useMax ? 'Max' : 'Min'), useMax ? 1 : -1)\n });\n // Switch direction again\n dir = dir === 'y' ? 'x' : 'y';\n }\n }\n // We are around the start obstacle. Go towards the end in one\n // direction.\n var prevWaypoint = segments.length ?\n segments[segments.length - 1].end :\n start;\n waypoint = copyFromPoint(prevWaypoint, dir, endPoint);\n segments.push({\n start: prevWaypoint,\n end: waypoint\n });\n // Final run to end point in the other direction\n dir = dir === 'y' ? 'x' : 'y';\n var waypoint2 = copyFromPoint(waypoint,\n dir,\n endPoint);\n segments.push({\n start: waypoint,\n end: waypoint2\n });\n // Finally add the endSegment\n segments.push(endSegment);\n var path = Series_PathUtilities.applyRadius(pathFromSegments(segments),\n options.radius);\n return {\n path: path,\n obstacles: segments\n };\n};\nsimpleConnect.requiresObstacles = true;\n/**\n * Find a path from a starting coordinate to an ending coordinate, taking\n * obstacles into consideration. Might not always find the optimal path,\n * but is fast, and usually good enough.\n *\n * @function Highcharts.Pathfinder.algorithms.fastAvoid\n *\n * @param {Highcharts.PositionObject} start\n * Starting coordinate, object with x/y props.\n *\n * @param {Highcharts.PositionObject} end\n * Ending coordinate, object with x/y props.\n *\n * @param {Object} options\n * Options for the algorithm.\n * - chartObstacles: Array of chart obstacles to avoid\n * - lineObstacles: Array of line obstacles to jump over\n * - obstacleMetrics: Object with metrics of chartObstacles cached\n * - hardBounds: Hard boundaries to not cross\n * - obstacleOptions: Options for the obstacles, including margin\n * - startDirectionX: Optional. True if starting in the X direction.\n * If not provided, the algorithm starts in the\n * direction that is the furthest between\n * start/end.\n *\n * @return {Object}\n * An object with the SVG path in Array form as accepted by the SVG\n * renderer, as well as an array of new obstacles making up this\n * path.\n */\nfunction fastAvoid(start, end, options) {\n /*\n Algorithm rules/description\n - Find initial direction\n - Determine soft/hard max for each direction.\n - Move along initial direction until obstacle.\n - Change direction.\n - If hitting obstacle, first try to change length of previous line\n before changing direction again.\n\n Soft min/max x = start/destination x +/- widest obstacle + margin\n Soft min/max y = start/destination y +/- tallest obstacle + margin\n\n @todo:\n - Make retrospective, try changing prev segment to reduce\n corners\n - Fix logic for breaking out of end-points - not always picking\n the best direction currently\n - When going around the end obstacle we should not always go the\n shortest route, rather pick the one closer to the end point\n */\n var dirIsX = PathfinderAlgorithms_pick(options.startDirectionX,\n abs(end.x - start.x) > abs(end.y - start.y)),\n dir = dirIsX ? 'x' : 'y',\n endSegments = [], \n // Boundaries to stay within. If beyond soft boundary, prefer to\n // change direction ASAP. If at hard max, always change immediately.\n metrics = options.obstacleMetrics,\n softMinX = PathfinderAlgorithms_min(start.x,\n end.x) - metrics.maxWidth - 10,\n softMaxX = PathfinderAlgorithms_max(start.x,\n end.x) + metrics.maxWidth + 10,\n softMinY = PathfinderAlgorithms_min(start.y,\n end.y) - metrics.maxHeight - 10,\n softMaxY = PathfinderAlgorithms_max(start.y,\n end.y) + metrics.maxHeight + 10;\n var segments,\n useMax,\n extractedEndPoint,\n forceObstacleBreak = false, // Used in clearPathTo to keep track of\n // when to force break through an obstacle.\n // Obstacles\n chartObstacles = options.chartObstacles,\n endObstacleIx = findLastObstacleBefore(chartObstacles,\n softMaxX);\n var startObstacleIx = findLastObstacleBefore(chartObstacles,\n softMinX);\n // eslint-disable-next-line valid-jsdoc\n /**\n * How far can you go between two points before hitting an obstacle?\n * Does not work for diagonal lines (because it doesn't have to).\n * @private\n */\n function pivotPoint(fromPoint, toPoint, directionIsX) {\n var searchDirection = fromPoint.x < toPoint.x ? 1 : -1;\n var firstPoint,\n lastPoint,\n highestPoint,\n lowestPoint;\n if (fromPoint.x < toPoint.x) {\n firstPoint = fromPoint;\n lastPoint = toPoint;\n }\n else {\n firstPoint = toPoint;\n lastPoint = fromPoint;\n }\n if (fromPoint.y < toPoint.y) {\n lowestPoint = fromPoint;\n highestPoint = toPoint;\n }\n else {\n lowestPoint = toPoint;\n highestPoint = fromPoint;\n }\n // Go through obstacle range in reverse if toPoint is before\n // fromPoint in the X-dimension.\n var i = searchDirection < 0 ?\n // Searching backwards, start at last obstacle before last point\n PathfinderAlgorithms_min(findLastObstacleBefore(chartObstacles,\n lastPoint.x),\n chartObstacles.length - 1) :\n // Forwards. Since we're not sorted by xMax, we have to look\n // at all obstacles.\n 0;\n // Go through obstacles in this X range\n while (chartObstacles[i] && (searchDirection > 0 && chartObstacles[i].xMin <= lastPoint.x ||\n searchDirection < 0 && chartObstacles[i].xMax >= firstPoint.x)) {\n // If this obstacle is between from and to points in a straight\n // line, pivot at the intersection.\n if (chartObstacles[i].xMin <= lastPoint.x &&\n chartObstacles[i].xMax >= firstPoint.x &&\n chartObstacles[i].yMin <= highestPoint.y &&\n chartObstacles[i].yMax >= lowestPoint.y) {\n if (directionIsX) {\n return {\n y: fromPoint.y,\n x: fromPoint.x < toPoint.x ?\n chartObstacles[i].xMin - 1 :\n chartObstacles[i].xMax + 1,\n obstacle: chartObstacles[i]\n };\n }\n // Else ...\n return {\n x: fromPoint.x,\n y: fromPoint.y < toPoint.y ?\n chartObstacles[i].yMin - 1 :\n chartObstacles[i].yMax + 1,\n obstacle: chartObstacles[i]\n };\n }\n i += searchDirection;\n }\n return toPoint;\n }\n /**\n * Decide in which direction to dodge or get out of an obstacle.\n * Considers desired direction, which way is shortest, soft and hard\n * bounds.\n *\n * (? Returns a string, either xMin, xMax, yMin or yMax.)\n *\n * @private\n * @function\n *\n * @param {Object} obstacle\n * Obstacle to dodge/escape.\n *\n * @param {Object} fromPoint\n * Point with x/y props that's dodging/escaping.\n *\n * @param {Object} toPoint\n * Goal point.\n *\n * @param {boolean} dirIsX\n * Dodge in X dimension.\n *\n * @param {Object} bounds\n * Hard and soft boundaries.\n *\n * @return {boolean}\n * Use max or not.\n */\n function getDodgeDirection(obstacle, fromPoint, toPoint, dirIsX, bounds) {\n var softBounds = bounds.soft, hardBounds = bounds.hard, dir = dirIsX ? 'x' : 'y', toPointMax = { x: fromPoint.x, y: fromPoint.y }, toPointMin = { x: fromPoint.x, y: fromPoint.y }, maxOutOfSoftBounds = obstacle[dir + 'Max'] >=\n softBounds[dir + 'Max'], minOutOfSoftBounds = obstacle[dir + 'Min'] <=\n softBounds[dir + 'Min'], maxOutOfHardBounds = obstacle[dir + 'Max'] >=\n hardBounds[dir + 'Max'], minOutOfHardBounds = obstacle[dir + 'Min'] <=\n hardBounds[dir + 'Min'], \n // Find out if we should prefer one direction over the other if\n // we can choose freely\n minDistance = abs(obstacle[dir + 'Min'] - fromPoint[dir]), maxDistance = abs(obstacle[dir + 'Max'] - fromPoint[dir]);\n var // If it's a small difference, pick the one leading towards dest\n // point. Otherwise pick the shortest distance\n useMax = abs(minDistance - maxDistance) < 10 ?\n fromPoint[dir] < toPoint[dir] :\n maxDistance < minDistance;\n // Check if we hit any obstacles trying to go around in either\n // direction.\n toPointMin[dir] = obstacle[dir + 'Min'];\n toPointMax[dir] = obstacle[dir + 'Max'];\n var minPivot = pivotPoint(fromPoint,\n toPointMin,\n dirIsX)[dir] !==\n toPointMin[dir],\n maxPivot = pivotPoint(fromPoint,\n toPointMax,\n dirIsX)[dir] !==\n toPointMax[dir];\n useMax = minPivot ?\n (maxPivot ? useMax : true) :\n (maxPivot ? false : useMax);\n // `useMax` now contains our preferred choice, bounds not taken into\n // account. If both or neither direction is out of bounds we want to\n // use this.\n // Deal with soft bounds\n useMax = minOutOfSoftBounds ?\n (maxOutOfSoftBounds ? useMax : true) : // Out on min\n (maxOutOfSoftBounds ? false : useMax); // Not out on min\n // Deal with hard bounds\n useMax = minOutOfHardBounds ?\n (maxOutOfHardBounds ? useMax : true) : // Out on min\n (maxOutOfHardBounds ? false : useMax); // Not out on min\n return useMax;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Find a clear path between point.\n * @private\n */\n function clearPathTo(fromPoint, toPoint, dirIsX) {\n // Don't waste time if we've hit goal\n if (fromPoint.x === toPoint.x && fromPoint.y === toPoint.y) {\n return [];\n }\n var dir = dirIsX ? 'x' : 'y',\n obstacleMargin = options.obstacleOptions.margin,\n bounds = {\n soft: {\n xMin: softMinX,\n xMax: softMaxX,\n yMin: softMinY,\n yMax: softMaxY\n },\n hard: options.hardBounds\n };\n var pivot,\n segments,\n waypoint,\n waypointUseMax,\n envelopingObstacle,\n secondEnvelopingObstacle,\n envelopWaypoint;\n // If fromPoint is inside an obstacle we have a problem. Break out\n // by just going to the outside of this obstacle. We prefer to go to\n // the nearest edge in the chosen direction.\n envelopingObstacle =\n findObstacleFromPoint(chartObstacles, fromPoint);\n if (envelopingObstacle > -1) {\n envelopingObstacle = chartObstacles[envelopingObstacle];\n waypointUseMax = getDodgeDirection(envelopingObstacle, fromPoint, toPoint, dirIsX, bounds);\n // Cut obstacle to hard bounds to make sure we stay within\n limitObstacleToBounds(envelopingObstacle, options.hardBounds);\n envelopWaypoint = dirIsX ? {\n y: fromPoint.y,\n x: envelopingObstacle[waypointUseMax ? 'xMax' : 'xMin'] +\n (waypointUseMax ? 1 : -1)\n } : {\n x: fromPoint.x,\n y: envelopingObstacle[waypointUseMax ? 'yMax' : 'yMin'] +\n (waypointUseMax ? 1 : -1)\n };\n // If we crashed into another obstacle doing this, we put the\n // waypoint between them instead\n secondEnvelopingObstacle = findObstacleFromPoint(chartObstacles, envelopWaypoint);\n if (secondEnvelopingObstacle > -1) {\n secondEnvelopingObstacle = chartObstacles[secondEnvelopingObstacle];\n // Cut obstacle to hard bounds\n limitObstacleToBounds(secondEnvelopingObstacle, options.hardBounds);\n // Modify waypoint to lay between obstacles\n envelopWaypoint[dir] = waypointUseMax ? PathfinderAlgorithms_max(envelopingObstacle[dir + 'Max'] - obstacleMargin + 1, (secondEnvelopingObstacle[dir + 'Min'] +\n envelopingObstacle[dir + 'Max']) / 2) :\n PathfinderAlgorithms_min((envelopingObstacle[dir + 'Min'] + obstacleMargin - 1), ((secondEnvelopingObstacle[dir + 'Max'] +\n envelopingObstacle[dir + 'Min']) / 2));\n // We are not going anywhere. If this happens for the first\n // time, do nothing. Otherwise, try to go to the extreme of\n // the obstacle pair in the current direction.\n if (fromPoint.x === envelopWaypoint.x &&\n fromPoint.y === envelopWaypoint.y) {\n if (forceObstacleBreak) {\n envelopWaypoint[dir] = waypointUseMax ?\n PathfinderAlgorithms_max(envelopingObstacle[dir + 'Max'], secondEnvelopingObstacle[dir + 'Max']) + 1 :\n PathfinderAlgorithms_min(envelopingObstacle[dir + 'Min'], secondEnvelopingObstacle[dir + 'Min']) - 1;\n }\n // Toggle on if off, and the opposite\n forceObstacleBreak = !forceObstacleBreak;\n }\n else {\n // This point is not identical to previous.\n // Clear break trigger.\n forceObstacleBreak = false;\n }\n }\n segments = [{\n start: fromPoint,\n end: envelopWaypoint\n }];\n }\n else { // If not enveloping, use standard pivot calculation\n pivot = pivotPoint(fromPoint, {\n x: dirIsX ? toPoint.x : fromPoint.x,\n y: dirIsX ? fromPoint.y : toPoint.y\n }, dirIsX);\n segments = [{\n start: fromPoint,\n end: {\n x: pivot.x,\n y: pivot.y\n }\n }];\n // Pivot before goal, use a waypoint to dodge obstacle\n if (pivot[dirIsX ? 'x' : 'y'] !== toPoint[dirIsX ? 'x' : 'y']) {\n // Find direction of waypoint\n waypointUseMax = getDodgeDirection(pivot.obstacle, pivot, toPoint, !dirIsX, bounds);\n // Cut waypoint to hard bounds\n limitObstacleToBounds(pivot.obstacle, options.hardBounds);\n waypoint = {\n x: dirIsX ?\n pivot.x :\n pivot.obstacle[waypointUseMax ? 'xMax' : 'xMin'] +\n (waypointUseMax ? 1 : -1),\n y: dirIsX ?\n pivot.obstacle[waypointUseMax ? 'yMax' : 'yMin'] +\n (waypointUseMax ? 1 : -1) :\n pivot.y\n };\n // We're changing direction here, store that to make sure we\n // also change direction when adding the last segment array\n // after handling waypoint.\n dirIsX = !dirIsX;\n segments = segments.concat(clearPathTo({\n x: pivot.x,\n y: pivot.y\n }, waypoint, dirIsX));\n }\n }\n // Get segments for the other direction too\n // Recursion is our friend\n segments = segments.concat(clearPathTo(segments[segments.length - 1].end, toPoint, !dirIsX));\n return segments;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extract point to outside of obstacle in whichever direction is\n * closest. Returns new point outside obstacle.\n * @private\n */\n function extractFromObstacle(obstacle, point, goalPoint) {\n var dirIsX = PathfinderAlgorithms_min(obstacle.xMax - point.x,\n point.x - obstacle.xMin) <\n PathfinderAlgorithms_min(obstacle.yMax - point.y,\n point.y - obstacle.yMin),\n bounds = {\n soft: options.hardBounds,\n hard: options.hardBounds\n },\n useMax = getDodgeDirection(obstacle,\n point,\n goalPoint,\n dirIsX,\n bounds);\n return dirIsX ? {\n y: point.y,\n x: obstacle[useMax ? 'xMax' : 'xMin'] + (useMax ? 1 : -1)\n } : {\n x: point.x,\n y: obstacle[useMax ? 'yMax' : 'yMin'] + (useMax ? 1 : -1)\n };\n }\n // Cut the obstacle array to soft bounds for optimization in large\n // datasets.\n chartObstacles =\n chartObstacles.slice(startObstacleIx, endObstacleIx + 1);\n // If an obstacle envelops the end point, move it out of there and add\n // a little segment to where it was.\n if ((endObstacleIx = findObstacleFromPoint(chartObstacles, end)) > -1) {\n extractedEndPoint = extractFromObstacle(chartObstacles[endObstacleIx], end, start);\n endSegments.push({\n end: end,\n start: extractedEndPoint\n });\n end = extractedEndPoint;\n }\n // If it's still inside one or more obstacles, get out of there by\n // force-moving towards the start point.\n while ((endObstacleIx = findObstacleFromPoint(chartObstacles, end)) > -1) {\n useMax = end[dir] - start[dir] < 0;\n extractedEndPoint = {\n x: end.x,\n y: end.y\n };\n extractedEndPoint[dir] = chartObstacles[endObstacleIx][useMax ? dir + 'Max' : dir + 'Min'] + (useMax ? 1 : -1);\n endSegments.push({\n end: end,\n start: extractedEndPoint\n });\n end = extractedEndPoint;\n }\n // Find the path\n segments = clearPathTo(start, end, dirIsX);\n // Add the end-point segments\n segments = segments.concat(endSegments.reverse());\n return {\n path: pathFromSegments(segments),\n obstacles: segments\n };\n}\nfastAvoid.requiresObstacles = true;\n/* *\n *\n * Default Export\n *\n * */\n// Define the available pathfinding algorithms.\n// Algorithms take up to 3 arguments: starting point, ending point, and an\n// options object.\nvar algorithms = {\n fastAvoid: fastAvoid,\n straight: straight,\n simpleConnect: simpleConnect\n};\n/* harmony default export */ var PathfinderAlgorithms = (algorithms);\n\n;// ./code/es5/es-modules/Gantt/ConnectorsDefaults.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Øystein Moseng, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * API Defaults\n *\n * */\n/*\n @todo:\n - Document how to write your own algorithms\n - Consider adding a Point.pathTo method that wraps creating a connection\n and rendering it\n*/\nvar connectorsDefaults = {\n /**\n * The Pathfinder module allows you to define connections between any two\n * points, represented as lines - optionally with markers for the start\n * and/or end points. Multiple algorithms are available for calculating how\n * the connecting lines are drawn.\n *\n * Connector functionality requires Highcharts Gantt to be loaded. In Gantt\n * charts, the connectors are used to draw dependencies between tasks.\n *\n * @see [dependency](series.gantt.data.dependency)\n *\n * @sample gantt/pathfinder/demo\n * Pathfinder connections\n *\n * @declare Highcharts.ConnectorsOptions\n * @product gantt\n * @optionparent connectors\n */\n connectors: {\n /**\n * Enable connectors for this chart. Requires Highcharts Gantt.\n *\n * @type {boolean}\n * @default true\n * @since 6.2.0\n * @apioption connectors.enabled\n */\n /**\n * Set the default dash style for this chart's connecting lines.\n *\n * @type {string}\n * @default solid\n * @since 6.2.0\n * @apioption connectors.dashStyle\n */\n /**\n * Set the default color for this chart's Pathfinder connecting lines.\n * Defaults to the color of the point being connected.\n *\n * @type {Highcharts.ColorString}\n * @since 6.2.0\n * @apioption connectors.lineColor\n */\n /**\n * Set the default pathfinder margin to use, in pixels. Some Pathfinder\n * algorithms attempt to avoid obstacles, such as other points in the\n * chart. These algorithms use this margin to determine how close lines\n * can be to an obstacle. The default is to compute this automatically\n * from the size of the obstacles in the chart.\n *\n * To draw connecting lines close to existing points, set this to a low\n * number. For more space around existing points, set this number\n * higher.\n *\n * @sample gantt/pathfinder/algorithm-margin\n * Small algorithmMargin\n *\n * @type {number}\n * @since 6.2.0\n * @apioption connectors.algorithmMargin\n */\n /**\n * Set the default pathfinder algorithm to use for this chart. It is\n * possible to define your own algorithms by adding them to the\n * Highcharts.Pathfinder.prototype.algorithms object before the chart\n * has been created.\n *\n * The default algorithms are as follows:\n *\n * `straight`: Draws a straight line between the connecting\n * points. Does not avoid other points when drawing.\n *\n * `simpleConnect`: Finds a path between the points using right angles\n * only. Takes only starting/ending points into\n * account, and will not avoid other points.\n *\n * `fastAvoid`: Finds a path between the points using right angles\n * only. Will attempt to avoid other points, but its\n * focus is performance over accuracy. Works well with\n * less dense datasets.\n *\n * Default value: `straight` is used as default for most series types,\n * while `simpleConnect` is used as default for Gantt series, to show\n * dependencies between points.\n *\n * @sample gantt/pathfinder/demo\n * Different types used\n *\n * @type {Highcharts.PathfinderTypeValue}\n * @default undefined\n * @since 6.2.0\n */\n type: 'straight',\n /**\n * The corner radius for the connector line.\n *\n * @since 11.2.0\n */\n radius: 0,\n /**\n * Set the default pixel width for this chart's Pathfinder connecting\n * lines.\n *\n * @since 6.2.0\n */\n lineWidth: 1,\n /**\n * Marker options for this chart's Pathfinder connectors. Note that\n * this option is overridden by the `startMarker` and `endMarker`\n * options.\n *\n * @declare Highcharts.ConnectorsMarkerOptions\n * @since 6.2.0\n */\n marker: {\n /**\n * Set the radius of the connector markers. The default is\n * automatically computed based on the algorithmMargin setting.\n *\n * Setting marker.width and marker.height will override this\n * setting.\n *\n * @type {number}\n * @since 6.2.0\n * @apioption connectors.marker.radius\n */\n /**\n * Set the width of the connector markers. If not supplied, this\n * is inferred from the marker radius.\n *\n * @type {number}\n * @since 6.2.0\n * @apioption connectors.marker.width\n */\n /**\n * Set the height of the connector markers. If not supplied, this\n * is inferred from the marker radius.\n *\n * @type {number}\n * @since 6.2.0\n * @apioption connectors.marker.height\n */\n /**\n * Set the color of the connector markers. By default this is the\n * same as the connector color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 6.2.0\n * @apioption connectors.marker.color\n */\n /**\n * Set the line/border color of the connector markers. By default\n * this is the same as the marker color.\n *\n * @type {Highcharts.ColorString}\n * @since 6.2.0\n * @apioption connectors.marker.lineColor\n */\n /**\n * Enable markers for the connectors.\n */\n enabled: false,\n /**\n * Horizontal alignment of the markers relative to the points.\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'center',\n /**\n * Vertical alignment of the markers relative to the points.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'middle',\n /**\n * Whether or not to draw the markers inside the points.\n */\n inside: false,\n /**\n * Set the line/border width of the pathfinder markers.\n */\n lineWidth: 1\n },\n /**\n * Marker options specific to the start markers for this chart's\n * Pathfinder connectors. Overrides the generic marker options.\n *\n * @declare Highcharts.ConnectorsStartMarkerOptions\n * @extends connectors.marker\n * @since 6.2.0\n */\n startMarker: {\n /**\n * Set the symbol of the connector start markers.\n */\n symbol: 'diamond'\n },\n /**\n * Marker options specific to the end markers for this chart's\n * Pathfinder connectors. Overrides the generic marker options.\n *\n * @declare Highcharts.ConnectorsEndMarkerOptions\n * @extends connectors.marker\n * @since 6.2.0\n */\n endMarker: {\n /**\n * Set the symbol of the connector end markers.\n */\n symbol: 'arrow-filled'\n }\n }\n};\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var ConnectorsDefaults = (connectorsDefaults);\n/* *\n *\n * API Options\n *\n * */\n/**\n * Override Pathfinder connector options for a series. Requires Highcharts Gantt\n * to be loaded.\n *\n * @declare Highcharts.SeriesConnectorsOptionsObject\n * @extends connectors\n * @since 6.2.0\n * @excluding enabled, algorithmMargin\n * @product gantt\n * @apioption plotOptions.series.connectors\n */\n/**\n * Connect to a point. This option can be either a string, referring to the ID\n * of another point, or an object, or an array of either. If the option is an\n * array, each element defines a connection.\n *\n * @sample gantt/pathfinder/demo\n * Different connection types\n *\n * @declare Highcharts.XrangePointConnectorsOptionsObject\n * @type {string|Array<string|*>|*}\n * @extends plotOptions.series.connectors\n * @since 6.2.0\n * @excluding enabled\n * @product gantt\n * @requires highcharts-gantt\n * @apioption series.xrange.data.connect\n */\n/**\n * The ID of the point to connect to.\n *\n * @type {string}\n * @since 6.2.0\n * @product gantt\n * @apioption series.xrange.data.connect.to\n */\n''; // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Gantt/PathfinderComposition.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Øystein Moseng, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar PathfinderComposition_setOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setOptions;\n\nvar PathfinderComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, PathfinderComposition_error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, PathfinderComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Get point bounding box using plotX/plotY and shapeArgs. If using\n * graphic.getBBox() directly, the bbox will be affected by animation.\n *\n * @private\n * @function\n *\n * @param {Highcharts.Point} point\n * The point to get BB of.\n *\n * @return {Highcharts.Dictionary<number>|null}\n * Result xMax, xMin, yMax, yMin.\n */\nfunction getPointBB(point) {\n var shapeArgs = point.shapeArgs;\n // Prefer using shapeArgs (columns)\n if (shapeArgs) {\n return {\n xMin: shapeArgs.x || 0,\n xMax: (shapeArgs.x || 0) + (shapeArgs.width || 0),\n yMin: shapeArgs.y || 0,\n yMax: (shapeArgs.y || 0) + (shapeArgs.height || 0)\n };\n }\n // Otherwise use plotX/plotY and bb\n var bb = point.graphic && point.graphic.getBBox();\n return bb ? {\n xMin: point.plotX - bb.width / 2,\n xMax: point.plotX + bb.width / 2,\n yMin: point.plotY - bb.height / 2,\n yMax: point.plotY + bb.height / 2\n } : null;\n}\n/**\n * Warn if using legacy options. Copy the options over. Note that this will\n * still break if using the legacy options in chart.update, addSeries etc.\n * @private\n */\nfunction warnLegacy(chart) {\n if (chart.options.pathfinder ||\n chart.series.reduce(function (acc, series) {\n if (series.options) {\n PathfinderComposition_merge(true, (series.options.connectors = series.options.connectors ||\n {}), series.options.pathfinder);\n }\n return acc || series.options && series.options.pathfinder;\n }, false)) {\n PathfinderComposition_merge(true, (chart.options.connectors = chart.options.connectors || {}), chart.options.pathfinder);\n PathfinderComposition_error('WARNING: Pathfinder options have been renamed. ' +\n 'Use \"chart.connectors\" or \"series.connectors\" instead.');\n }\n}\n/* *\n *\n * Composition\n *\n * */\nvar ConnectionComposition;\n(function (ConnectionComposition) {\n /* *\n *\n * Functions\n *\n * */\n /** @private */\n function compose(ChartClass, PathfinderClass, PointClass) {\n var pointProto = PointClass.prototype;\n if (!pointProto.getPathfinderAnchorPoint) {\n // Initialize Pathfinder for charts\n ChartClass.prototype.callbacks.push(function (chart) {\n var options = chart.options;\n if (options.connectors.enabled !== false) {\n warnLegacy(chart);\n this.pathfinder = new PathfinderClass(this);\n this.pathfinder.update(true); // First draw, defer render\n }\n });\n pointProto.getMarkerVector = pointGetMarkerVector;\n pointProto.getPathfinderAnchorPoint = pointGetPathfinderAnchorPoint;\n pointProto.getRadiansToVector = pointGetRadiansToVector;\n // Set default Pathfinder options\n PathfinderComposition_setOptions(ConnectorsDefaults);\n }\n }\n ConnectionComposition.compose = compose;\n /**\n * Get coordinates of anchor point for pathfinder connection.\n *\n * @private\n * @function Highcharts.Point#getPathfinderAnchorPoint\n *\n * @param {Highcharts.ConnectorsMarkerOptions} markerOptions\n * Connection options for position on point.\n *\n * @return {Highcharts.PositionObject}\n * An object with x/y properties for the position. Coordinates are\n * in plot values, not relative to point.\n */\n function pointGetPathfinderAnchorPoint(markerOptions) {\n var bb = getPointBB(this);\n var x,\n y;\n switch (markerOptions.align) { // eslint-disable-line default-case\n case 'right':\n x = 'xMax';\n break;\n case 'left':\n x = 'xMin';\n }\n switch (markerOptions.verticalAlign) { // eslint-disable-line default-case\n case 'top':\n y = 'yMin';\n break;\n case 'bottom':\n y = 'yMax';\n }\n return {\n x: x ? bb[x] : (bb.xMin + bb.xMax) / 2,\n y: y ? bb[y] : (bb.yMin + bb.yMax) / 2\n };\n }\n /**\n * Utility to get the angle from one point to another.\n *\n * @private\n * @function Highcharts.Point#getRadiansToVector\n *\n * @param {Highcharts.PositionObject} v1\n * The first vector, as an object with x/y properties.\n *\n * @param {Highcharts.PositionObject} v2\n * The second vector, as an object with x/y properties.\n *\n * @return {number}\n * The angle in degrees\n */\n function pointGetRadiansToVector(v1, v2) {\n var box;\n if (!PathfinderComposition_defined(v2)) {\n box = getPointBB(this);\n if (box) {\n v2 = {\n x: (box.xMin + box.xMax) / 2,\n y: (box.yMin + box.yMax) / 2\n };\n }\n }\n return Math.atan2(v2.y - v1.y, v1.x - v2.x);\n }\n /**\n * Utility to get the position of the marker, based on the path angle and\n * the marker's radius.\n *\n * @private\n * @function Highcharts.Point#getMarkerVector\n *\n * @param {number} radians\n * The angle in radians from the point center to another vector.\n *\n * @param {number} markerRadius\n * The radius of the marker, to calculate the additional distance to\n * the center of the marker.\n *\n * @param {Object} anchor\n * The anchor point of the path and marker as an object with x/y\n * properties.\n *\n * @return {Object}\n * The marker vector as an object with x/y properties.\n */\n function pointGetMarkerVector(radians, markerRadius, anchor) {\n var twoPI = Math.PI * 2.0, bb = getPointBB(this), rectWidth = bb.xMax - bb.xMin, rectHeight = bb.yMax - bb.yMin, rAtan = Math.atan2(rectHeight, rectWidth), rectHalfWidth = rectWidth / 2.0, rectHalfHeight = rectHeight / 2.0, rectHorizontalCenter = bb.xMin + rectHalfWidth, rectVerticalCenter = bb.yMin + rectHalfHeight, edgePoint = {\n x: rectHorizontalCenter,\n y: rectVerticalCenter\n };\n var theta = radians,\n tanTheta = 1,\n leftOrRightRegion = false,\n xFactor = 1,\n yFactor = 1;\n while (theta < -Math.PI) {\n theta += twoPI;\n }\n while (theta > Math.PI) {\n theta -= twoPI;\n }\n tanTheta = Math.tan(theta);\n if ((theta > -rAtan) && (theta <= rAtan)) {\n // Right side\n yFactor = -1;\n leftOrRightRegion = true;\n }\n else if (theta > rAtan && theta <= (Math.PI - rAtan)) {\n // Top side\n yFactor = -1;\n }\n else if (theta > (Math.PI - rAtan) || theta <= -(Math.PI - rAtan)) {\n // Left side\n xFactor = -1;\n leftOrRightRegion = true;\n }\n else {\n // Bottom side\n xFactor = -1;\n }\n // Correct the edgePoint according to the placement of the marker\n if (leftOrRightRegion) {\n edgePoint.x += xFactor * (rectHalfWidth);\n edgePoint.y += yFactor * (rectHalfWidth) * tanTheta;\n }\n else {\n edgePoint.x += xFactor * (rectHeight / (2.0 * tanTheta));\n edgePoint.y += yFactor * (rectHalfHeight);\n }\n if (anchor.x !== rectHorizontalCenter) {\n edgePoint.x = anchor.x;\n }\n if (anchor.y !== rectVerticalCenter) {\n edgePoint.y = anchor.y;\n }\n return {\n x: edgePoint.x + (markerRadius * Math.cos(theta)),\n y: edgePoint.y - (markerRadius * Math.sin(theta))\n };\n }\n})(ConnectionComposition || (ConnectionComposition = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var PathfinderComposition = (ConnectionComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Point\"],\"commonjs\":[\"highcharts\",\"Point\"],\"commonjs2\":[\"highcharts\",\"Point\"],\"root\":[\"Highcharts\",\"Point\"]}\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_ = __webpack_require__(260);\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default = /*#__PURE__*/__webpack_require__.n(highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_);\n;// ./code/es5/es-modules/Gantt/Pathfinder.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Øystein Moseng, Lars A. V. Cabrera\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\n\nvar Pathfinder_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, Pathfinder_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Pathfinder_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, Pathfinder_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n * Constants\n *\n * */\nvar Pathfinder_max = Math.max, Pathfinder_min = Math.min;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Get point bounding box using plotX/plotY and shapeArgs. If using\n * graphic.getBBox() directly, the bbox will be affected by animation.\n *\n * @private\n * @function\n *\n * @param {Highcharts.Point} point\n * The point to get BB of.\n *\n * @return {Highcharts.Dictionary<number>|null}\n * Result xMax, xMin, yMax, yMin.\n */\nfunction Pathfinder_getPointBB(point) {\n var shapeArgs = point.shapeArgs;\n // Prefer using shapeArgs (columns)\n if (shapeArgs) {\n return {\n xMin: shapeArgs.x || 0,\n xMax: (shapeArgs.x || 0) + (shapeArgs.width || 0),\n yMin: shapeArgs.y || 0,\n yMax: (shapeArgs.y || 0) + (shapeArgs.height || 0)\n };\n }\n // Otherwise use plotX/plotY and bb\n var bb = point.graphic && point.graphic.getBBox();\n return bb ? {\n xMin: point.plotX - bb.width / 2,\n xMax: point.plotX + bb.width / 2,\n yMin: point.plotY - bb.height / 2,\n yMax: point.plotY + bb.height / 2\n } : null;\n}\n/**\n * Compute smallest distance between two rectangles.\n * @private\n */\nfunction calculateObstacleDistance(a, b, bbMargin) {\n // Count the distance even if we are slightly off\n var margin = Pathfinder_pick(bbMargin, 10),\n yOverlap = a.yMax + margin > b.yMin - margin &&\n a.yMin - margin < b.yMax + margin,\n xOverlap = a.xMax + margin > b.xMin - margin &&\n a.xMin - margin < b.xMax + margin,\n xDistance = yOverlap ? (a.xMin > b.xMax ? a.xMin - b.xMax : b.xMin - a.xMax) : Infinity,\n yDistance = xOverlap ? (a.yMin > b.yMax ? a.yMin - b.yMax : b.yMin - a.yMax) : Infinity;\n // If the rectangles collide, try recomputing with smaller margin.\n // If they collide anyway, discard the obstacle.\n if (xOverlap && yOverlap) {\n return (margin ?\n calculateObstacleDistance(a, b, Math.floor(margin / 2)) :\n Infinity);\n }\n return Pathfinder_min(xDistance, yDistance);\n}\n/**\n * Calculate margin to place around obstacles for the pathfinder in pixels.\n * Returns a minimum of 1 pixel margin.\n *\n * @private\n * @function\n *\n * @param {Array<object>} obstacles\n * Obstacles to calculate margin from.\n *\n * @return {number}\n * The calculated margin in pixels. At least 1.\n */\nfunction calculateObstacleMargin(obstacles) {\n var len = obstacles.length,\n distances = [];\n var onstacleDistance;\n // Go over all obstacles and compare them to the others.\n for (var i = 0; i < len; ++i) {\n // Compare to all obstacles ahead. We will already have compared this\n // obstacle to the ones before.\n for (var j = i + 1; j < len; ++j) {\n onstacleDistance =\n calculateObstacleDistance(obstacles[i], obstacles[j]);\n // TODO: Magic number 80\n if (onstacleDistance < 80) { // Ignore large distances\n distances.push(onstacleDistance);\n }\n }\n }\n // Ensure we always have at least one value, even in very spacious charts\n distances.push(80);\n return Pathfinder_max(Math.floor(distances.sort(function (a, b) {\n return (a - b);\n })[\n // Discard first 10% of the relevant distances, and then grab\n // the smallest one.\n Math.floor(distances.length / 10)] / 2 - 1 // Divide the distance by 2 and subtract 1.\n ), 1 // 1 is the minimum margin\n );\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * The Pathfinder class.\n *\n * @private\n * @class\n * @name Highcharts.Pathfinder\n *\n * @param {Highcharts.Chart} chart\n * The chart to operate on.\n */\nvar Pathfinder = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Pathfinder(chart) {\n this.init(chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n Pathfinder.compose = function (ChartClass, PointClass) {\n PathfinderComposition.compose(ChartClass, Pathfinder, PointClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the Pathfinder object.\n *\n * @function Highcharts.Pathfinder#init\n *\n * @param {Highcharts.Chart} chart\n * The chart context.\n */\n Pathfinder.prototype.init = function (chart) {\n // Initialize pathfinder with chart context\n this.chart = chart;\n // Init connection reference list\n this.connections = [];\n // Recalculate paths/obstacles on chart redraw\n Pathfinder_addEvent(chart, 'redraw', function () {\n this.pathfinder.update();\n });\n };\n /**\n * Update Pathfinder connections from scratch.\n *\n * @function Highcharts.Pathfinder#update\n *\n * @param {boolean} [deferRender]\n * Whether or not to defer rendering of connections until\n * series.afterAnimate event has fired. Used on first render.\n */\n Pathfinder.prototype.update = function (deferRender) {\n var chart = this.chart,\n pathfinder = this,\n oldConnections = pathfinder.connections;\n // Rebuild pathfinder connections from options\n pathfinder.connections = [];\n chart.series.forEach(function (series) {\n if (series.visible && !series.options.isInternal) {\n series.points.forEach(function (point) {\n var _a;\n var ganttPointOptions = point.options;\n // For Gantt series the connect could be\n // defined as a dependency\n if (ganttPointOptions && ganttPointOptions.dependency) {\n ganttPointOptions.connect = ganttPointOptions\n .dependency;\n }\n var connects = ((_a = point.options) === null || _a === void 0 ? void 0 : _a.connect) ?\n Pathfinder_splat(point.options.connect) :\n [];\n var to;\n if (point.visible && point.isInside !== false) {\n connects.forEach(function (connect) {\n var toId = typeof connect === 'string' ?\n connect :\n connect.to;\n if (toId) {\n to = chart.get(toId);\n }\n if (to instanceof (highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default()) &&\n to.series.visible &&\n to.visible &&\n to.isInside !== false) {\n // Add new connection\n pathfinder.connections.push(new Gantt_Connection(point, // From\n to, typeof connect === 'string' ?\n {} :\n connect));\n }\n });\n }\n });\n }\n });\n // Clear connections that should not be updated, and move old info over\n // to new connections.\n for (var j = 0, k = void 0, found = void 0, lenOld = oldConnections.length, lenNew = pathfinder.connections.length; j < lenOld; ++j) {\n found = false;\n var oldCon = oldConnections[j];\n for (k = 0; k < lenNew; ++k) {\n var newCon = pathfinder.connections[k];\n if ((oldCon.options && oldCon.options.type) ===\n (newCon.options && newCon.options.type) &&\n oldCon.fromPoint === newCon.fromPoint &&\n oldCon.toPoint === newCon.toPoint) {\n newCon.graphics = oldCon.graphics;\n found = true;\n break;\n }\n }\n if (!found) {\n oldCon.destroy();\n }\n }\n // Clear obstacles to force recalculation. This must be done on every\n // redraw in case positions have changed. Recalculation is handled in\n // Connection.getPath on demand.\n delete this.chartObstacles;\n delete this.lineObstacles;\n // Draw the pending connections\n pathfinder.renderConnections(deferRender);\n };\n /**\n * Draw the chart's connecting paths.\n *\n * @function Highcharts.Pathfinder#renderConnections\n *\n * @param {boolean} [deferRender]\n * Whether or not to defer render until series animation is finished.\n * Used on first render.\n */\n Pathfinder.prototype.renderConnections = function (deferRender) {\n if (deferRender) {\n // Render after series are done animating\n this.chart.series.forEach(function (series) {\n var render = function () {\n // Find pathfinder connections belonging to this series\n // that haven't rendered, and render them now.\n var pathfinder = series.chart.pathfinder,\n conns = pathfinder && pathfinder.connections || [];\n conns.forEach(function (connection) {\n if (connection.fromPoint &&\n connection.fromPoint.series === series) {\n connection.render();\n }\n });\n if (series.pathfinderRemoveRenderEvent) {\n series.pathfinderRemoveRenderEvent();\n delete series.pathfinderRemoveRenderEvent;\n }\n };\n if (series.options.animation === false) {\n render();\n }\n else {\n series.pathfinderRemoveRenderEvent = Pathfinder_addEvent(series, 'afterAnimate', render);\n }\n });\n }\n else {\n // Go through connections and render them\n this.connections.forEach(function (connection) {\n connection.render();\n });\n }\n };\n /**\n * Get obstacles for the points in the chart. Does not include connecting\n * lines from Pathfinder. Applies algorithmMargin to the obstacles.\n *\n * @function Highcharts.Pathfinder#getChartObstacles\n *\n * @param {Object} options\n * Options for the calculation. Currently only\n * `options.algorithmMargin`.\n *\n * @param {number} options.algorithmMargin\n * The algorithm margin to use for the obstacles.\n\n * @return {Array<object>}\n * An array of calculated obstacles. Each obstacle is defined as an\n * object with xMin, xMax, yMin and yMax properties.\n */\n Pathfinder.prototype.getChartObstacles = function (options) {\n var series = this.chart.series,\n margin = Pathfinder_pick(options.algorithmMargin, 0);\n var obstacles = [],\n calculatedMargin;\n for (var i = 0, sLen = series.length; i < sLen; ++i) {\n if (series[i].visible && !series[i].options.isInternal) {\n for (var j = 0, pLen = series[i].points.length, bb = void 0, point = void 0; j < pLen; ++j) {\n point = series[i].points[j];\n if (point.visible) {\n bb = Pathfinder_getPointBB(point);\n if (bb) {\n obstacles.push({\n xMin: bb.xMin - margin,\n xMax: bb.xMax + margin,\n yMin: bb.yMin - margin,\n yMax: bb.yMax + margin\n });\n }\n }\n }\n }\n }\n // Sort obstacles by xMin for optimization\n obstacles = obstacles.sort(function (a, b) {\n return a.xMin - b.xMin;\n });\n // Add auto-calculated margin if the option is not defined\n if (!Pathfinder_defined(options.algorithmMargin)) {\n calculatedMargin =\n options.algorithmMargin =\n calculateObstacleMargin(obstacles);\n obstacles.forEach(function (obstacle) {\n obstacle.xMin -= calculatedMargin;\n obstacle.xMax += calculatedMargin;\n obstacle.yMin -= calculatedMargin;\n obstacle.yMax += calculatedMargin;\n });\n }\n return obstacles;\n };\n /**\n * Utility function to get metrics for obstacles:\n * - Widest obstacle width\n * - Tallest obstacle height\n *\n * @function Highcharts.Pathfinder#getObstacleMetrics\n *\n * @param {Array<object>} obstacles\n * An array of obstacles to inspect.\n *\n * @return {Object}\n * The calculated metrics, as an object with maxHeight and maxWidth\n * properties.\n */\n Pathfinder.prototype.getObstacleMetrics = function (obstacles) {\n var maxWidth = 0,\n maxHeight = 0,\n width,\n height,\n i = obstacles.length;\n while (i--) {\n width = obstacles[i].xMax - obstacles[i].xMin;\n height = obstacles[i].yMax - obstacles[i].yMin;\n if (maxWidth < width) {\n maxWidth = width;\n }\n if (maxHeight < height) {\n maxHeight = height;\n }\n }\n return {\n maxHeight: maxHeight,\n maxWidth: maxWidth\n };\n };\n /**\n * Utility to get which direction to start the pathfinding algorithm\n * (X vs Y), calculated from a set of marker options.\n *\n * @function Highcharts.Pathfinder#getAlgorithmStartDirection\n *\n * @param {Highcharts.ConnectorsMarkerOptions} markerOptions\n * Marker options to calculate from.\n *\n * @return {boolean}\n * Returns true for X, false for Y, and undefined for autocalculate.\n */\n Pathfinder.prototype.getAlgorithmStartDirection = function (markerOptions) {\n var xCenter = markerOptions.align !== 'left' &&\n markerOptions.align !== 'right', yCenter = markerOptions.verticalAlign !== 'top' &&\n markerOptions.verticalAlign !== 'bottom';\n return xCenter ?\n (yCenter ? void 0 : false) : // When x is centered\n (yCenter ? true : void 0); // When x is off-center\n };\n return Pathfinder;\n}());\n/**\n * @name Highcharts.Pathfinder#algorithms\n * @type {Highcharts.Dictionary<Function>}\n */\nPathfinder.prototype.algorithms = PathfinderAlgorithms;\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Gantt_Pathfinder = (Pathfinder);\n/* *\n *\n * API Options\n *\n * */\n/**\n * The default pathfinder algorithm to use for a chart. It is possible to define\n * your own algorithms by adding them to the\n * `Highcharts.Pathfinder.prototype.algorithms`\n * object before the chart has been created.\n *\n * The default algorithms are as follows:\n *\n * `straight`: Draws a straight line between the connecting\n * points. Does not avoid other points when drawing.\n *\n * `simpleConnect`: Finds a path between the points using right angles\n * only. Takes only starting/ending points into\n * account, and will not avoid other points.\n *\n * `fastAvoid`: Finds a path between the points using right angles\n * only. Will attempt to avoid other points, but its\n * focus is performance over accuracy. Works well with\n * less dense datasets.\n *\n * @typedef {\"fastAvoid\"|\"simpleConnect\"|\"straight\"|string} Highcharts.PathfinderTypeValue\n */\n''; // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/masters/modules/pathfinder.src.js\n\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.Pathfinder = G.Pathfinder || Gantt_Pathfinder;\nExtensions_ArrowSymbols.compose(G.SVGRenderer);\nG.Pathfinder.compose(G.Chart, G.Point);\n/* harmony default export */ var pathfinder_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/Extensions/StaticScale.js\n/* *\n *\n * (c) 2016-2024 Torstein Honsi, Lars Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar StaticScale_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, StaticScale_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, StaticScale_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, StaticScale_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Composition\n *\n * */\n/** @private */\nfunction StaticScale_compose(AxisClass, ChartClass) {\n var chartProto = ChartClass.prototype;\n if (!chartProto.adjustHeight) {\n StaticScale_addEvent(AxisClass, 'afterSetOptions', StaticScale_onAxisAfterSetOptions);\n chartProto.adjustHeight = chartAdjustHeight;\n StaticScale_addEvent(ChartClass, 'render', chartProto.adjustHeight);\n }\n}\n/** @private */\nfunction StaticScale_onAxisAfterSetOptions() {\n var chartOptions = this.chart.options.chart;\n if (!this.horiz &&\n StaticScale_isNumber(this.options.staticScale) &&\n (!chartOptions.height ||\n (chartOptions.scrollablePlotArea &&\n chartOptions.scrollablePlotArea.minHeight))) {\n this.staticScale = this.options.staticScale;\n }\n}\n/** @private */\nfunction chartAdjustHeight() {\n var chart = this;\n if (chart.redrawTrigger !== 'adjustHeight') {\n var _loop_1 = function (axis) {\n var chart_1 = axis.chart,\n animate = !!chart_1.initiatedScale &&\n chart_1.options.animation,\n staticScale = axis.options.staticScale;\n if (axis.staticScale && StaticScale_defined(axis.min)) {\n var height = StaticScale_pick(axis.brokenAxis && axis.brokenAxis.unitLength,\n axis.max + axis.tickInterval - axis.min) * staticScale;\n // Minimum height is 1 x staticScale.\n height = Math.max(height, staticScale);\n var diff = height - chart_1.plotHeight;\n if (!chart_1.scrollablePixelsY && Math.abs(diff) >= 1) {\n chart_1.plotHeight = height;\n chart_1.redrawTrigger = 'adjustHeight';\n chart_1.setSize(void 0, chart_1.chartHeight + diff, animate);\n }\n // Make sure clip rects have the right height before initial\n // animation.\n axis.series.forEach(function (series) {\n var clipRect = series.sharedClipKey &&\n chart_1.sharedClips[series.sharedClipKey];\n if (clipRect) {\n clipRect.attr(chart_1.inverted ? {\n width: chart_1.plotHeight\n } : {\n height: chart_1.plotHeight\n });\n }\n });\n }\n };\n for (var _i = 0, _a = (chart.axes || []); _i < _a.length; _i++) {\n var axis = _a[_i];\n _loop_1(axis);\n }\n this.initiatedScale = true;\n }\n this.redrawTrigger = null;\n}\n/* *\n *\n * Default Export\n *\n * */\nvar StaticScale = {\n compose: StaticScale_compose\n};\n/* harmony default export */ var Extensions_StaticScale = (StaticScale);\n/* *\n *\n * API Options\n *\n * */\n/**\n * For vertical axes only. Setting the static scale ensures that each tick unit\n * is translated into a fixed pixel height. For example, setting the static\n * scale to 24 results in each Y axis category taking up 24 pixels, and the\n * height of the chart adjusts. Adding or removing items will make the chart\n * resize.\n *\n * @sample gantt/xrange-series/demo/\n * X-range series with static scale\n *\n * @type {number}\n * @default 50\n * @since 6.2.0\n * @product gantt\n * @apioption yAxis.staticScale\n */\n''; // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/masters/modules/static-scale.src.js\n/**\n * @license Highcharts Gantt JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/static-scale\n * @requires highcharts\n *\n * StaticScale\n *\n * (c) 2016-2024 Torstein Honsi, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n */\n\n\n\nvar static_scale_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nExtensions_StaticScale.compose(static_scale_src_G.Axis, static_scale_src_G.Chart);\n/* harmony default export */ var static_scale_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/Series/XRange/XRangeSeriesDefaults.js\n/* *\n *\n * X-range series module\n *\n * (c) 2010-2024 Torstein Honsi, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar XRangeSeriesDefaults_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, XRangeSeriesDefaults_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject;\n/* *\n *\n * Constants\n *\n * */\n/**\n * The X-range series displays ranges on the X axis, typically time\n * intervals with a start and end date.\n *\n * @sample {highcharts} highcharts/demo/x-range/\n * X-range\n * @sample {highcharts} highcharts/css/x-range/\n * Styled mode X-range\n * @sample {highcharts} highcharts/chart/inverted-xrange/\n * Inverted X-range\n *\n * @extends plotOptions.column\n * @since 6.0.0\n * @product highcharts highstock gantt\n * @excluding boostThreshold, crisp, cropThreshold, depth, edgeColor,\n * edgeWidth, findNearestPointBy, getExtremesFromAll,\n * negativeColor, pointInterval, pointIntervalUnit,\n * pointPlacement, pointRange, pointStart, softThreshold,\n * stacking, threshold, data, dataSorting, boostBlending\n * @requires modules/xrange\n * @optionparent plotOptions.xrange\n */\nvar XRangeSeriesDefaults = {\n /**\n * A partial fill for each point, typically used to visualize how much\n * of a task is performed. The partial fill object can be set either on\n * series or point level.\n *\n * @sample {highcharts} highcharts/demo/x-range\n * X-range with partial fill\n *\n * @product highcharts highstock gantt\n * @apioption plotOptions.xrange.partialFill\n */\n /**\n * The fill color to be used for partial fills. Defaults to a darker\n * shade of the point color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption plotOptions.xrange.partialFill.fill\n */\n /**\n * A partial fill for each point, typically used to visualize how much\n * of a task is performed. See [completed](series.gantt.data.completed).\n *\n * @sample gantt/demo/progress-indicator\n * Gantt with progress indicator\n *\n * @product gantt\n * @apioption plotOptions.gantt.partialFill\n */\n /**\n * In an X-range series, this option makes all points of the same Y-axis\n * category the same color.\n */\n colorByPoint: true,\n dataLabels: {\n formatter: function () {\n var amount = this.partialFill;\n if (isObject(amount)) {\n amount = amount.amount;\n }\n if (XRangeSeriesDefaults_isNumber(amount) && amount > 0) {\n return XRangeSeriesDefaults_correctFloat(amount * 100) + '%';\n }\n },\n inside: true,\n verticalAlign: 'middle',\n style: {\n whiteSpace: 'nowrap'\n }\n },\n tooltip: {\n headerFormat: '<span style=\"font-size: 0.8em\">{ucfirst point.x} - {point.x2}</span><br/>',\n pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.yCategory}</b><br/>'\n },\n borderRadius: 3,\n pointRange: 0\n};\n/* *\n *\n * Export Default\n *\n * */\n/* harmony default export */ var XRange_XRangeSeriesDefaults = (XRangeSeriesDefaults);\n/* *\n *\n * API Options\n *\n * */\n/**\n * An `xrange` series. If the [type](#series.xrange.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.xrange\n * @excluding boostThreshold, crisp, cropThreshold, depth, edgeColor, edgeWidth,\n * findNearestPointBy, getExtremesFromAll, negativeColor,\n * pointInterval, pointIntervalUnit, pointPlacement, pointRange,\n * pointStart, softThreshold, stacking, threshold, dataSorting,\n * boostBlending\n * @product highcharts highstock gantt\n * @requires modules/xrange\n * @apioption series.xrange\n */\n/**\n * An array of data points for the series. For the `xrange` series type,\n * points can be given in the following ways:\n *\n * 1. An array of objects with named values. The objects are point configuration\n * objects as seen below.\n * ```js\n * data: [{\n * x: Date.UTC(2017, 0, 1),\n * x2: Date.UTC(2017, 0, 3),\n * name: \"Test\",\n * y: 0,\n * color: \"#00FF00\"\n * }, {\n * x: Date.UTC(2017, 0, 4),\n * x2: Date.UTC(2017, 0, 5),\n * name: \"Deploy\",\n * y: 1,\n * color: \"#FF0000\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.XrangePointOptionsObject\n * @type {Array<*>}\n * @extends series.line.data\n * @product highcharts highstock gantt\n * @apioption series.xrange.data\n */\n/**\n * The starting X value of the range point.\n *\n * @sample {highcharts} highcharts/demo/x-range\n * X-range\n *\n * @type {number}\n * @product highcharts highstock gantt\n * @apioption series.xrange.data.x\n */\n/**\n * The ending X value of the range point.\n *\n * @sample {highcharts} highcharts/demo/x-range\n * X-range\n *\n * @type {number}\n * @product highcharts highstock gantt\n * @apioption series.xrange.data.x2\n */\n/**\n * The Y value of the range point.\n *\n * @sample {highcharts} highcharts/demo/x-range\n * X-range\n *\n * @type {number}\n * @product highcharts highstock gantt\n * @apioption series.xrange.data.y\n */\n/**\n * A partial fill for each point, typically used to visualize how much of\n * a task is performed. The partial fill object can be set either on series\n * or point level.\n *\n * @sample {highcharts} highcharts/demo/x-range\n * X-range with partial fill\n *\n * @declare Highcharts.XrangePointPartialFillOptionsObject\n * @product highcharts highstock gantt\n * @apioption series.xrange.data.partialFill\n */\n/**\n * The amount of the X-range point to be filled. Values can be 0-1 and are\n * converted to percentages in the default data label formatter.\n *\n * @type {number}\n * @product highcharts highstock gantt\n * @apioption series.xrange.data.partialFill.amount\n */\n/**\n * The fill color to be used for partial fills. Defaults to a darker shade\n * of the point color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.xrange.data.partialFill.fill\n */\n(''); // Adds doclets above to transpiled file\n\n;// ./code/es5/es-modules/Series/XRange/XRangePoint.js\n/* *\n *\n * X-range series module\n *\n * (c) 2010-2024 Torstein Honsi, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar XRangePoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar ColumnPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column.prototype.pointClass;\n\nvar XRangePoint_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend;\n/* *\n *\n * Class\n *\n * */\nvar XRangePoint = /** @class */ (function (_super) {\n XRangePoint_extends(XRangePoint, _super);\n /**\n * Extend init to have y default to 0.\n *\n * @private\n */\n function XRangePoint(series, options) {\n var _this = _super.call(this,\n series,\n options) || this;\n if (!_this.y) {\n _this.y = 0;\n }\n return _this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Return color of a point based on its category.\n *\n * @private\n * @function getColorByCategory\n *\n * @param {object} series\n * The series which the point belongs to.\n *\n * @param {object} point\n * The point to calculate its color for.\n *\n * @return {object}\n * Returns an object containing the properties color and colorIndex.\n */\n XRangePoint.getColorByCategory = function (series, point) {\n var colors = series.options.colors || series.chart.options.colors,\n colorCount = colors ?\n colors.length :\n series.chart.options.chart.colorCount,\n colorIndex = point.y % colorCount,\n color = colors && colors[colorIndex];\n return {\n colorIndex: colorIndex,\n color: color\n };\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n XRangePoint.prototype.resolveColor = function () {\n var series = this.series;\n if (series.options.colorByPoint && !this.options.color) {\n var colorByPoint = XRangePoint.getColorByCategory(series,\n this);\n if (!series.chart.styledMode) {\n this.color = colorByPoint.color;\n }\n if (!this.options.colorIndex) {\n this.colorIndex = colorByPoint.colorIndex;\n }\n }\n else {\n this.color = this.options.color || series.color;\n }\n };\n /**\n * Extend applyOptions to handle time strings for x2\n *\n * @private\n */\n XRangePoint.prototype.applyOptions = function (options, x) {\n var _a;\n _super.prototype.applyOptions.call(this, options, x);\n this.x2 = this.series.chart.time.parse(this.x2);\n this.isNull = !((_a = this.isValid) === null || _a === void 0 ? void 0 : _a.call(this));\n return this;\n };\n /**\n * @private\n */\n XRangePoint.prototype.setState = function () {\n _super.prototype.setState.apply(this, arguments);\n this.series.drawPoint(this, this.series.getAnimationVerb());\n };\n /**\n * @private\n */\n XRangePoint.prototype.isValid = function () {\n return typeof this.x === 'number' &&\n typeof this.x2 === 'number';\n };\n return XRangePoint;\n}(ColumnPoint));\nXRangePoint_extend(XRangePoint.prototype, {\n ttBelow: false,\n tooltipDateKeys: ['x', 'x2']\n});\n/* *\n *\n * Class Namespace\n *\n * */\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var XRange_XRangePoint = (XRangePoint);\n/* *\n *\n * API Declarations\n *\n * */\n/**\n * The ending X value of the range point.\n * @name Highcharts.Point#x2\n * @type {number|undefined}\n * @requires modules/xrange\n */\n/**\n * @interface Highcharts.PointOptionsObject in parts/Point.ts\n */ /**\n* The ending X value of the range point.\n* @name Highcharts.PointOptionsObject#x2\n* @type {number|undefined}\n* @requires modules/xrange\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Series/XRange/XRangeSeries.js\n/* *\n *\n * X-range series module\n *\n * (c) 2010-2024 Torstein Honsi, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar XRangeSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar XRangeSeries_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed, noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\nvar XRangeSeries_color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar ColumnSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column;\n\nvar XRangeSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, XRangeSeries_clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, XRangeSeries_crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, XRangeSeries_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, XRangeSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, XRangeSeries_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, XRangeSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, XRangeSeries_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, XRangeSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, XRangeSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, XRangeSeries_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, XRangeSeries_relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n\n\n/* *\n *\n * Functions\n *\n * */\n/**\n * Max x2 should be considered in xAxis extremes\n * @private\n */\nfunction onAxisAfterGetSeriesExtremes() {\n var dataMax,\n modMax;\n if (this.isXAxis) {\n dataMax = XRangeSeries_pick(this.dataMax, -Number.MAX_VALUE);\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n var column = (series.dataTable.getColumn('x2',\n true) ||\n series.dataTable.getColumn('end',\n true));\n if (column) {\n for (var _b = 0, _c = column; _b < _c.length; _b++) {\n var val = _c[_b];\n if (XRangeSeries_isNumber(val) && val > dataMax) {\n dataMax = val;\n modMax = true;\n }\n }\n }\n }\n if (modMax) {\n this.dataMax = dataMax;\n }\n }\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.xrange\n *\n * @augments Highcharts.Series\n */\nvar XRangeSeries = /** @class */ (function (_super) {\n XRangeSeries_extends(XRangeSeries, _super);\n function XRangeSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n XRangeSeries.compose = function (AxisClass) {\n if (XRangeSeries_pushUnique(XRangeSeries_composed, 'Series.XRange')) {\n XRangeSeries_addEvent(AxisClass, 'afterGetSeriesExtremes', onAxisAfterGetSeriesExtremes);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n XRangeSeries.prototype.init = function () {\n _super.prototype.init.apply(this, arguments);\n this.options.stacking = void 0; // #13161\n };\n /**\n * Borrow the column series metrics, but with swapped axes. This gives\n * free access to features like groupPadding, grouping, pointWidth etc.\n * @private\n */\n XRangeSeries.prototype.getColumnMetrics = function () {\n var _this = this;\n var swapAxes = function () {\n for (var _i = 0,\n _a = _this.chart.series; _i < _a.length; _i++) {\n var series = _a[_i];\n var xAxis = series.xAxis;\n series.xAxis = series.yAxis;\n series.yAxis = xAxis;\n }\n };\n swapAxes();\n var metrics = _super.prototype.getColumnMetrics.call(this);\n swapAxes();\n return metrics;\n };\n /**\n * Override cropData to show a point where x or x2 is outside visible range,\n * but one of them is inside.\n * @private\n */\n XRangeSeries.prototype.cropData = function (table, min, max) {\n // Replace xData with x2Data to find the appropriate cropStart\n var xData = table.getColumn('x') || [], x2Data = table.getColumn('x2');\n table.setColumn('x', x2Data, void 0, { silent: true });\n var croppedData = _super.prototype.cropData.call(this,\n table,\n min,\n max);\n // Re-insert the cropped xData\n table.setColumn('x', xData.slice(croppedData.start, croppedData.end), void 0, { silent: true });\n return croppedData;\n };\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n *\n * @param {Highcharts.XRangePointOptions} options\n * The options of the point.\n *\n * @return {number|undefined}\n * Returns index of a matching point, or undefined if no match is\n * found.\n */\n XRangeSeries.prototype.findPointIndex = function (options) {\n var _a = this,\n cropStart = _a.cropStart,\n points = _a.points;\n var id = options.id;\n var pointIndex;\n if (id) {\n var point = XRangeSeries_find(points,\n function (point) { return point.id === id; });\n pointIndex = point ? point.index : void 0;\n }\n if (typeof pointIndex === 'undefined') {\n var point = XRangeSeries_find(points,\n function (point) { return (point.x === options.x &&\n point.x2 === options.x2 &&\n !point.touched); });\n pointIndex = point ? point.index : void 0;\n }\n // Reduce pointIndex if data is cropped\n if (this.cropped &&\n XRangeSeries_isNumber(pointIndex) &&\n XRangeSeries_isNumber(cropStart) &&\n pointIndex >= cropStart) {\n pointIndex -= cropStart;\n }\n return pointIndex;\n };\n XRangeSeries.prototype.alignDataLabel = function (point) {\n var _a;\n var oldPlotX = point.plotX;\n point.plotX = XRangeSeries_pick(point.dlBox && point.dlBox.centerX, point.plotX);\n if (point.dataLabel && ((_a = point.shapeArgs) === null || _a === void 0 ? void 0 : _a.width)) {\n point.dataLabel.css({\n width: \"\" + point.shapeArgs.width + \"px\"\n });\n }\n _super.prototype.alignDataLabel.apply(this, arguments);\n point.plotX = oldPlotX;\n };\n /**\n * @private\n */\n XRangeSeries.prototype.translatePoint = function (point) {\n var _a,\n _b;\n var xAxis = this.xAxis,\n yAxis = this.yAxis,\n metrics = this.columnMetrics,\n options = this.options,\n minPointLength = options.minPointLength || 0,\n oldColWidth = (point.shapeArgs && point.shapeArgs.width || 0) / 2,\n seriesXOffset = this.pointXOffset = metrics.offset,\n posX = XRangeSeries_pick(point.x2,\n point.x + (point.len || 0)),\n borderRadius = options.borderRadius,\n plotTop = this.chart.plotTop,\n plotLeft = this.chart.plotLeft;\n var plotX = point.plotX,\n plotX2 = xAxis.translate(posX, 0, 0, 0, 1);\n var length = Math.abs(plotX2 - plotX),\n inverted = this.chart.inverted,\n borderWidth = XRangeSeries_pick(options.borderWidth, 1);\n var widthDifference,\n partialFill,\n yOffset = metrics.offset,\n pointHeight = Math.round(metrics.width),\n dlLeft,\n dlRight,\n dlWidth,\n clipRectWidth;\n if (minPointLength) {\n widthDifference = minPointLength - length;\n if (widthDifference < 0) {\n widthDifference = 0;\n }\n plotX -= widthDifference / 2;\n plotX2 += widthDifference / 2;\n }\n plotX = Math.max(plotX, -10);\n plotX2 = XRangeSeries_clamp(plotX2, -10, xAxis.len + 10);\n // Handle individual pointWidth\n if (XRangeSeries_defined(point.options.pointWidth)) {\n yOffset -= ((Math.ceil(point.options.pointWidth) - pointHeight) / 2);\n pointHeight = Math.ceil(point.options.pointWidth);\n }\n // Apply pointPlacement to the Y axis\n if (options.pointPlacement &&\n XRangeSeries_isNumber(point.plotY) &&\n yAxis.categories) {\n point.plotY = yAxis.translate(point.y, 0, 1, 0, 1, options.pointPlacement);\n }\n var x = XRangeSeries_crisp(Math.min(plotX,\n plotX2),\n borderWidth),\n x2 = XRangeSeries_crisp(Math.max(plotX,\n plotX2),\n borderWidth),\n width = x2 - x;\n var r = Math.min(XRangeSeries_relativeLength((typeof borderRadius === 'object' ?\n borderRadius.radius :\n borderRadius || 0),\n pointHeight),\n Math.min(width,\n pointHeight) / 2);\n var shapeArgs = {\n x: x,\n y: XRangeSeries_crisp((point.plotY || 0) + yOffset,\n borderWidth),\n width: width,\n height: pointHeight,\n r: r\n };\n point.shapeArgs = shapeArgs;\n // Move tooltip to default position\n if (!inverted) {\n point.tooltipPos[0] -= oldColWidth +\n seriesXOffset -\n shapeArgs.width / 2;\n }\n else {\n point.tooltipPos[1] += seriesXOffset +\n oldColWidth;\n }\n // Align data labels inside the shape and inside the plot area\n dlLeft = shapeArgs.x;\n dlRight = dlLeft + shapeArgs.width;\n if (dlLeft < 0 || dlRight > xAxis.len) {\n dlLeft = XRangeSeries_clamp(dlLeft, 0, xAxis.len);\n dlRight = XRangeSeries_clamp(dlRight, 0, xAxis.len);\n dlWidth = dlRight - dlLeft;\n point.dlBox = XRangeSeries_merge(shapeArgs, {\n x: dlLeft,\n width: dlRight - dlLeft,\n centerX: dlWidth ? dlWidth / 2 : null\n });\n }\n else {\n point.dlBox = null;\n }\n // Tooltip position\n var tooltipPos = point.tooltipPos;\n var xIndex = !inverted ? 0 : 1;\n var yIndex = !inverted ? 1 : 0;\n var tooltipYOffset = (this.columnMetrics ?\n this.columnMetrics.offset :\n -metrics.width / 2);\n // Centering tooltip position (#14147)\n if (inverted) {\n tooltipPos[xIndex] += shapeArgs.width / 2;\n }\n else {\n tooltipPos[xIndex] = XRangeSeries_clamp(tooltipPos[xIndex] +\n (xAxis.reversed ? -1 : 0) * shapeArgs.width, xAxis.left - plotLeft, xAxis.left + xAxis.len - plotLeft - 1);\n }\n tooltipPos[yIndex] = XRangeSeries_clamp(tooltipPos[yIndex] + ((inverted ? -1 : 1) * tooltipYOffset), yAxis.top - plotTop, yAxis.top + yAxis.len - plotTop - 1);\n // Add a partShapeArgs to the point, based on the shapeArgs property\n partialFill = point.partialFill;\n if (partialFill) {\n // Get the partial fill amount\n if (XRangeSeries_isObject(partialFill)) {\n partialFill = partialFill.amount;\n }\n // If it was not a number, assume 0\n if (!XRangeSeries_isNumber(partialFill)) {\n partialFill = 0;\n }\n point.partShapeArgs = XRangeSeries_merge(shapeArgs);\n clipRectWidth = Math.max(Math.round(length * partialFill + point.plotX -\n plotX), 0);\n point.clipRectArgs = {\n x: xAxis.reversed ? // #10717\n shapeArgs.x + length - clipRectWidth :\n shapeArgs.x,\n y: shapeArgs.y,\n width: clipRectWidth,\n height: shapeArgs.height\n };\n }\n // Add formatting keys for tooltip and data labels. Use 'category' as\n // 'key' to ensure tooltip datetime formatting. Use 'name' only when\n // 'category' is undefined.\n point.key = point.category || point.name;\n point.yCategory = (_a = yAxis.categories) === null || _a === void 0 ? void 0 : _a[(_b = point.y) !== null && _b !== void 0 ? _b : -1];\n };\n /**\n * @private\n */\n XRangeSeries.prototype.translate = function () {\n _super.prototype.translate.apply(this, arguments);\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n this.translatePoint(point);\n }\n };\n /**\n * Draws a single point in the series. Needed for partial fill.\n *\n * This override turns point.graphic into a group containing the\n * original graphic and an overlay displaying the partial fill.\n *\n * @private\n *\n * @param {Highcharts.Point} point\n * An instance of Point in the series.\n *\n * @param {\"animate\"|\"attr\"} verb\n * 'animate' (animates changes) or 'attr' (sets options)\n */\n XRangeSeries.prototype.drawPoint = function (point, verb) {\n var seriesOpts = this.options,\n renderer = this.chart.renderer,\n type = point.shapeType,\n shapeArgs = point.shapeArgs,\n partShapeArgs = point.partShapeArgs,\n clipRectArgs = point.clipRectArgs,\n pointState = point.state,\n stateOpts = (seriesOpts.states[pointState || 'normal'] ||\n {}),\n pointStateVerb = typeof pointState === 'undefined' ?\n 'attr' : verb,\n pointAttr = this.pointAttribs(point,\n pointState),\n animation = XRangeSeries_pick(this.chart.options.chart.animation,\n stateOpts.animation);\n var graphic = point.graphic,\n pfOptions = point.partialFill;\n if (!point.isNull && point.visible !== false) {\n // Original graphic\n if (graphic) { // Update\n graphic.rect[verb](shapeArgs);\n }\n else {\n point.graphic = graphic = renderer.g('point')\n .addClass(point.getClassName())\n .add(point.group || this.group);\n graphic.rect = renderer[type](XRangeSeries_merge(shapeArgs))\n .addClass(point.getClassName())\n .addClass('highcharts-partfill-original')\n .add(graphic);\n }\n // Partial fill graphic\n if (partShapeArgs) {\n if (graphic.partRect) {\n graphic.partRect[verb](XRangeSeries_merge(partShapeArgs));\n graphic.partialClipRect[verb](XRangeSeries_merge(clipRectArgs));\n }\n else {\n graphic.partialClipRect = renderer.clipRect(clipRectArgs.x, clipRectArgs.y, clipRectArgs.width, clipRectArgs.height);\n graphic.partRect =\n renderer[type](partShapeArgs)\n .addClass('highcharts-partfill-overlay')\n .add(graphic)\n .clip(graphic.partialClipRect);\n }\n }\n // Presentational\n if (!this.chart.styledMode) {\n graphic\n .rect[verb](pointAttr, animation)\n .shadow(seriesOpts.shadow);\n if (partShapeArgs) {\n // Ensure pfOptions is an object\n if (!XRangeSeries_isObject(pfOptions)) {\n pfOptions = {};\n }\n if (XRangeSeries_isObject(seriesOpts.partialFill)) {\n pfOptions = XRangeSeries_merge(seriesOpts.partialFill, pfOptions);\n }\n var fill = (pfOptions.fill ||\n XRangeSeries_color(pointAttr.fill).brighten(-0.3).get() ||\n XRangeSeries_color(point.color || this.color)\n .brighten(-0.3).get());\n pointAttr.fill = fill;\n graphic\n .partRect[pointStateVerb](pointAttr, animation)\n .shadow(seriesOpts.shadow);\n }\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n };\n /**\n * @private\n */\n XRangeSeries.prototype.drawPoints = function () {\n var verb = this.getAnimationVerb();\n // Draw the columns\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n this.drawPoint(point, verb);\n }\n };\n /**\n * Returns \"animate\", or \"attr\" if the number of points is above the\n * animation limit.\n *\n * @private\n */\n XRangeSeries.prototype.getAnimationVerb = function () {\n return (this.chart.pointCount < (this.options.animationLimit || 250) ?\n 'animate' :\n 'attr');\n };\n /**\n * @private\n */\n XRangeSeries.prototype.isPointInside = function (point) {\n var shapeArgs = point.shapeArgs,\n plotX = point.plotX,\n plotY = point.plotY;\n if (!shapeArgs) {\n return _super.prototype.isPointInside.apply(this, arguments);\n }\n var isInside = typeof plotX !== 'undefined' &&\n typeof plotY !== 'undefined' &&\n plotY >= 0 &&\n plotY <= this.yAxis.len &&\n (shapeArgs.x || 0) + (shapeArgs.width || 0) >= 0 &&\n plotX <= this.xAxis.len;\n return isInside;\n };\n /* *\n *\n * Static Properties\n *\n * */\n XRangeSeries.defaultOptions = XRangeSeries_merge(ColumnSeries.defaultOptions, XRange_XRangeSeriesDefaults);\n return XRangeSeries;\n}(ColumnSeries));\nXRangeSeries_extend(XRangeSeries.prototype, {\n pointClass: XRange_XRangePoint,\n pointArrayMap: ['x2', 'y'],\n getExtremesFromAll: true,\n keysAffectYAxis: ['y'],\n parallelArrays: ['x', 'x2', 'y'],\n requireSorting: false,\n type: 'xrange',\n animate: (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series.prototype.animate,\n autoIncrement: noop,\n buildKDTree: noop\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('xrange', XRangeSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var XRange_XRangeSeries = (XRangeSeries);\n\n;// ./code/es5/es-modules/masters/modules/xrange.src.js\n/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/xrange\n * @requires highcharts\n *\n * X-range series\n *\n * (c) 2010-2024 Torstein Honsi, Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n */\n\n\n\nvar xrange_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nXRange_XRangeSeries.compose(xrange_src_G.Axis);\n/* harmony default export */ var xrange_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/Series/Gantt/GanttPoint.js\n/* *\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Author: Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar GanttPoint_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar GanttPoint_XRangePoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.xrange.prototype.pointClass;\n/* *\n *\n * Class\n *\n * */\nvar GanttPoint = /** @class */ (function (_super) {\n GanttPoint_extends(GanttPoint, _super);\n function GanttPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n GanttPoint.setGanttPointAliases = function (options, chart) {\n var _a,\n _b,\n _c;\n options.x = options.start = chart.time.parse((_a = options.start) !== null && _a !== void 0 ? _a : options.x);\n options.x2 = options.end = chart.time.parse((_b = options.end) !== null && _b !== void 0 ? _b : options.x2);\n options.partialFill = options.completed =\n (_c = options.completed) !== null && _c !== void 0 ? _c : options.partialFill;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Applies the options containing the x and y data and possible some\n * extra properties. This is called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Object} options\n * The point options\n *\n * @param {number} x\n * The x value\n *\n * @return {Highcharts.Point}\n * The Point instance\n */\n GanttPoint.prototype.applyOptions = function (options, x) {\n var _a;\n var ganttPoint = _super.prototype.applyOptions.call(this,\n options,\n x);\n GanttPoint.setGanttPointAliases(ganttPoint, ganttPoint.series.chart);\n this.isNull = !((_a = this.isValid) === null || _a === void 0 ? void 0 : _a.call(this));\n return ganttPoint;\n };\n GanttPoint.prototype.isValid = function () {\n return ((typeof this.start === 'number' ||\n typeof this.x === 'number') &&\n (typeof this.end === 'number' ||\n typeof this.x2 === 'number' ||\n this.milestone));\n };\n return GanttPoint;\n}(GanttPoint_XRangePoint));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Gantt_GanttPoint = (GanttPoint);\n\n;// ./code/es5/es-modules/Series/Gantt/GanttSeriesDefaults.js\n/* *\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Author: Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar GanttSeriesDefaults_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n * API Options\n *\n * */\n/**\n * A `gantt` series. If the [type](#series.gantt.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends plotOptions.xrange\n * @product gantt\n * @requires highcharts-gantt\n * @optionparent plotOptions.gantt\n */\nvar GanttSeriesDefaults = {\n // Options - default options merged with parent\n grouping: false,\n dataLabels: {\n enabled: true\n },\n tooltip: {\n headerFormat: '<span style=\"font-size: 0.8em\">{series.name}</span><br/>',\n pointFormat: null,\n pointFormatter: function () {\n var point = this,\n series = point.series,\n xAxis = series.xAxis,\n formats = series.tooltipOptions.dateTimeLabelFormats,\n startOfWeek = xAxis.options.startOfWeek,\n ttOptions = series.tooltipOptions,\n milestone = point.options.milestone;\n var format = ttOptions.xDateFormat,\n retVal = '<b>' + (point.name || point.yCategory) + '</b>';\n if (ttOptions.pointFormat) {\n return point.tooltipFormatter(ttOptions.pointFormat);\n }\n if (!format && GanttSeriesDefaults_isNumber(point.start)) {\n format = series.chart.time.getDateFormat(xAxis.closestPointRange, point.start, startOfWeek, formats || {});\n }\n var start = series.chart.time.dateFormat(format,\n point.start),\n end = series.chart.time.dateFormat(format,\n point.end);\n retVal += '<br/>';\n if (!milestone) {\n retVal += 'Start: ' + start + '<br/>';\n retVal += 'End: ' + end + '<br/>';\n }\n else {\n retVal += start + '<br/>';\n }\n return retVal;\n }\n },\n connectors: {\n type: 'simpleConnect',\n /**\n * @declare Highcharts.ConnectorsAnimationOptionsObject\n */\n animation: {\n reversed: true // Dependencies go from child to parent\n },\n radius: 0,\n startMarker: {\n enabled: true,\n symbol: 'arrow-filled',\n radius: 4,\n fill: '#fa0',\n align: 'left'\n },\n endMarker: {\n enabled: false, // Only show arrow on the dependent task\n align: 'right'\n }\n }\n};\n/**\n * A `gantt` series.\n *\n * @extends series,plotOptions.gantt\n * @excluding boostThreshold, dashStyle, findNearestPointBy,\n * getExtremesFromAll, marker, negativeColor, pointInterval,\n * pointIntervalUnit, pointPlacement, pointStart\n * @product gantt\n * @requires highcharts-gantt\n * @apioption series.gantt\n */\n/**\n * Data for a Gantt series.\n *\n * @declare Highcharts.GanttPointOptionsObject\n * @type {Array<*>}\n * @extends series.xrange.data\n * @excluding className, connect, dataLabels, events,\n * partialFill, selected, x, x2\n * @product gantt\n * @apioption series.gantt.data\n */\n/**\n * Whether the grid node belonging to this point should start as collapsed. Used\n * in axes of type treegrid.\n *\n * @sample {gantt} gantt/treegrid-axis/collapsed/\n * Start as collapsed\n *\n * @type {boolean}\n * @default false\n * @product gantt\n * @apioption series.gantt.data.collapsed\n */\n/**\n * The start time of a task. May be a timestamp or a date string.\n *\n * @type {number|string}\n * @product gantt\n * @apioption series.gantt.data.start\n */\n/**\n * The end time of a task. May be a timestamp or a date string.\n *\n * @type {number|string}\n * @product gantt\n * @apioption series.gantt.data.end\n */\n/**\n * The Y value of a task.\n *\n * @type {number}\n * @product gantt\n * @apioption series.gantt.data.y\n */\n/**\n * The name of a task. If a `treegrid` y-axis is used (default in Gantt charts),\n * this will be picked up automatically, and used to calculate the y-value.\n *\n * @type {string}\n * @product gantt\n * @apioption series.gantt.data.name\n */\n/**\n * Progress indicator, how much of the task completed. If it is a number, the\n * `fill` will be applied automatically.\n *\n * @sample {gantt} gantt/demo/progress-indicator\n * Progress indicator\n *\n * @type {number|*}\n * @extends series.xrange.data.partialFill\n * @product gantt\n * @apioption series.gantt.data.completed\n */\n/**\n * The amount of the progress indicator, ranging from 0 (not started) to 1\n * (finished).\n *\n * @type {number}\n * @default 0\n * @apioption series.gantt.data.completed.amount\n */\n/**\n * The fill of the progress indicator. Defaults to a darkened variety of the\n * main color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption series.gantt.data.completed.fill\n */\n/**\n * The ID of the point (task) that this point depends on in Gantt charts.\n * Aliases [connect](series.xrange.data.connect). Can also be an object,\n * specifying further connecting [options](series.gantt.connectors) between the\n * points. Multiple connections can be specified by providing an array.\n *\n * @sample gantt/demo/project-management\n * Dependencies\n * @sample gantt/pathfinder/demo\n * Different connection types\n *\n * @type {string|Array<string|*>|*}\n * @extends series.xrange.data.connect\n * @since 6.2.0\n * @product gantt\n * @apioption series.gantt.data.dependency\n */\n/**\n * Whether this point is a milestone. If so, only the `start` option is handled,\n * while `end` is ignored.\n *\n * @sample gantt/gantt/milestones\n * Milestones\n *\n * @type {boolean}\n * @since 6.2.0\n * @product gantt\n * @apioption series.gantt.data.milestone\n */\n/**\n * The ID of the parent point (task) of this point in Gantt charts.\n *\n * @sample gantt/demo/subtasks\n * Gantt chart with subtasks\n *\n * @type {string}\n * @since 6.2.0\n * @product gantt\n * @apioption series.gantt.data.parent\n */\n/**\n * @excluding afterAnimate\n * @apioption series.gantt.events\n */\n''; // Detachs doclets above\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Gantt_GanttSeriesDefaults = (GanttSeriesDefaults);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"StackItem\"],\"commonjs\":[\"highcharts\",\"StackItem\"],\"commonjs2\":[\"highcharts\",\"StackItem\"],\"root\":[\"Highcharts\",\"StackItem\"]}\nvar highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_ = __webpack_require__(184);\nvar highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default = /*#__PURE__*/__webpack_require__.n(highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_);\n;// ./code/es5/es-modules/Core/Axis/BrokenAxis.js\n/* *\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 BrokenAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, BrokenAxis_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, BrokenAxis_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, BrokenAxis_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, BrokenAxis_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, BrokenAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Composition\n *\n * */\n/**\n * Axis with support of broken data rows.\n * @private\n */\nvar BrokenAxis;\n(function (BrokenAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Adds support for broken axes.\n * @private\n */\n function compose(AxisClass, SeriesClass) {\n if (!AxisClass.keepProps.includes('brokenAxis')) {\n AxisClass.keepProps.push('brokenAxis');\n BrokenAxis_addEvent(AxisClass, 'init', onAxisInit);\n BrokenAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n BrokenAxis_addEvent(AxisClass, 'afterSetTickPositions', onAxisAfterSetTickPositions);\n BrokenAxis_addEvent(AxisClass, 'afterSetOptions', onAxisAfterSetOptions);\n var seriesProto = SeriesClass.prototype;\n seriesProto.drawBreaks = seriesDrawBreaks;\n seriesProto.gappedPath = seriesGappedPath;\n BrokenAxis_addEvent(SeriesClass, 'afterGeneratePoints', onSeriesAfterGeneratePoints);\n BrokenAxis_addEvent(SeriesClass, 'afterRender', onSeriesAfterRender);\n }\n return AxisClass;\n }\n BrokenAxis.compose = compose;\n /**\n * @private\n */\n function onAxisAfterInit() {\n if (typeof this.brokenAxis !== 'undefined') {\n this.brokenAxis.setBreaks(this.options.breaks, false);\n }\n }\n /**\n * Force Axis to be not-ordinal when breaks are defined.\n * @private\n */\n function onAxisAfterSetOptions() {\n var _a;\n var axis = this;\n if ((_a = axis.brokenAxis) === null || _a === void 0 ? void 0 : _a.hasBreaks) {\n axis.options.ordinal = false;\n }\n }\n /**\n * @private\n */\n function onAxisAfterSetTickPositions() {\n var axis = this,\n brokenAxis = axis.brokenAxis;\n if (brokenAxis === null || brokenAxis === void 0 ? void 0 : brokenAxis.hasBreaks) {\n var tickPositions = axis.tickPositions,\n info = axis.tickPositions.info,\n newPositions = [];\n for (var i = 0; i < tickPositions.length; i++) {\n if (!brokenAxis.isInAnyBreak(tickPositions[i])) {\n newPositions.push(tickPositions[i]);\n }\n }\n axis.tickPositions = newPositions;\n axis.tickPositions.info = info;\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n var axis = this;\n if (!axis.brokenAxis) {\n axis.brokenAxis = new Additions(axis);\n }\n }\n /**\n * @private\n */\n function onSeriesAfterGeneratePoints() {\n var _a,\n _b;\n var _c = this,\n isDirty = _c.isDirty,\n connectNulls = _c.options.connectNulls,\n points = _c.points,\n xAxis = _c.xAxis,\n yAxis = _c.yAxis;\n // Set, or reset visibility of the points. Axis.setBreaks marks\n // the series as isDirty\n if (isDirty) {\n var i = points.length;\n while (i--) {\n var point = points[i];\n // Respect nulls inside the break (#4275)\n var nullGap = point.y === null && connectNulls === false;\n var isPointInBreak = (!nullGap && (((_a = xAxis === null || xAxis === void 0 ? void 0 : xAxis.brokenAxis) === null || _a === void 0 ? void 0 : _a.isInAnyBreak(point.x,\n true)) ||\n ((_b = yAxis === null || yAxis === void 0 ? void 0 : yAxis.brokenAxis) === null || _b === void 0 ? void 0 : _b.isInAnyBreak(point.y,\n true))));\n // Set point.visible if in any break.\n // If not in break, reset visible to original value.\n point.visible = isPointInBreak ?\n false :\n point.options.visible !== false;\n }\n }\n }\n /**\n * @private\n */\n function onSeriesAfterRender() {\n this.drawBreaks(this.xAxis, ['x']);\n this.drawBreaks(this.yAxis, BrokenAxis_pick(this.pointArrayMap, ['y']));\n }\n /**\n * @private\n */\n function seriesDrawBreaks(axis, keys) {\n var _a;\n var series = this,\n points = series.points;\n var breaks,\n threshold,\n y;\n if ((_a = axis === null || axis === void 0 ? void 0 : axis.brokenAxis) === null || _a === void 0 ? void 0 : _a.hasBreaks) {\n var brokenAxis_1 = axis.brokenAxis;\n keys.forEach(function (key) {\n var _a,\n _b;\n breaks = (brokenAxis_1 === null || brokenAxis_1 === void 0 ? void 0 : brokenAxis_1.breakArray) || [];\n threshold = axis.isXAxis ?\n axis.min :\n BrokenAxis_pick(series.options.threshold, axis.min);\n // Array of breaks that have been \"zoomed-out\" which means that\n // they were shown previously, but now after zoom, they are not\n // (#19885).\n var breaksOutOfRange = (_b = (_a = axis === null || axis === void 0 ? void 0 : axis.options) === null || _a === void 0 ? void 0 : _a.breaks) === null || _b === void 0 ? void 0 : _b.filter(function (brk) {\n var isOut = true;\n // Iterate to see if \"brk\" is in axis range\n for (var i = 0; i < breaks.length; i++) {\n var otherBreak = breaks[i];\n if (otherBreak.from === brk.from &&\n otherBreak.to === brk.to) {\n isOut = false;\n break;\n }\n }\n return isOut;\n });\n points.forEach(function (point) {\n y = BrokenAxis_pick(point['stack' + key.toUpperCase()], point[key]);\n breaks.forEach(function (brk) {\n if (BrokenAxis_isNumber(threshold) && BrokenAxis_isNumber(y)) {\n var eventName = '';\n if ((threshold < brk.from && y > brk.to) ||\n (threshold > brk.from && y < brk.from)) {\n eventName = 'pointBreak';\n }\n else if ((threshold < brk.from &&\n y > brk.from &&\n y < brk.to) || (threshold > brk.from &&\n y > brk.to &&\n y < brk.from)) {\n eventName = 'pointInBreak';\n }\n if (eventName) {\n BrokenAxis_fireEvent(axis, eventName, { point: point, brk: brk });\n }\n }\n });\n breaksOutOfRange === null || breaksOutOfRange === void 0 ? void 0 : breaksOutOfRange.forEach(function (brk) {\n BrokenAxis_fireEvent(axis, 'pointOutsideOfBreak', { point: point, brk: brk });\n });\n });\n });\n }\n }\n /**\n * Extend getGraphPath by identifying gaps in the data so that we\n * can draw a gap in the line or area. This was moved from ordinal\n * axis module to broken axis module as of #5045.\n *\n * @private\n * @function Highcharts.Series#gappedPath\n *\n * @return {Highcharts.SVGPathArray}\n * Gapped path\n */\n function seriesGappedPath() {\n var currentDataGrouping = this.currentDataGrouping,\n groupingSize = currentDataGrouping === null || currentDataGrouping === void 0 ? void 0 : currentDataGrouping.gapSize,\n points = this.points.slice(),\n yAxis = this.yAxis;\n var gapSize = this.options.gapSize,\n i = points.length - 1,\n stack;\n /**\n * Defines when to display a gap in the graph, together with the\n * [gapUnit](plotOptions.series.gapUnit) option.\n *\n * In case when `dataGrouping` is enabled, points can be grouped\n * into a larger time span. This can make the grouped points to\n * have a greater distance than the absolute value of `gapSize`\n * property, which will result in disappearing graph completely.\n * To prevent this situation the mentioned distance between\n * grouped points is used instead of previously defined\n * `gapSize`.\n *\n * In practice, this option is most often used to visualize gaps\n * in time series. In a stock chart, intraday data is available\n * for daytime hours, while gaps will appear in nights and\n * weekends.\n *\n * @see [gapUnit](plotOptions.series.gapUnit)\n * @see [xAxis.breaks](#xAxis.breaks)\n *\n * @sample {highstock} stock/plotoptions/series-gapsize/\n * Setting the gap size to 2 introduces gaps for weekends in\n * daily datasets.\n *\n * @type {number}\n * @default 0\n * @product highstock\n * @requires modules/broken-axis\n * @apioption plotOptions.series.gapSize\n */\n /**\n * Together with [gapSize](plotOptions.series.gapSize), this\n * option defines where to draw gaps in the graph.\n *\n * When the `gapUnit` is `\"relative\"` (default), a gap size of 5\n * means that if the distance between two points is greater than\n * 5 times that of the two closest points, the graph will be\n * broken.\n *\n * When the `gapUnit` is `\"value\"`, the gap is based on absolute\n * axis values, which on a datetime axis is milliseconds. This\n * also applies to the navigator series that inherits gap\n * options from the base series.\n *\n * @see [gapSize](plotOptions.series.gapSize)\n *\n * @type {string}\n * @default relative\n * @since 5.0.13\n * @product highstock\n * @validvalue [\"relative\", \"value\"]\n * @requires modules/broken-axis\n * @apioption plotOptions.series.gapUnit\n */\n if (gapSize && i > 0) { // #5008\n // Gap unit is relative\n if (this.options.gapUnit !== 'value') {\n gapSize *= this.basePointRange;\n }\n // Setting a new gapSize in case dataGrouping is enabled\n // (#7686)\n if (groupingSize &&\n groupingSize > gapSize &&\n // Except when DG is forced (e.g. from other series)\n // and has lower granularity than actual points (#11351)\n groupingSize >= this.basePointRange) {\n gapSize = groupingSize;\n }\n // Extension for ordinal breaks\n var current = void 0,\n next = void 0;\n while (i--) {\n // Reassign next if it is not visible\n if (!(next && next.visible !== false)) {\n next = points[i + 1];\n }\n current = points[i];\n // Skip iteration if one of the points is not visible\n if (next.visible === false || current.visible === false) {\n continue;\n }\n if (next.x - current.x > gapSize) {\n var xRange = (current.x + next.x) / 2;\n points.splice(// Insert after this one\n i + 1, 0, {\n isNull: true,\n x: xRange\n });\n // For stacked chart generate empty stack items, #6546\n if (yAxis.stacking && this.options.stacking) {\n stack = yAxis.stacking.stacks[this.stackKey][xRange] = new (highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default())(yAxis, yAxis.options.stackLabels, false, xRange, this.stack);\n stack.total = 0;\n }\n }\n // Assign current to next for the upcoming iteration\n next = current;\n }\n }\n // Call base method\n return this.getGraphPath(points);\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides support for broken axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.hasBreaks = false;\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n Additions.isInBreak = function (brk, val) {\n var repeat = brk.repeat || Infinity,\n from = brk.from,\n length = brk.to - brk.from,\n test = (val >= from ?\n (val - from) % repeat :\n repeat - ((from - val) % repeat));\n var ret;\n if (!brk.inclusive) {\n ret = test < length && test !== 0;\n }\n else {\n ret = test <= length;\n }\n return ret;\n };\n /**\n * @private\n */\n Additions.lin2Val = function (val) {\n var axis = this;\n var brokenAxis = axis.brokenAxis;\n var breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !BrokenAxis_isNumber(val)) {\n return val;\n }\n var nval = val,\n brk,\n i;\n for (i = 0; i < breakArray.length; i++) {\n brk = breakArray[i];\n if (brk.from >= nval) {\n break;\n }\n else if (brk.to < nval) {\n nval += brk.len;\n }\n else if (Additions.isInBreak(brk, nval)) {\n nval += brk.len;\n }\n }\n return nval;\n };\n /**\n * @private\n */\n Additions.val2Lin = function (val) {\n var axis = this;\n var brokenAxis = axis.brokenAxis;\n var breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !BrokenAxis_isNumber(val)) {\n return val;\n }\n var nval = val,\n brk,\n i;\n for (i = 0; i < breakArray.length; i++) {\n brk = breakArray[i];\n if (brk.to <= val) {\n nval -= brk.len;\n }\n else if (brk.from >= val) {\n break;\n }\n else if (Additions.isInBreak(brk, val)) {\n nval -= (val - brk.from);\n break;\n }\n }\n return nval;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Returns the first break found where the x is larger then break.from\n * and smaller then break.to.\n *\n * @param {number} x\n * The number which should be within a break.\n *\n * @param {Array<Highcharts.XAxisBreaksOptions>} breaks\n * The array of breaks to search within.\n *\n * @return {Highcharts.XAxisBreaksOptions|undefined}\n * Returns the first break found that matches, returns false if no break\n * is found.\n */\n Additions.prototype.findBreakAt = function (x, breaks) {\n return BrokenAxis_find(breaks, function (b) {\n return b.from < x && x < b.to;\n });\n };\n /**\n * @private\n */\n Additions.prototype.isInAnyBreak = function (val, testKeep) {\n var brokenAxis = this,\n axis = brokenAxis.axis,\n breaks = axis.options.breaks || [];\n var i = breaks.length,\n inbrk,\n keep,\n ret;\n if (i && BrokenAxis_isNumber(val)) {\n while (i--) {\n if (Additions.isInBreak(breaks[i], val)) {\n inbrk = true;\n if (!keep) {\n keep = BrokenAxis_pick(breaks[i].showPoints, !axis.isXAxis);\n }\n }\n }\n if (inbrk && testKeep) {\n ret = inbrk && !keep;\n }\n else {\n ret = inbrk;\n }\n }\n return ret;\n };\n /**\n * Dynamically set or unset breaks in an axis. This function in lighter\n * than using Axis.update, and it also preserves animation.\n *\n * @private\n * @function Highcharts.Axis#setBreaks\n *\n * @param {Array<Highcharts.XAxisBreaksOptions>} [breaks]\n * The breaks to add. When `undefined` it removes existing breaks.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart immediately.\n */\n Additions.prototype.setBreaks = function (breaks, redraw) {\n var brokenAxis = this,\n axis = brokenAxis.axis,\n time = axis.chart.time,\n hasBreaks = BrokenAxis_isArray(breaks) &&\n !!breaks.length &&\n !!Object.keys(breaks[0]).length; // Check for [{}], #16368.\n axis.isDirty = brokenAxis.hasBreaks !== hasBreaks;\n brokenAxis.hasBreaks = hasBreaks;\n // Compile string dates\n breaks === null || breaks === void 0 ? void 0 : breaks.forEach(function (brk) {\n brk.from = time.parse(brk.from) || 0;\n brk.to = time.parse(brk.to) || 0;\n });\n if (breaks !== axis.options.breaks) {\n axis.options.breaks = axis.userOptions.breaks = breaks;\n }\n axis.forceRedraw = true; // Force recalculation in setScale\n // Recalculate series related to the axis.\n axis.series.forEach(function (series) {\n series.isDirty = true;\n });\n if (!hasBreaks && axis.val2lin === Additions.val2Lin) {\n // Revert to prototype functions\n delete axis.val2lin;\n delete axis.lin2val;\n }\n if (hasBreaks) {\n axis.userOptions.ordinal = false;\n axis.lin2val = Additions.lin2Val;\n axis.val2lin = Additions.val2Lin;\n axis.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n // If trying to set extremes inside a break, extend min to\n // after, and max to before the break ( #3857 )\n if (brokenAxis.hasBreaks) {\n var breaks_1 = (this.options.breaks || []);\n var axisBreak = void 0;\n while ((axisBreak = brokenAxis.findBreakAt(newMin, breaks_1))) {\n newMin = axisBreak.to;\n }\n while ((axisBreak = brokenAxis.findBreakAt(newMax, breaks_1))) {\n newMax = axisBreak.from;\n }\n // If both min and max is within the same break.\n if (newMax < newMin) {\n newMax = newMin;\n }\n }\n axis.constructor.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);\n };\n axis.setAxisTranslation = function () {\n axis.constructor.prototype.setAxisTranslation.call(this);\n brokenAxis.unitLength = void 0;\n if (brokenAxis.hasBreaks) {\n var breaks_2 = axis.options.breaks || [], \n // Temporary one:\n breakArrayT_1 = [],\n breakArray_1 = [],\n pointRangePadding = BrokenAxis_pick(axis.pointRangePadding, 0);\n var length_1 = 0,\n inBrk_1,\n repeat_1,\n min_1 = axis.userMin || axis.min,\n max_1 = axis.userMax || axis.max,\n start_1,\n i_1;\n // Min & max check (#4247)\n breaks_2.forEach(function (brk) {\n repeat_1 = brk.repeat || Infinity;\n if (BrokenAxis_isNumber(min_1) && BrokenAxis_isNumber(max_1)) {\n if (Additions.isInBreak(brk, min_1)) {\n min_1 += ((brk.to % repeat_1) -\n (min_1 % repeat_1));\n }\n if (Additions.isInBreak(brk, max_1)) {\n max_1 -= ((max_1 % repeat_1) -\n (brk.from % repeat_1));\n }\n }\n });\n // Construct an array holding all breaks in the axis\n breaks_2.forEach(function (brk) {\n start_1 = brk.from;\n repeat_1 = brk.repeat || Infinity;\n if (BrokenAxis_isNumber(min_1) && BrokenAxis_isNumber(max_1)) {\n while (start_1 - repeat_1 > min_1) {\n start_1 -= repeat_1;\n }\n while (start_1 < min_1) {\n start_1 += repeat_1;\n }\n for (i_1 = start_1; i_1 < max_1; i_1 += repeat_1) {\n breakArrayT_1.push({\n value: i_1,\n move: 'in'\n });\n breakArrayT_1.push({\n value: i_1 + brk.to - brk.from,\n move: 'out',\n size: brk.breakSize\n });\n }\n }\n });\n breakArrayT_1.sort(function (a, b) {\n return ((a.value === b.value) ?\n ((a.move === 'in' ? 0 : 1) -\n (b.move === 'in' ? 0 : 1)) :\n a.value - b.value);\n });\n // Simplify the breaks\n inBrk_1 = 0;\n start_1 = min_1;\n breakArrayT_1.forEach(function (brk) {\n inBrk_1 += (brk.move === 'in' ? 1 : -1);\n if (inBrk_1 === 1 && brk.move === 'in') {\n start_1 = brk.value;\n }\n if (inBrk_1 === 0 && BrokenAxis_isNumber(start_1)) {\n breakArray_1.push({\n from: start_1,\n to: brk.value,\n len: brk.value - start_1 - (brk.size || 0)\n });\n length_1 += (brk.value -\n start_1 -\n (brk.size || 0));\n }\n });\n brokenAxis.breakArray = breakArray_1;\n // Used with staticScale, and below the actual axis\n // length, when breaks are subtracted.\n if (BrokenAxis_isNumber(min_1) &&\n BrokenAxis_isNumber(max_1) &&\n BrokenAxis_isNumber(axis.min)) {\n brokenAxis.unitLength = max_1 - min_1 - length_1 +\n pointRangePadding;\n BrokenAxis_fireEvent(axis, 'afterBreaks');\n if (axis.staticScale) {\n axis.transA = axis.staticScale;\n }\n else if (brokenAxis.unitLength) {\n axis.transA *=\n (max_1 - axis.min + pointRangePadding) /\n brokenAxis.unitLength;\n }\n if (pointRangePadding) {\n axis.minPixelPadding =\n axis.transA * (axis.minPointOffset || 0);\n }\n axis.min = min_1;\n axis.max = max_1;\n }\n }\n };\n }\n if (BrokenAxis_pick(redraw, true)) {\n axis.chart.redraw();\n }\n };\n return Additions;\n }());\n BrokenAxis.Additions = Additions;\n})(BrokenAxis || (BrokenAxis = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Axis_BrokenAxis = (BrokenAxis);\n\n;// ./code/es5/es-modules/Core/Axis/GridAxis.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar dateFormats = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).dateFormats;\n\nvar GridAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, GridAxis_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, GridAxis_erase = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).erase, GridAxis_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, GridAxis_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, GridAxis_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, GridAxis_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, GridAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, GridAxis_timeUnits = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).timeUnits, GridAxis_wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n * Enums\n *\n * */\n/**\n * Enum for which side the axis is on. Maps to axis.side.\n * @private\n */\nvar GridAxisSide;\n(function (GridAxisSide) {\n GridAxisSide[GridAxisSide[\"top\"] = 0] = \"top\";\n GridAxisSide[GridAxisSide[\"right\"] = 1] = \"right\";\n GridAxisSide[GridAxisSide[\"bottom\"] = 2] = \"bottom\";\n GridAxisSide[GridAxisSide[\"left\"] = 3] = \"left\";\n})(GridAxisSide || (GridAxisSide = {}));\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction argsToArray(args) {\n return Array.prototype.slice.call(args, 1);\n}\n/**\n * @private\n */\nfunction GridAxis_isObject(x) {\n // Always use strict mode\n return highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().isObject(x, true);\n}\n/**\n * @private\n */\nfunction applyGridOptions(axis) {\n var options = axis.options;\n // Center-align by default\n /*\n if (!options.labels) {\n options.labels = {};\n }\n */\n options.labels.align = GridAxis_pick(options.labels.align, 'center');\n // @todo: Check against tickLabelPlacement between/on etc\n /* Prevents adding the last tick label if the axis is not a category\n axis.\n Since numeric labels are normally placed at starts and ends of a\n range of value, and this module makes the label point at the value,\n an \"extra\" label would appear. */\n if (!axis.categories) {\n options.showLastLabel = false;\n }\n // Prevents rotation of labels when squished, as rotating them would not\n // help.\n axis.labelRotation = 0;\n options.labels.rotation = 0;\n // Allow putting ticks closer than their data points.\n options.minTickInterval = 1;\n}\n/**\n * Extends axis class with grid support.\n * @private\n */\nfunction GridAxis_compose(AxisClass, ChartClass, TickClass) {\n if (!AxisClass.keepProps.includes('grid')) {\n AxisClass.keepProps.push('grid');\n AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;\n GridAxis_wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);\n GridAxis_wrap(AxisClass.prototype, 'getOffset', wrapGetOffset);\n // Add event handlers\n GridAxis_addEvent(AxisClass, 'init', onInit);\n GridAxis_addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);\n GridAxis_addEvent(AxisClass, 'afterInit', onAfterInit);\n GridAxis_addEvent(AxisClass, 'afterRender', onAfterRender);\n GridAxis_addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);\n GridAxis_addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);\n GridAxis_addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);\n GridAxis_addEvent(AxisClass, 'afterSetScale', onAfterSetScale);\n GridAxis_addEvent(AxisClass, 'afterTickSize', onAfterTickSize);\n GridAxis_addEvent(AxisClass, 'trimTicks', onTrimTicks);\n GridAxis_addEvent(AxisClass, 'destroy', onDestroy);\n GridAxis_addEvent(ChartClass, 'afterSetChartSize', GridAxis_onChartAfterSetChartSize);\n GridAxis_addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);\n GridAxis_addEvent(TickClass, 'labelFormat', onTickLabelFormat);\n }\n return AxisClass;\n}\n/**\n * Get the largest label width and height.\n *\n * @private\n * @function Highcharts.Axis#getMaxLabelDimensions\n *\n * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks\n * All the ticks on one axis.\n *\n * @param {Array<number|string>} tickPositions\n * All the tick positions on one axis.\n *\n * @return {Highcharts.SizeObject}\n * Object containing the properties height and width.\n *\n * @todo Move this to the generic axis implementation, as it is used there.\n */\nfunction getMaxLabelDimensions(ticks, tickPositions) {\n var dimensions = {\n width: 0,\n height: 0\n };\n tickPositions.forEach(function (pos) {\n var tick = ticks[pos];\n var labelHeight = 0,\n labelWidth = 0,\n label;\n if (GridAxis_isObject(tick)) {\n label = GridAxis_isObject(tick.label) ? tick.label : {};\n // Find width and height of label\n labelHeight = label.getBBox ? label.getBBox().height : 0;\n if (label.textStr && !GridAxis_isNumber(label.textPxLength)) {\n label.textPxLength = label.getBBox().width;\n }\n labelWidth = GridAxis_isNumber(label.textPxLength) ?\n // Math.round ensures crisp lines\n Math.round(label.textPxLength) :\n 0;\n if (label.textStr) {\n // Set the tickWidth same as the label width after ellipsis\n // applied #10281\n labelWidth = Math.round(label.getBBox().width);\n }\n // Update the result if width and/or height are larger\n dimensions.height = Math.max(labelHeight, dimensions.height);\n dimensions.width = Math.max(labelWidth, dimensions.width);\n }\n });\n // For tree grid, add indentation\n if (this.type === 'treegrid' &&\n this.treeGrid &&\n this.treeGrid.mapOfPosToGridNode) {\n var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;\n dimensions.width += (this.options.labels.indentation *\n (treeDepth - 1));\n }\n return dimensions;\n}\n/**\n * Handle columns and getOffset.\n * @private\n */\nfunction wrapGetOffset(proceed) {\n var grid = this.grid, \n // On the left side we handle the columns first because the offset is\n // calculated from the plot area and out\n columnsFirst = this.side === 3;\n if (!columnsFirst) {\n proceed.apply(this);\n }\n if (!(grid === null || grid === void 0 ? void 0 : grid.isColumn)) {\n var columns = (grid === null || grid === void 0 ? void 0 : grid.columns) || [];\n if (columnsFirst) {\n columns = columns.slice().reverse();\n }\n columns\n .forEach(function (column) {\n column.getOffset();\n });\n }\n if (columnsFirst) {\n proceed.apply(this);\n }\n}\n/**\n * @private\n */\nfunction onAfterGetTitlePosition(e) {\n var axis = this;\n var options = axis.options;\n var gridOptions = options.grid || {};\n if (gridOptions.enabled === true) {\n // Compute anchor points for each of the title align options\n var axisTitle = axis.axisTitle,\n axisHeight = axis.height,\n horiz = axis.horiz,\n axisLeft = axis.left,\n offset = axis.offset,\n opposite = axis.opposite,\n options_1 = axis.options,\n axisTop = axis.top,\n axisWidth = axis.width;\n var tickSize = axis.tickSize();\n var titleWidth = axisTitle && axisTitle.getBBox().width;\n var xOption = options_1.title.x;\n var yOption = options_1.title.y;\n var titleMargin = GridAxis_pick(options_1.title.margin,\n horiz ? 5 : 10);\n var titleFontSize = axisTitle ? axis.chart.renderer.fontMetrics(axisTitle).f : 0;\n var crispCorr = tickSize ? tickSize[0] / 2 : 0;\n // TODO account for alignment\n // the position in the perpendicular direction of the axis\n var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +\n (horiz ? 1 : -1) * // Horizontal axis reverses the margin\n (opposite ? -1 : 1) * // So does opposite axes\n crispCorr +\n (axis.side === GridAxisSide.bottom ? titleFontSize : 0));\n e.titlePosition.x = horiz ?\n axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :\n offAxis + (opposite ? axisWidth : 0) + offset + xOption;\n e.titlePosition.y = horiz ?\n (offAxis -\n (opposite ? axisHeight : 0) +\n (opposite ? titleFontSize : -titleFontSize) / 2 +\n offset +\n yOption) :\n axisTop - titleMargin + yOption;\n }\n}\n/**\n * @private\n */\nfunction onAfterInit() {\n var axis = this;\n var chart = axis.chart,\n _a = axis.options.grid,\n gridOptions = _a === void 0 ? {} : _a,\n userOptions = axis.userOptions;\n if (gridOptions.enabled) {\n applyGridOptions(axis);\n }\n if (gridOptions.columns) {\n var columns = axis.grid.columns = [];\n var columnIndex = axis.grid.columnIndex = 0;\n // Handle columns, each column is a grid axis\n while (++columnIndex < gridOptions.columns.length) {\n var columnOptions = GridAxis_merge(userOptions,\n gridOptions.columns[columnIndex], {\n isInternal: true,\n linkedTo: 0,\n // Disable by default the scrollbar on the grid axis\n scrollbar: {\n enabled: false\n }\n }, \n // Avoid recursion\n {\n grid: {\n columns: void 0\n }\n });\n var column = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(axis.chart,\n columnOptions, 'yAxis');\n column.grid.isColumn = true;\n column.grid.columnIndex = columnIndex;\n // Remove column axis from chart axes array, and place it\n // in the columns array.\n GridAxis_erase(chart.axes, column);\n GridAxis_erase(chart[axis.coll] || [], column);\n columns.push(column);\n }\n }\n}\n/**\n * Draw an extra line on the far side of the outermost axis,\n * creating floor/roof/wall of a grid. And some padding.\n * ```\n * Make this:\n * (axis.min) __________________________ (axis.max)\n * | | | | |\n * Into this:\n * (axis.min) __________________________ (axis.max)\n * ___|____|____|____|____|__\n * ```\n * @private\n */\nfunction onAfterRender() {\n var axis = this,\n axisTitle = axis.axisTitle,\n grid = axis.grid,\n options = axis.options,\n gridOptions = options.grid || {};\n if (gridOptions.enabled === true) {\n var min = axis.min || 0,\n max = axis.max || 0,\n firstTick = axis.ticks[axis.tickPositions[0]];\n // Adjust the title max width to the column width (#19657)\n if (axisTitle &&\n !axis.chart.styledMode &&\n (firstTick === null || firstTick === void 0 ? void 0 : firstTick.slotWidth) &&\n !axis.options.title.style.width) {\n axisTitle.css({ width: \"\" + firstTick.slotWidth + \"px\" });\n }\n // @todo actual label padding (top, bottom, left, right)\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);\n // Remove right wall before rendering if updating\n if (axis.rightWall) {\n axis.rightWall.destroy();\n }\n /*\n Draw an extra axis line on outer axes\n >\n Make this: |______|______|______|___\n\n > _________________________\n Into this: |______|______|______|__|\n */\n if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {\n var lineWidth = options.lineWidth;\n if (lineWidth) {\n var linePath = axis.getLinePath(lineWidth),\n startPoint = linePath[0],\n endPoint = linePath[1], \n // Negate distance if top or left axis\n // Subtract 1px to draw the line at the end of the tick\n tickLength = (axis.tickSize('tick') || [1])[0],\n distance = tickLength * ((axis.side === GridAxisSide.top ||\n axis.side === GridAxisSide.left) ? -1 : 1);\n // If axis is horizontal, reposition line path vertically\n if (startPoint[0] === 'M' && endPoint[0] === 'L') {\n if (axis.horiz) {\n startPoint[2] += distance;\n endPoint[2] += distance;\n }\n else {\n startPoint[1] += distance;\n endPoint[1] += distance;\n }\n }\n // If it doesn't exist, add an upper and lower border\n // for the vertical grid axis.\n if (!axis.horiz && axis.chart.marginRight) {\n var upperBorderStartPoint = startPoint,\n upperBorderEndPoint = [\n 'L',\n axis.left,\n startPoint[2] || 0\n ],\n upperBorderPath = [\n upperBorderStartPoint,\n upperBorderEndPoint\n ],\n lowerBorderEndPoint = [\n 'L',\n axis.chart.chartWidth - axis.chart.marginRight,\n axis.toPixels(max + axis.tickmarkOffset)\n ],\n lowerBorderStartPoint = [\n 'M',\n endPoint[1] || 0,\n axis.toPixels(max + axis.tickmarkOffset)\n ],\n lowerBorderPath = [\n lowerBorderStartPoint,\n lowerBorderEndPoint\n ];\n if (!axis.grid.upperBorder && min % 1 !== 0) {\n axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);\n }\n if (axis.grid.upperBorder) {\n axis.grid.upperBorder.attr({\n stroke: options.lineColor,\n 'stroke-width': options.lineWidth\n });\n axis.grid.upperBorder.animate({\n d: upperBorderPath\n });\n }\n if (!axis.grid.lowerBorder && max % 1 !== 0) {\n axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);\n }\n if (axis.grid.lowerBorder) {\n axis.grid.lowerBorder.attr({\n stroke: options.lineColor,\n 'stroke-width': options.lineWidth\n });\n axis.grid.lowerBorder.animate({\n d: lowerBorderPath\n });\n }\n }\n // Render an extra line parallel to the existing axes, to\n // close the grid.\n if (!axis.grid.axisLineExtra) {\n axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);\n }\n else {\n axis.grid.axisLineExtra.attr({\n stroke: options.lineColor,\n 'stroke-width': options.lineWidth\n });\n axis.grid.axisLineExtra.animate({\n d: linePath\n });\n }\n // Show or hide the line depending on options.showEmpty\n axis.axisLine[axis.showAxis ? 'show' : 'hide']();\n }\n }\n (grid && grid.columns || []).forEach(function (column) { return column.render(); });\n // Manipulate the tick mark visibility\n // based on the axis.max- allows smooth scrolling.\n if (!axis.horiz &&\n axis.chart.hasRendered &&\n (axis.scrollbar ||\n (axis.linkedParent && axis.linkedParent.scrollbar)) &&\n axis.tickPositions.length) {\n var tickmarkOffset = axis.tickmarkOffset,\n lastTick = axis.tickPositions[axis.tickPositions.length - 1],\n firstTick_1 = axis.tickPositions[0];\n var label = void 0,\n tickMark = void 0;\n while ((label = axis.hiddenLabels.pop()) && label.element) {\n label.show(); // #15453\n }\n while ((tickMark = axis.hiddenMarks.pop()) &&\n tickMark.element) {\n tickMark.show(); // #16439\n }\n // Hide/show first tick label.\n label = axis.ticks[firstTick_1].label;\n if (label) {\n if (min - firstTick_1 > tickmarkOffset) {\n axis.hiddenLabels.push(label.hide());\n }\n else {\n label.show();\n }\n }\n // Hide/show last tick mark/label.\n label = axis.ticks[lastTick].label;\n if (label) {\n if (lastTick - max > tickmarkOffset) {\n axis.hiddenLabels.push(label.hide());\n }\n else {\n label.show();\n }\n }\n var mark = axis.ticks[lastTick].mark;\n if (mark &&\n lastTick - max < tickmarkOffset &&\n lastTick - max > 0 && axis.ticks[lastTick].isLast) {\n axis.hiddenMarks.push(mark.hide());\n }\n }\n }\n}\n/**\n * @private\n */\nfunction onAfterSetAxisTranslation() {\n var axis = this;\n var tickInfo = axis.tickPositions && axis.tickPositions.info;\n var options = axis.options;\n var gridOptions = options.grid || {};\n var userLabels = axis.userOptions.labels || {};\n // Fire this only for the Gantt type chart, #14868.\n if (gridOptions.enabled) {\n if (axis.horiz) {\n axis.series.forEach(function (series) {\n series.options.pointRange = 0;\n });\n // Lower level time ticks, like hours or minutes, represent\n // points in time and not ranges. These should be aligned\n // left in the grid cell by default. The same applies to\n // years of higher order.\n if (tickInfo &&\n options.dateTimeLabelFormats &&\n options.labels &&\n !GridAxis_defined(userLabels.align) &&\n (options.dateTimeLabelFormats[tickInfo.unitName]\n .range === false ||\n tickInfo.count > 1 // Years\n )) {\n options.labels.align = 'left';\n if (!GridAxis_defined(userLabels.x)) {\n options.labels.x = 3;\n }\n }\n }\n else {\n // Don't trim ticks which not in min/max range but\n // they are still in the min/max plus tickInterval.\n if (this.type !== 'treegrid' &&\n axis.grid &&\n axis.grid.columns) {\n this.minPointOffset = this.tickInterval;\n }\n }\n }\n}\n/**\n * Creates a left and right wall on horizontal axes:\n * - Places leftmost tick at the start of the axis, to create a left\n * wall\n * - Ensures that the rightmost tick is at the end of the axis, to\n * create a right wall.\n * @private\n */\nfunction onAfterSetOptions(e) {\n var options = this.options,\n userOptions = e.userOptions,\n gridOptions = ((options && GridAxis_isObject(options.grid)) ? options.grid : {});\n var gridAxisOptions;\n if (gridOptions.enabled === true) {\n // Merge the user options into default grid axis options so\n // that when a user option is set, it takes precedence.\n gridAxisOptions = GridAxis_merge(true, {\n className: ('highcharts-grid-axis ' + (userOptions.className || '')),\n dateTimeLabelFormats: {\n hour: {\n list: ['%[HM]', '%[H]']\n },\n day: {\n list: ['%[AeB]', '%[aeb]', '%[E]']\n },\n week: {\n list: ['Week %W', 'W%W']\n },\n month: {\n list: ['%[B]', '%[b]', '%o']\n }\n },\n grid: {\n borderWidth: 1\n },\n labels: {\n padding: 2,\n style: {\n fontSize: '0.9em'\n }\n },\n margin: 0,\n title: {\n text: null,\n reserveSpace: false,\n rotation: 0,\n style: {\n textOverflow: 'ellipsis'\n }\n },\n // In a grid axis, only allow one unit of certain types,\n // for example we shouldn't have one grid cell spanning\n // two days.\n units: [[\n 'millisecond', // Unit name\n [1, 10, 100]\n ], [\n 'second',\n [1, 10]\n ], [\n 'minute',\n [1, 5, 15]\n ], [\n 'hour',\n [1, 6]\n ], [\n 'day',\n [1]\n ], [\n 'week',\n [1]\n ], [\n 'month',\n [1]\n ], [\n 'year',\n null\n ]]\n }, userOptions);\n // X-axis specific options\n if (this.coll === 'xAxis') {\n // For linked axes, tickPixelInterval is used only if\n // the tickPositioner below doesn't run or returns\n // undefined (like multiple years)\n if (GridAxis_defined(userOptions.linkedTo) &&\n !GridAxis_defined(userOptions.tickPixelInterval)) {\n gridAxisOptions.tickPixelInterval = 350;\n }\n // For the secondary grid axis, use the primary axis'\n // tick intervals and return ticks one level higher.\n if (\n // Check for tick pixel interval in options\n !GridAxis_defined(userOptions.tickPixelInterval) &&\n // Only for linked axes\n GridAxis_defined(userOptions.linkedTo) &&\n !GridAxis_defined(userOptions.tickPositioner) &&\n !GridAxis_defined(userOptions.tickInterval) &&\n !GridAxis_defined(userOptions.units)) {\n gridAxisOptions.tickPositioner = function (min, max) {\n var parentInfo = (this.linkedParent &&\n this.linkedParent.tickPositions &&\n this.linkedParent.tickPositions.info);\n if (parentInfo) {\n var units = (gridAxisOptions.units || []);\n var unitIdx = void 0,\n count = 1,\n unitName = 'year';\n for (var i = 0; i < units.length; i++) {\n var unit_1 = units[i];\n if (unit_1 && unit_1[0] === parentInfo.unitName) {\n unitIdx = i;\n break;\n }\n }\n // Get the first allowed count on the next unit.\n var unit = (GridAxis_isNumber(unitIdx) && units[unitIdx + 1]);\n if (unit) {\n unitName = unit[0] || 'year';\n var counts = unit[1];\n count = counts && counts[0] || 1;\n // In case the base X axis shows years, make the\n // secondary axis show ten times the years (#11427)\n }\n else if (parentInfo.unitName === 'year') {\n // `unitName` is 'year'\n count = parentInfo.count * 10;\n }\n var unitRange = GridAxis_timeUnits[unitName];\n this.tickInterval = unitRange * count;\n return this.chart.time.getTimeTicks({ unitRange: unitRange, count: count, unitName: unitName }, min, max, this.options.startOfWeek);\n }\n };\n }\n }\n // Now merge the combined options into the axis options\n GridAxis_merge(true, this.options, gridAxisOptions);\n if (this.horiz) {\n /* _________________________\n Make this: ___|_____|_____|_____|__|\n ^ ^\n _________________________\n Into this: |_____|_____|_____|_____|\n ^ ^ */\n options.minPadding = GridAxis_pick(userOptions.minPadding, 0);\n options.maxPadding = GridAxis_pick(userOptions.maxPadding, 0);\n }\n // If borderWidth is set, then use its value for tick and\n // line width.\n if (GridAxis_isNumber(options.grid.borderWidth)) {\n options.tickWidth = options.lineWidth =\n gridOptions.borderWidth;\n }\n }\n}\n/**\n * @private\n */\nfunction onAfterSetOptions2(e) {\n var axis = this;\n var userOptions = e.userOptions;\n var gridOptions = userOptions && userOptions.grid || {};\n var columns = gridOptions.columns;\n // Add column options to the parent axis. Children has their column options\n // set on init in onGridAxisAfterInit.\n if (gridOptions.enabled && columns) {\n GridAxis_merge(true, axis.options, columns[0]);\n }\n}\n/**\n * Handle columns and setScale.\n * @private\n */\nfunction onAfterSetScale() {\n var axis = this;\n (axis.grid.columns || []).forEach(function (column) { return column.setScale(); });\n}\n/**\n * Draw vertical axis ticks extra long to create cell floors and roofs.\n * Overrides the tickLength for vertical axes.\n * @private\n */\nfunction onAfterTickSize(e) {\n var _a = this,\n horiz = _a.horiz,\n maxLabelDimensions = _a.maxLabelDimensions,\n _b = _a.options.grid,\n gridOptions = _b === void 0 ? {} : _b;\n if (gridOptions.enabled && maxLabelDimensions) {\n var labelPadding = this.options.labels.distance * 2;\n var distance = horiz ?\n (gridOptions.cellHeight ||\n labelPadding + maxLabelDimensions.height) :\n labelPadding + maxLabelDimensions.width;\n if (GridAxis_isArray(e.tickSize)) {\n e.tickSize[0] = distance;\n }\n else {\n e.tickSize = [distance, 0];\n }\n }\n}\n/**\n * @private\n */\nfunction GridAxis_onChartAfterSetChartSize() {\n this.axes.forEach(function (axis) {\n (axis.grid && axis.grid.columns || []).forEach(function (column) {\n column.setAxisSize();\n column.setAxisTranslation();\n });\n });\n}\n/**\n * @private\n */\nfunction onDestroy(e) {\n var grid = this.grid;\n (grid.columns || []).forEach(function (column) { return column.destroy(e.keepEvents); });\n grid.columns = void 0;\n}\n/**\n * Wraps axis init to draw cell walls on vertical axes.\n * @private\n */\nfunction onInit(e) {\n var axis = this;\n var userOptions = e.userOptions || {};\n var gridOptions = userOptions.grid || {};\n if (gridOptions.enabled && GridAxis_defined(gridOptions.borderColor)) {\n userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);\n }\n if (!axis.grid) {\n axis.grid = new GridAxisAdditions(axis);\n }\n axis.hiddenLabels = [];\n axis.hiddenMarks = [];\n}\n/**\n * Center tick labels in cells.\n * @private\n */\nfunction onTickAfterGetLabelPosition(e) {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed,\n chart = axis.chart,\n options = axis.options,\n gridOptions = options.grid || {},\n labelOpts = axis.options.labels,\n align = labelOpts.align, \n // `verticalAlign` is currently not supported for axis.labels.\n verticalAlign = 'middle', // LabelOpts.verticalAlign,\n side = GridAxisSide[axis.side],\n tickmarkOffset = e.tickmarkOffset,\n tickPositions = axis.tickPositions,\n tickPos = tick.pos - tickmarkOffset,\n nextTickPos = (GridAxis_isNumber(tickPositions[e.index + 1]) ?\n tickPositions[e.index + 1] - tickmarkOffset :\n (axis.max || 0) + tickmarkOffset),\n tickSize = axis.tickSize('tick'),\n tickWidth = tickSize ? tickSize[0] : 0,\n crispCorr = tickSize ? tickSize[1] / 2 : 0;\n // Only center tick labels in grid axes\n if (gridOptions.enabled === true) {\n var bottom = void 0,\n top_1,\n left = void 0,\n right = void 0;\n // Calculate top and bottom positions of the cell.\n if (side === 'top') {\n bottom = axis.top + axis.offset;\n top_1 = bottom - tickWidth;\n }\n else if (side === 'bottom') {\n top_1 = chart.chartHeight - axis.bottom + axis.offset;\n bottom = top_1 + tickWidth;\n }\n else {\n bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);\n top_1 = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);\n }\n // Calculate left and right positions of the cell.\n if (side === 'right') {\n left = chart.chartWidth - axis.right + axis.offset;\n right = left + tickWidth;\n }\n else if (side === 'left') {\n right = axis.left + axis.offset;\n left = right - tickWidth;\n }\n else {\n left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;\n right = Math.min(// #15742\n Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);\n }\n tick.slotWidth = right - left;\n // Calculate the positioning of the label based on\n // alignment.\n e.pos.x = (align === 'left' ?\n left :\n align === 'right' ?\n right :\n left + ((right - left) / 2) // Default to center\n );\n e.pos.y = (verticalAlign === 'top' ?\n top_1 :\n verticalAlign === 'bottom' ?\n bottom :\n top_1 + ((bottom - top_1) / 2) // Default to middle\n );\n if (label) {\n var lblMetrics = chart.renderer.fontMetrics(label),\n labelHeight = label.getBBox().height;\n // Adjustment to y position to align the label correctly.\n // Would be better to have a setter or similar for this.\n if (!labelOpts.useHTML) {\n var lines = Math.round(labelHeight / lblMetrics.h);\n e.pos.y += (\n // Center the label\n // TODO: why does this actually center the label?\n ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +\n // Adjust for height of additional lines.\n -(((lines - 1) * lblMetrics.h) / 2));\n }\n else {\n e.pos.y += (\n // Readjust yCorr in htmlUpdateTransform\n lblMetrics.b +\n // Adjust for height of html label\n -(labelHeight / 2));\n }\n }\n e.pos.x += (axis.horiz && labelOpts.x) || 0;\n }\n}\n/**\n * @private\n */\nfunction onTickLabelFormat(ctx) {\n var axis = ctx.axis,\n value = ctx.value;\n if (axis.options.grid &&\n axis.options.grid.enabled) {\n var tickPos = axis.tickPositions;\n var series = (axis.linkedParent || axis).series[0];\n var isFirst = value === tickPos[0];\n var isLast = value === tickPos[tickPos.length - 1];\n var point = series && GridAxis_find(series.options.data,\n function (p) {\n return p[axis.isXAxis ? 'x' : 'y'] === value;\n });\n var pointCopy = void 0;\n if (point && series.is('gantt')) {\n // For the Gantt set point aliases to the pointCopy\n // to do not change the original point\n pointCopy = GridAxis_merge(point);\n highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().seriesTypes.gantt.prototype.pointClass\n .setGanttPointAliases(pointCopy, axis.chart);\n }\n // Make additional properties available for the\n // formatter\n ctx.isFirst = isFirst;\n ctx.isLast = isLast;\n ctx.point = pointCopy;\n }\n}\n/**\n * Makes tick labels which are usually ignored in a linked axis\n * displayed if they are within range of linkedParent.min.\n * ```\n * _____________________________\n * | | | | |\n * Make this: | | 2 | 3 | 4 |\n * |___|_______|_______|_______|\n * ^\n * _____________________________\n * | | | | |\n * Into this: | 1 | 2 | 3 | 4 |\n * |___|_______|_______|_______|\n * ^\n * ```\n * @private\n * @todo Does this function do what the drawing says? Seems to affect\n * ticks and not the labels directly?\n */\nfunction onTrimTicks() {\n var axis = this,\n options = axis.options,\n gridOptions = options.grid || {},\n categoryAxis = axis.categories,\n tickPositions = axis.tickPositions,\n firstPos = tickPositions[0],\n secondPos = tickPositions[1],\n lastPos = tickPositions[tickPositions.length - 1],\n beforeLastPos = tickPositions[tickPositions.length - 2],\n linkedMin = axis.linkedParent && axis.linkedParent.min,\n linkedMax = axis.linkedParent && axis.linkedParent.max,\n min = linkedMin || axis.min,\n max = linkedMax || axis.max,\n tickInterval = axis.tickInterval,\n startLessThanMin = ( // #19845\n GridAxis_isNumber(min) &&\n min >= firstPos + tickInterval &&\n min < secondPos),\n endMoreThanMin = (GridAxis_isNumber(min) &&\n firstPos < min &&\n firstPos + tickInterval > min),\n startLessThanMax = (GridAxis_isNumber(max) &&\n lastPos > max &&\n lastPos - tickInterval < max),\n endMoreThanMax = (GridAxis_isNumber(max) &&\n max <= lastPos - tickInterval &&\n max > beforeLastPos);\n if (gridOptions.enabled === true &&\n !categoryAxis &&\n (axis.isXAxis || axis.isLinked)) {\n if ((endMoreThanMin || startLessThanMin) && !options.startOnTick) {\n tickPositions[0] = min;\n }\n if ((startLessThanMax || endMoreThanMax) && !options.endOnTick) {\n tickPositions[tickPositions.length - 1] = max;\n }\n }\n}\n/**\n * Avoid altering tickInterval when reserving space.\n * @private\n */\nfunction wrapUnsquish(proceed) {\n var axis = this;\n var _a = axis.options.grid,\n gridOptions = _a === void 0 ? {} : _a;\n if (gridOptions.enabled === true && axis.categories) {\n return axis.tickInterval;\n }\n return proceed.apply(axis, argsToArray(arguments));\n}\n/* *\n *\n * Class\n *\n * */\n/**\n * Additions for grid axes.\n * @private\n * @class\n */\nvar GridAxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function GridAxisAdditions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Checks if an axis is the outer axis in its dimension. Since\n * axes are placed outwards in order, the axis with the highest\n * index is the outermost axis.\n *\n * Example: If there are multiple x-axes at the top of the chart,\n * this function returns true if the axis supplied is the last\n * of the x-axes.\n *\n * @private\n *\n * @return {boolean}\n * True if the axis is the outermost axis in its dimension; false if\n * not.\n */\n GridAxisAdditions.prototype.isOuterAxis = function () {\n var _a;\n var axis = this.axis;\n var chart = axis.chart;\n var columnIndex = axis.grid.columnIndex;\n var columns = (((_a = axis.linkedParent) === null || _a === void 0 ? void 0 : _a.grid.columns) ||\n axis.grid.columns ||\n []);\n var parentAxis = columnIndex ? axis.linkedParent : axis;\n var thisIndex = -1,\n lastIndex = 0;\n // On the left side, when we have columns (not only multiple axes), the\n // main axis is to the left\n if (axis.side === 3 && !chart.inverted && columns.length) {\n return !axis.linkedParent;\n }\n (chart[axis.coll] || []).forEach(function (otherAxis, index) {\n if (otherAxis.side === axis.side &&\n !otherAxis.options.isInternal) {\n lastIndex = index;\n if (otherAxis === parentAxis) {\n // Get the index of the axis in question\n thisIndex = index;\n }\n }\n });\n return (lastIndex === thisIndex &&\n (GridAxis_isNumber(columnIndex) ?\n columns.length === columnIndex :\n true));\n };\n /**\n * Add extra border based on the provided path.\n * @private\n * @param {SVGPath} path\n * The path of the border.\n * @return {Highcharts.SVGElement}\n * Border\n */\n GridAxisAdditions.prototype.renderBorder = function (path) {\n var axis = this.axis,\n renderer = axis.chart.renderer,\n options = axis.options,\n extraBorderLine = renderer.path(path)\n .addClass('highcharts-axis-line')\n .add(axis.axisGroup);\n if (!renderer.styledMode) {\n extraBorderLine.attr({\n stroke: options.lineColor,\n 'stroke-width': options.lineWidth,\n zIndex: 7\n });\n }\n return extraBorderLine;\n };\n return GridAxisAdditions;\n}());\n/* *\n *\n * Registry\n *\n * */\n// First letter of the day of the week, e.g. 'M' for 'Monday'.\ndateFormats.E = function (timestamp) {\n return this.dateFormat('%a', timestamp, true).charAt(0);\n};\n// Adds week date format\ndateFormats.W = function (timestamp) {\n var d = this.toParts(timestamp),\n firstDay = (d[7] + 6) % 7,\n thursday = d.slice(0);\n thursday[2] = d[2] - firstDay + 3;\n var firstThursday = this.toParts(this.makeTime(thursday[0], 0, 1));\n if (firstThursday[7] !== 4) {\n d[1] = 0; // Set month to January\n d[2] = 1 + (11 - firstThursday[7]) % 7;\n }\n var thursdayTS = this.makeTime(thursday[0],\n thursday[1],\n thursday[2]),\n firstThursdayTS = this.makeTime(firstThursday[0],\n firstThursday[1],\n firstThursday[2]);\n return (1 +\n Math.floor((thursdayTS - firstThursdayTS) / 604800000)).toString();\n};\n/* *\n *\n * Default Export\n *\n * */\nvar GridAxis = {\n compose: GridAxis_compose\n};\n/* harmony default export */ var Axis_GridAxis = (GridAxis);\n/* *\n *\n * API Options\n *\n * */\n/**\n * @productdesc {gantt}\n * For grid axes (like in Gantt charts),\n * it is possible to declare as a list to provide different\n * formats depending on available space.\n *\n * Defaults to:\n * ```js\n * {\n * hour: { list: ['%H:%M', '%H'] },\n * day: { list: ['%A, %e. %B', '%a, %e. %b', '%E'] },\n * week: { list: ['Week %W', 'W%W'] },\n * month: { list: ['%B', '%b', '%o'] }\n * }\n * ```\n *\n * @sample {gantt} gantt/grid-axis/date-time-label-formats\n * Gantt chart with custom axis date format.\n *\n * @apioption xAxis.dateTimeLabelFormats\n */\n/**\n * Set grid options for the axis labels. Requires Highcharts Gantt.\n *\n * @since 6.2.0\n * @product gantt\n * @apioption xAxis.grid\n */\n/**\n * Enable grid on the axis labels. Defaults to true for Gantt charts.\n *\n * @type {boolean}\n * @default true\n * @since 6.2.0\n * @product gantt\n * @apioption xAxis.grid.enabled\n */\n/**\n * Set specific options for each column (or row for horizontal axes) in the\n * grid. Each extra column/row is its own axis, and the axis options can be set\n * here.\n *\n * @sample gantt/demo/left-axis-table\n * Left axis as a table\n * @sample gantt/demo/treegrid-columns\n * Collapsible tree grid with columns\n *\n * @type {Array<Highcharts.XAxisOptions>}\n * @apioption xAxis.grid.columns\n */\n/**\n * Set border color for the label grid lines.\n *\n * @type {Highcharts.ColorString}\n * @default #e6e6e6\n * @apioption xAxis.grid.borderColor\n */\n/**\n * Set border width of the label grid lines.\n *\n * @type {number}\n * @default 1\n * @apioption xAxis.grid.borderWidth\n */\n/**\n * Set cell height for grid axis labels. By default this is calculated from font\n * size. This option only applies to horizontal axes. For vertical axes, check\n * the [#yAxis.staticScale](yAxis.staticScale) option.\n *\n * @sample gantt/grid-axis/cellheight\n * Gant chart with custom cell height\n * @type {number}\n * @apioption xAxis.grid.cellHeight\n */\n''; // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Gantt/Tree.js\n/* *\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n/* *\n *\n * Imports\n *\n * */\n\nvar Tree_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, Tree_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Tree_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Creates an object map from parent id to children's index.\n *\n * @private\n * @function Highcharts.Tree#getListOfParents\n *\n * @param {Array<*>} data\n * List of points set in options. `Array.parent` is parent id of point.\n *\n * @return {Highcharts.Dictionary<Array<*>>}\n * Map from parent id to children index in data\n */\nfunction getListOfParents(data) {\n var root = '',\n ids = [],\n listOfParents = data.reduce(function (prev,\n curr) {\n var _a = curr.parent,\n parent = _a === void 0 ? '' : _a,\n id = curr.id;\n if (typeof prev[parent] === 'undefined') {\n prev[parent] = [];\n }\n prev[parent].push(curr);\n if (id) {\n ids.push(id);\n }\n return prev;\n }, {});\n Object.keys(listOfParents).forEach(function (node) {\n var _a;\n if ((node !== root) && (ids.indexOf(node) === -1)) {\n var adoptedByRoot = listOfParents[node].map(function (orphan) {\n var parentExcluded = __rest(orphan,\n []); // #15196\n return parentExcluded;\n });\n (_a = listOfParents[root]).push.apply(_a, adoptedByRoot);\n delete listOfParents[node];\n }\n });\n return listOfParents;\n}\n/** @private */\nfunction getNode(id, parent, level, data, mapOfIdToChildren, options) {\n var after = options && options.after,\n before = options && options.before,\n node = {\n data: data,\n depth: level - 1,\n id: id,\n level: level,\n parent: (parent || '')\n };\n var descendants = 0,\n height = 0,\n start,\n end;\n // Allow custom logic before the children has been created.\n if (typeof before === 'function') {\n before(node, options);\n }\n // Call getNode recursively on the children. Calculate the height of the\n // node, and the number of descendants.\n var children = ((mapOfIdToChildren[id] || [])).map(function (child) {\n var node = getNode(child.id,\n id, (level + 1),\n child,\n mapOfIdToChildren,\n options),\n childStart = child.start || NaN,\n childEnd = (child.milestone === true ?\n childStart :\n child.end ||\n NaN);\n // Start should be the lowest child.start.\n start = ((!Tree_isNumber(start) || childStart < start) ?\n childStart :\n start);\n // End should be the largest child.end.\n // If child is milestone, then use start as end.\n end = ((!Tree_isNumber(end) || childEnd > end) ?\n childEnd :\n end);\n descendants = descendants + 1 + node.descendants;\n height = Math.max(node.height + 1, height);\n return node;\n });\n // Calculate start and end for point if it is not already explicitly set.\n if (data) {\n data.start = Tree_pick(data.start, start);\n data.end = Tree_pick(data.end, end);\n }\n Tree_extend(node, {\n children: children,\n descendants: descendants,\n height: height\n });\n // Allow custom logic after the children has been created.\n if (typeof after === 'function') {\n after(node, options);\n }\n return node;\n}\n/** @private */\nfunction getTree(data, options) {\n return getNode('', null, 1, null, getListOfParents(data), options);\n}\n/* *\n *\n * Default Export\n *\n * */\nvar Tree = {\n getNode: getNode,\n getTree: getTree\n};\n/* harmony default export */ var Gantt_Tree = (Tree);\n\n;// ./code/es5/es-modules/Core/Axis/TreeGrid/TreeGridTick.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar TreeGridTick_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, TreeGridTick_removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent, TreeGridTick_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, TreeGridTick_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, TreeGridTick_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, TreeGridTick_wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction onTickInit() {\n var tick = this;\n if (!tick.treeGrid) {\n tick.treeGrid = new TreeGridTickAdditions(tick);\n }\n}\n/**\n * @private\n */\nfunction onTickHover(label) {\n label.addClass('highcharts-treegrid-node-active');\n if (!label.renderer.styledMode) {\n label.css({\n textDecoration: 'underline'\n });\n }\n}\n/**\n * @private\n */\nfunction onTickHoverExit(label, options) {\n var css = TreeGridTick_isObject(options.style) ? options.style : {};\n label.removeClass('highcharts-treegrid-node-active');\n if (!label.renderer.styledMode) {\n label.css({ textDecoration: (css.textDecoration || 'none') });\n }\n}\n/**\n * @private\n */\nfunction renderLabelIcon(tick, params) {\n var _a;\n var treeGrid = tick.treeGrid,\n isNew = !treeGrid.labelIcon,\n renderer = params.renderer,\n labelBox = params.xy,\n options = params.options,\n width = options.width || 0,\n height = options.height || 0,\n padding = ((_a = options.padding) !== null && _a !== void 0 ? _a : tick.axis.linkedParent) ? 0 : 5,\n iconCenter = {\n x: labelBox.x - (width / 2) - padding,\n y: labelBox.y - (height / 2)\n },\n rotation = params.collapsed ? 90 : 180,\n shouldRender = params.show && TreeGridTick_isNumber(iconCenter.y);\n var icon = treeGrid.labelIcon;\n if (!icon) {\n treeGrid.labelIcon = icon = renderer\n .path(renderer.symbols[options.type](options.x || 0, options.y || 0, width, height))\n .addClass('highcharts-label-icon')\n .add(params.group);\n }\n // Set the new position, and show or hide\n icon[shouldRender ? 'show' : 'hide'](); // #14904, #1338\n // Presentational attributes\n if (!renderer.styledMode) {\n icon\n .attr({\n cursor: 'pointer',\n 'fill': TreeGridTick_pick(params.color, \"#666666\" /* Palette.neutralColor60 */),\n 'stroke-width': 1,\n stroke: options.lineColor,\n strokeWidth: options.lineWidth || 0\n });\n }\n // Update the icon positions\n icon[isNew ? 'attr' : 'animate']({\n translateX: iconCenter.x,\n translateY: iconCenter.y,\n rotation: rotation\n });\n}\n/**\n * @private\n */\nfunction wrapGetLabelPosition(proceed, x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n var tick = this,\n lbOptions = TreeGridTick_pick(tick.options && tick.options.labels,\n labelOptions),\n pos = tick.pos,\n axis = tick.axis,\n isTreeGrid = axis.type === 'treegrid',\n result = proceed.apply(tick,\n [x,\n y,\n label,\n horiz,\n lbOptions,\n tickmarkOffset,\n index,\n step]);\n var mapOfPosToGridNode,\n node,\n level;\n if (isTreeGrid) {\n var _a = (lbOptions && TreeGridTick_isObject(lbOptions.symbol,\n true) ?\n lbOptions.symbol :\n {}),\n _b = _a.width,\n width = _b === void 0 ? 0 : _b,\n _c = _a.padding,\n padding = _c === void 0 ? axis.linkedParent ? 0 : 5 : _c,\n indentation = (lbOptions && TreeGridTick_isNumber(lbOptions.indentation) ?\n lbOptions.indentation :\n 0);\n mapOfPosToGridNode = axis.treeGrid.mapOfPosToGridNode;\n node = mapOfPosToGridNode && mapOfPosToGridNode[pos];\n level = (node && node.depth) || 1;\n result.x += (\n // Add space for symbols\n (width + (padding * 2)) +\n // Apply indentation\n ((level - 1) * indentation));\n }\n return result;\n}\n/**\n * @private\n */\nfunction wrapRenderLabel(proceed) {\n var tick = this, pos = tick.pos, axis = tick.axis, label = tick.label, tickGrid = tick.treeGrid, tickOptions = tick.options, icon = tickGrid === null || tickGrid === void 0 ? void 0 : tickGrid.labelIcon, labelElement = label === null || label === void 0 ? void 0 : label.element, axisGrid = axis.treeGrid, axisOptions = axis.options, chart = axis.chart, tickPositions = axis.tickPositions, mapOfPosToGridNode = axisGrid.mapOfPosToGridNode, labelOptions = TreeGridTick_pick(tickOptions === null || tickOptions === void 0 ? void 0 : tickOptions.labels, axisOptions === null || axisOptions === void 0 ? void 0 : axisOptions.labels), symbolOptions = (labelOptions && TreeGridTick_isObject(labelOptions.symbol, true) ?\n labelOptions.symbol :\n {}), node = mapOfPosToGridNode && mapOfPosToGridNode[pos], _a = node || {}, descendants = _a.descendants, depth = _a.depth, hasDescendants = node && descendants && descendants > 0, level = depth, isTreeGridElement = (axis.type === 'treegrid') && labelElement, shouldRender = tickPositions.indexOf(pos) > -1, prefixClassName = 'highcharts-treegrid-node-', prefixLevelClass = prefixClassName + 'level-', styledMode = chart.styledMode;\n var collapsed,\n addClassName,\n removeClassName;\n if (isTreeGridElement && node) {\n // Add class name for hierarchical styling.\n label\n .removeClass(new RegExp(prefixLevelClass + '.*'))\n .addClass(prefixLevelClass + level);\n }\n proceed.apply(tick, Array.prototype.slice.call(arguments, 1));\n if (isTreeGridElement && hasDescendants) {\n collapsed = axisGrid.isCollapsed(node);\n renderLabelIcon(tick, {\n color: (!styledMode &&\n label.styles.color ||\n ''),\n collapsed: collapsed,\n group: label.parentGroup,\n options: symbolOptions,\n renderer: label.renderer,\n show: shouldRender,\n xy: label.xy\n });\n // Add class name for the node.\n addClassName = prefixClassName +\n (collapsed ? 'collapsed' : 'expanded');\n removeClassName = prefixClassName +\n (collapsed ? 'expanded' : 'collapsed');\n label\n .addClass(addClassName)\n .removeClass(removeClassName);\n if (!styledMode) {\n label.css({\n cursor: 'pointer'\n });\n }\n // Add events to both label text and icon\n [label, icon].forEach(function (object) {\n if (object && !object.attachedTreeGridEvents) {\n // On hover\n TreeGridTick_addEvent(object.element, 'mouseover', function () {\n onTickHover(label);\n });\n // On hover out\n TreeGridTick_addEvent(object.element, 'mouseout', function () {\n onTickHoverExit(label, labelOptions);\n });\n TreeGridTick_addEvent(object.element, 'click', function () {\n tickGrid.toggleCollapse();\n });\n object.attachedTreeGridEvents = true;\n }\n });\n }\n else if (icon) {\n TreeGridTick_removeEvent(labelElement);\n label === null || label === void 0 ? void 0 : label.css({ cursor: 'default' });\n icon.destroy();\n }\n}\n/* *\n *\n * Classes\n *\n * */\n/**\n * @private\n * @class\n */\nvar TreeGridTickAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function TreeGridTickAdditions(tick) {\n this.tick = tick;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n TreeGridTickAdditions.compose = function (TickClass) {\n var tickProto = TickClass.prototype;\n if (!tickProto.toggleCollapse) {\n TreeGridTick_addEvent(TickClass, 'init', onTickInit);\n TreeGridTick_wrap(tickProto, 'getLabelPosition', wrapGetLabelPosition);\n TreeGridTick_wrap(tickProto, 'renderLabel', wrapRenderLabel);\n // Backwards compatibility\n tickProto.collapse = function (redraw) {\n this.treeGrid.collapse(redraw);\n };\n tickProto.expand = function (redraw) {\n this.treeGrid.expand(redraw);\n };\n tickProto.toggleCollapse = function (redraw) {\n this.treeGrid.toggleCollapse(redraw);\n };\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Collapse the grid cell. Used when axis is of type treegrid.\n *\n * @see gantt/treegrid-axis/collapsed-dynamically/demo.js\n *\n * @private\n * @function Highcharts.Tick#collapse\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n */\n TreeGridTickAdditions.prototype.collapse = function (redraw) {\n var tick = this.tick,\n axis = tick.axis,\n brokenAxis = axis.brokenAxis;\n if (brokenAxis &&\n axis.treeGrid.mapOfPosToGridNode) {\n var pos = tick.pos,\n node = axis.treeGrid.mapOfPosToGridNode[pos],\n breaks = axis.treeGrid.collapse(node);\n brokenAxis.setBreaks(breaks, TreeGridTick_pick(redraw, true));\n }\n };\n /**\n * Destroy remaining labelIcon if exist.\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n TreeGridTickAdditions.prototype.destroy = function () {\n if (this.labelIcon) {\n this.labelIcon.destroy();\n }\n };\n /**\n * Expand the grid cell. Used when axis is of type treegrid.\n *\n * @see gantt/treegrid-axis/collapsed-dynamically/demo.js\n *\n * @private\n * @function Highcharts.Tick#expand\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n */\n TreeGridTickAdditions.prototype.expand = function (redraw) {\n var _a = this.tick,\n pos = _a.pos,\n axis = _a.axis,\n treeGrid = axis.treeGrid,\n brokenAxis = axis.brokenAxis,\n posMappedNodes = treeGrid.mapOfPosToGridNode;\n if (brokenAxis && posMappedNodes) {\n var node = posMappedNodes[pos],\n breaks = treeGrid.expand(node);\n brokenAxis.setBreaks(breaks, TreeGridTick_pick(redraw, true));\n }\n };\n /**\n * Toggle the collapse/expand state of the grid cell. Used when axis is\n * of type treegrid.\n *\n * @see gantt/treegrid-axis/collapsed-dynamically/demo.js\n *\n * @private\n * @function Highcharts.Tick#toggleCollapse\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n */\n TreeGridTickAdditions.prototype.toggleCollapse = function (redraw) {\n var tick = this.tick,\n axis = tick.axis,\n brokenAxis = axis.brokenAxis;\n if (brokenAxis &&\n axis.treeGrid.mapOfPosToGridNode) {\n var pos = tick.pos,\n node = axis.treeGrid.mapOfPosToGridNode[pos],\n breaks = axis.treeGrid.toggleCollapse(node);\n brokenAxis.setBreaks(breaks, TreeGridTick_pick(redraw, true));\n }\n };\n return TreeGridTickAdditions;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var TreeGridTick = (TreeGridTickAdditions);\n\n;// ./code/es5/es-modules/Series/TreeUtilities.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar TreeUtilities_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, TreeUtilities_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, TreeUtilities_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, TreeUtilities_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, TreeUtilities_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, TreeUtilities_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, TreeUtilities_relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n * Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getColor(node, options) {\n var index = options.index,\n mapOptionsToLevel = options.mapOptionsToLevel,\n parentColor = options.parentColor,\n parentColorIndex = options.parentColorIndex,\n series = options.series,\n colors = options.colors,\n siblings = options.siblings,\n points = series.points,\n chartOptionsChart = series.chart.options.chart;\n var getColorByPoint,\n point,\n level,\n colorByPoint,\n colorIndexByPoint,\n color,\n colorIndex;\n /**\n * @private\n */\n var variateColor = function (color) {\n var colorVariation = level && level.colorVariation;\n if (colorVariation &&\n colorVariation.key === 'brightness' &&\n index &&\n siblings) {\n return highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(color).brighten(colorVariation.to * (index / siblings)).get();\n }\n return color;\n };\n if (node) {\n point = points[node.i];\n level = mapOptionsToLevel[node.level] || {};\n getColorByPoint = point && level.colorByPoint;\n if (getColorByPoint) {\n colorIndexByPoint = point.index % (colors ?\n colors.length :\n chartOptionsChart.colorCount);\n colorByPoint = colors && colors[colorIndexByPoint];\n }\n // Select either point color, level color or inherited color.\n if (!series.chart.styledMode) {\n color = TreeUtilities_pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);\n }\n colorIndex = TreeUtilities_pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);\n }\n return {\n color: color,\n colorIndex: colorIndex\n };\n}\n/**\n * Creates a map from level number to its given options.\n *\n * @private\n *\n * @param {Object} params\n * Object containing parameters.\n * - `defaults` Object containing default options. The default options are\n * merged with the userOptions to get the final options for a specific\n * level.\n * - `from` The lowest level number.\n * - `levels` User options from series.levels.\n * - `to` The highest level number.\n *\n * @return {Highcharts.Dictionary<object>|null}\n * Returns a map from level number to its given options.\n */\nfunction getLevelOptions(params) {\n var result = {};\n var defaults,\n converted,\n i,\n from,\n to,\n levels;\n if (TreeUtilities_isObject(params)) {\n from = TreeUtilities_isNumber(params.from) ? params.from : 1;\n levels = params.levels;\n converted = {};\n defaults = TreeUtilities_isObject(params.defaults) ? params.defaults : {};\n if (TreeUtilities_isArray(levels)) {\n converted = levels.reduce(function (obj, item) {\n var level,\n levelIsConstant,\n options;\n if (TreeUtilities_isObject(item) && TreeUtilities_isNumber(item.level)) {\n options = TreeUtilities_merge({}, item);\n levelIsConstant = TreeUtilities_pick(options.levelIsConstant, defaults.levelIsConstant);\n // Delete redundant properties.\n delete options.levelIsConstant;\n delete options.level;\n // Calculate which level these options apply to.\n level = item.level + (levelIsConstant ? 0 : from - 1);\n if (TreeUtilities_isObject(obj[level])) {\n TreeUtilities_merge(true, obj[level], options); // #16329\n }\n else {\n obj[level] = options;\n }\n }\n return obj;\n }, {});\n }\n to = TreeUtilities_isNumber(params.to) ? params.to : 1;\n for (i = 0; i <= to; i++) {\n result[i] = TreeUtilities_merge({}, defaults, TreeUtilities_isObject(converted[i]) ? converted[i] : {});\n }\n }\n return result;\n}\n/**\n * @private\n * @todo Combine buildTree and buildNode with setTreeValues\n * @todo Remove logic from Treemap and make it utilize this mixin.\n */\nfunction setTreeValues(tree, options) {\n var before = options.before,\n idRoot = options.idRoot,\n mapIdToNode = options.mapIdToNode,\n nodeRoot = mapIdToNode[idRoot],\n levelIsConstant = (options.levelIsConstant !== false),\n points = options.points,\n point = points[tree.i],\n optionsPoint = point && point.options || {},\n children = [];\n var childrenTotal = 0;\n tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);\n tree.name = TreeUtilities_pick(point && point.name, '');\n tree.visible = (idRoot === tree.id ||\n options.visible === true);\n if (typeof before === 'function') {\n tree = before(tree, options);\n }\n // First give the children some values\n tree.children.forEach(function (child, i) {\n var newOptions = TreeUtilities_extend({},\n options);\n TreeUtilities_extend(newOptions, {\n index: i,\n siblings: tree.children.length,\n visible: tree.visible\n });\n child = setTreeValues(child, newOptions);\n children.push(child);\n if (child.visible) {\n childrenTotal += child.val;\n }\n });\n // Set the values\n var value = TreeUtilities_pick(optionsPoint.value,\n childrenTotal);\n tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);\n tree.children = children;\n tree.childrenTotal = childrenTotal;\n tree.isLeaf = tree.visible && !childrenTotal;\n tree.val = value;\n return tree;\n}\n/**\n * Update the rootId property on the series. Also makes sure that it is\n * accessible to exporting.\n *\n * @private\n *\n * @param {Object} series\n * The series to operate on.\n *\n * @return {string}\n * Returns the resulting rootId after update.\n */\nfunction updateRootId(series) {\n var rootId,\n options;\n if (TreeUtilities_isObject(series)) {\n // Get the series options.\n options = TreeUtilities_isObject(series.options) ? series.options : {};\n // Calculate the rootId.\n rootId = TreeUtilities_pick(series.rootNode, options.rootId, '');\n // Set rootId on series.userOptions to pick it up in exporting.\n if (TreeUtilities_isObject(series.userOptions)) {\n series.userOptions.rootId = rootId;\n }\n // Set rootId on series to pick it up on next update.\n series.rootNode = rootId;\n }\n return rootId;\n}\n/**\n * Get the node width, which relies on the plot width and the nodeDistance\n * option.\n *\n * @private\n */\nfunction getNodeWidth(series, columnCount) {\n var chart = series.chart,\n options = series.options,\n _a = options.nodeDistance,\n nodeDistance = _a === void 0 ? 0 : _a,\n _b = options.nodeWidth,\n nodeWidth = _b === void 0 ? 0 : _b,\n _c = chart.plotSizeX,\n plotSizeX = _c === void 0 ? 1 : _c;\n // Node width auto means they are evenly distributed along the width of\n // the plot area\n if (nodeWidth === 'auto') {\n if (typeof nodeDistance === 'string' && /%$/.test(nodeDistance)) {\n var fraction = parseFloat(nodeDistance) / 100,\n total = columnCount + fraction * (columnCount - 1);\n return plotSizeX / total;\n }\n var nDistance = Number(nodeDistance);\n return ((plotSizeX + nDistance) /\n (columnCount || 1)) - nDistance;\n }\n return TreeUtilities_relativeLength(nodeWidth, plotSizeX);\n}\n/* *\n *\n * Default Export\n *\n * */\nvar TreeUtilities = {\n getColor: getColor,\n getLevelOptions: getLevelOptions,\n getNodeWidth: getNodeWidth,\n setTreeValues: setTreeValues,\n updateRootId: updateRootId\n};\n/* harmony default export */ var Series_TreeUtilities = (TreeUtilities);\n\n;// ./code/es5/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js\n/* *\n *\n * (c) 2016 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\n\n\nvar TreeGridAxis_getLevelOptions = Series_TreeUtilities.getLevelOptions;\n\nvar TreeGridAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, TreeGridAxis_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, TreeGridAxis_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat, TreeGridAxis_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, TreeGridAxis_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, TreeGridAxis_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, TreeGridAxis_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, TreeGridAxis_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, TreeGridAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, TreeGridAxis_removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent, TreeGridAxis_wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n * Variables\n *\n * */\nvar TickConstructor;\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction getBreakFromNode(node, max) {\n var to = node.collapseEnd || 0;\n var from = node.collapseStart || 0;\n // In broken-axis, the axis.max is minimized until it is not within a\n // break. Therefore, if break.to is larger than axis.max, the axis.to\n // should not add the 0.5 axis.tickMarkOffset, to avoid adding a break\n // larger than axis.max.\n // TODO consider simplifying broken-axis and this might solve itself\n if (to >= max) {\n from -= 0.5;\n }\n return {\n from: from,\n to: to,\n showPoints: false\n };\n}\n/**\n * Creates a tree structure of the data, and the treegrid. Calculates\n * categories, and y-values of points based on the tree.\n *\n * @private\n * @function getTreeGridFromData\n *\n * @param {Array<Highcharts.GanttPointOptions>} data\n * All the data points to display in the axis.\n *\n * @param {boolean} uniqueNames\n * Whether or not the data node with the same name should share grid cell. If\n * true they do share cell. False by default.\n *\n * @param {number} numberOfSeries\n *\n * @return {Object}\n * Returns an object containing categories, mapOfIdToNode,\n * mapOfPosToGridNode, and tree.\n *\n * @todo There should be only one point per line.\n * @todo It should be optional to have one category per point, or merge\n * cells\n * @todo Add unit-tests.\n */\nfunction getTreeGridFromData(data, uniqueNames, numberOfSeries) {\n var categories = [],\n collapsedNodes = [],\n mapOfIdToNode = {},\n uniqueNamesEnabled = uniqueNames || false;\n var mapOfPosToGridNode = {},\n posIterator = -1;\n // Build the tree from the series data.\n var treeParams = {\n // After the children has been created.\n after: function (node) {\n var gridNode = mapOfPosToGridNode[node.pos];\n var height = 0,\n descendants = 0;\n gridNode.children.forEach(function (child) {\n descendants += (child.descendants || 0) + 1;\n height = Math.max((child.height || 0) + 1, height);\n });\n gridNode.descendants = descendants;\n gridNode.height = height;\n if (gridNode.collapsed) {\n collapsedNodes.push(gridNode);\n }\n },\n // Before the children has been created.\n before: function (node) {\n var data = TreeGridAxis_isObject(node.data,\n true) ?\n node.data :\n {},\n name = TreeGridAxis_isString(data.name) ? data.name : '',\n parentNode = mapOfIdToNode[node.parent],\n parentGridNode = (TreeGridAxis_isObject(parentNode,\n true) ?\n mapOfPosToGridNode[parentNode.pos] :\n null),\n hasSameName = function (x) {\n return x.name === name;\n };\n var gridNode,\n pos;\n // If not unique names, look for sibling node with the same name\n if (uniqueNamesEnabled &&\n TreeGridAxis_isObject(parentGridNode, true) &&\n !!(gridNode = TreeGridAxis_find(parentGridNode.children, hasSameName))) {\n // If there is a gridNode with the same name, reuse position\n pos = gridNode.pos;\n // Add data node to list of nodes in the grid node.\n gridNode.nodes.push(node);\n }\n else {\n // If it is a new grid node, increment position.\n pos = posIterator++;\n }\n // Add new grid node to map.\n if (!mapOfPosToGridNode[pos]) {\n mapOfPosToGridNode[pos] = gridNode = {\n depth: parentGridNode ? parentGridNode.depth + 1 : 0,\n name: name,\n id: data.id,\n nodes: [node],\n children: [],\n pos: pos\n };\n // If not root, then add name to categories.\n if (pos !== -1) {\n categories.push(name);\n }\n // Add name to list of children.\n if (TreeGridAxis_isObject(parentGridNode, true)) {\n parentGridNode.children.push(gridNode);\n }\n }\n // Add data node to map\n if (TreeGridAxis_isString(node.id)) {\n mapOfIdToNode[node.id] = node;\n }\n // If one of the points are collapsed, then start the grid node\n // in collapsed state.\n if (gridNode &&\n data.collapsed === true) {\n gridNode.collapsed = true;\n }\n // Assign pos to data node\n node.pos = pos;\n }\n };\n var updateYValuesAndTickPos = function (map,\n numberOfSeries) {\n var setValues = function (gridNode,\n start,\n result) {\n var nodes = gridNode.nodes,\n padding = 0.5;\n var end = start + (start === -1 ? 0 : numberOfSeries - 1);\n var diff = (end - start) / 2,\n pos = start + diff;\n nodes.forEach(function (node) {\n var data = node.data;\n if (TreeGridAxis_isObject(data, true)) {\n // Update point\n data.y = start + (data.seriesIndex || 0);\n // Remove the property once used\n delete data.seriesIndex;\n }\n node.pos = pos;\n });\n result[pos] = gridNode;\n gridNode.pos = pos;\n gridNode.tickmarkOffset = diff + padding;\n gridNode.collapseStart = end + padding;\n gridNode.children.forEach(function (child) {\n setValues(child, end + 1, result);\n end = (child.collapseEnd || 0) - padding;\n });\n // Set collapseEnd to the end of the last child node.\n gridNode.collapseEnd = end + padding;\n return result;\n };\n return setValues(map['-1'], -1, {});\n };\n // Create tree from data\n var tree = Gantt_Tree.getTree(data,\n treeParams);\n // Update y values of data, and set calculate tick positions.\n mapOfPosToGridNode = updateYValuesAndTickPos(mapOfPosToGridNode, numberOfSeries);\n // Return the resulting data.\n return {\n categories: categories,\n mapOfIdToNode: mapOfIdToNode,\n mapOfPosToGridNode: mapOfPosToGridNode,\n collapsedNodes: collapsedNodes,\n tree: tree\n };\n}\n/**\n * Builds the tree of categories and calculates its positions.\n * @private\n * @param {Object} e Event object\n * @param {Object} e.target The chart instance which the event was fired on.\n * @param {object[]} e.target.axes The axes of the chart.\n */\nfunction onBeforeRender(e) {\n var chart = e.target,\n axes = chart.axes;\n axes.filter(function (axis) { return axis.type === 'treegrid'; }).forEach(function (axis) {\n var options = axis.options || {},\n labelOptions = options.labels,\n uniqueNames = axis.uniqueNames,\n max = chart.time.parse(options.max), \n // Check whether any of series is rendering for the first\n // time, visibility has changed, or its data is dirty, and\n // only then update. #10570, #10580. Also check if\n // mapOfPosToGridNode exists. #10887\n isDirty = (!axis.treeGrid.mapOfPosToGridNode ||\n axis.series.some(function (series) {\n return !series.hasRendered ||\n series.isDirtyData ||\n series.isDirty;\n }));\n var numberOfSeries = 0,\n data,\n treeGrid;\n if (isDirty) {\n var seriesHasPrimitivePoints_1 = [];\n // Concatenate data from all series assigned to this axis.\n data = axis.series.reduce(function (arr, s) {\n var seriesData = (s.options.data || []),\n firstPoint = seriesData[0], \n // Check if the first point is a simple array of values.\n // If so we assume that this is the case for all points.\n foundPrimitivePoint = (Array.isArray(firstPoint) &&\n !firstPoint.find(function (value) { return (typeof value === 'object'); }));\n seriesHasPrimitivePoints_1.push(foundPrimitivePoint);\n if (s.visible) {\n // Push all data to array\n seriesData.forEach(function (pointOptions) {\n // For using keys, or when using primitive points,\n // rebuild the data structure\n if (foundPrimitivePoint ||\n (s.options.keys && s.options.keys.length)) {\n pointOptions = s.pointClass.prototype\n .optionsToObject\n .call({ series: s }, pointOptions);\n s.pointClass.setGanttPointAliases(pointOptions, chart);\n }\n if (TreeGridAxis_isObject(pointOptions, true)) {\n // Set series index on data. Removed again\n // after use.\n pointOptions.seriesIndex = (numberOfSeries);\n arr.push(pointOptions);\n }\n });\n // Increment series index\n if (uniqueNames === true) {\n numberOfSeries++;\n }\n }\n return arr;\n }, []);\n // If max is higher than set data - add a\n // dummy data to render categories #10779\n if (max && data.length < max) {\n for (var i = data.length; i <= max; i++) {\n data.push({\n // Use the zero-width character\n // to avoid conflict with uniqueNames\n name: i + '\\u200B'\n });\n }\n }\n // `setScale` is fired after all the series is initialized,\n // which is an ideal time to update the axis.categories.\n treeGrid = getTreeGridFromData(data, uniqueNames || false, (uniqueNames === true) ? numberOfSeries : 1);\n // Assign values to the axis.\n axis.categories = treeGrid.categories;\n axis.treeGrid.mapOfPosToGridNode = (treeGrid.mapOfPosToGridNode);\n axis.hasNames = true;\n axis.treeGrid.tree = treeGrid.tree;\n // Update yData now that we have calculated the y values\n axis.series.forEach(function (series, index) {\n var axisData = (series.options.data || []).map(function (d) {\n if (seriesHasPrimitivePoints_1[index] ||\n (TreeGridAxis_isArray(d) &&\n series.options.keys &&\n series.options.keys.length)) {\n // Get the axisData from the data array used to\n // build the treeGrid where has been modified\n data.forEach(function (point) {\n var toArray = TreeGridAxis_splat(d);\n if (toArray.indexOf(point.x || 0) >= 0 &&\n toArray.indexOf(point.x2 || 0) >= 0) {\n d = point;\n }\n });\n }\n return TreeGridAxis_isObject(d, true) ? TreeGridAxis_merge(d) : d;\n });\n // Avoid destroying points when series is not visible\n if (series.visible) {\n series.setData(axisData, false);\n }\n });\n // Calculate the label options for each level in the tree.\n axis.treeGrid.mapOptionsToLevel =\n TreeGridAxis_getLevelOptions({\n defaults: labelOptions,\n from: 1,\n levels: labelOptions && labelOptions.levels,\n to: axis.treeGrid.tree && axis.treeGrid.tree.height\n });\n // Setting initial collapsed nodes\n if (e.type === 'beforeRender') {\n axis.treeGrid.collapsedNodes = treeGrid.collapsedNodes;\n }\n }\n });\n}\n/**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.GridAxis#generateTick\n *\n * @param {Function} proceed\n * The original generateTick function.\n *\n * @param {number} pos\n * The tick position in axis values.\n */\nfunction wrapGenerateTick(proceed, pos) {\n var axis = this,\n mapOptionsToLevel = axis.treeGrid.mapOptionsToLevel || {},\n isTreeGrid = axis.type === 'treegrid',\n ticks = axis.ticks;\n var tick = ticks[pos],\n levelOptions,\n options,\n gridNode;\n if (isTreeGrid &&\n axis.treeGrid.mapOfPosToGridNode) {\n gridNode = axis.treeGrid.mapOfPosToGridNode[pos];\n levelOptions = mapOptionsToLevel[gridNode.depth];\n if (levelOptions) {\n options = {\n labels: levelOptions\n };\n }\n if (!tick &&\n TickConstructor) {\n ticks[pos] = tick =\n new TickConstructor(axis, pos, void 0, void 0, {\n category: gridNode.name,\n tickmarkOffset: gridNode.tickmarkOffset,\n options: options\n });\n }\n else {\n // Update labels depending on tick interval\n tick.parameters.category = gridNode.name;\n tick.options = options;\n tick.addLabel();\n }\n }\n else {\n proceed.apply(axis, Array.prototype.slice.call(arguments, 1));\n }\n}\n/**\n * @private\n */\nfunction wrapInit(proceed, chart, userOptions, coll) {\n var axis = this,\n isTreeGrid = userOptions.type === 'treegrid';\n if (!axis.treeGrid) {\n axis.treeGrid = new TreeGridAxisAdditions(axis);\n }\n // Set default and forced options for TreeGrid\n if (isTreeGrid) {\n // Add event for updating the categories of a treegrid.\n // NOTE Preferably these events should be set on the axis.\n TreeGridAxis_addEvent(chart, 'beforeRender', onBeforeRender);\n TreeGridAxis_addEvent(chart, 'beforeRedraw', onBeforeRender);\n // Add new collapsed nodes on addseries\n TreeGridAxis_addEvent(chart, 'addSeries', function (e) {\n if (e.options.data) {\n var treeGrid = getTreeGridFromData(e.options.data,\n userOptions.uniqueNames || false, 1);\n axis.treeGrid.collapsedNodes = (axis.treeGrid.collapsedNodes || []).concat(treeGrid.collapsedNodes);\n }\n });\n // Collapse all nodes in axis.treegrid.collapsednodes\n // where collapsed equals true.\n TreeGridAxis_addEvent(axis, 'foundExtremes', function () {\n if (axis.treeGrid.collapsedNodes) {\n axis.treeGrid.collapsedNodes.forEach(function (node) {\n var breaks = axis.treeGrid.collapse(node);\n if (axis.brokenAxis) {\n axis.brokenAxis.setBreaks(breaks, false);\n // Remove the node from the axis collapsedNodes\n if (axis.treeGrid.collapsedNodes) {\n axis.treeGrid.collapsedNodes = axis.treeGrid\n .collapsedNodes\n .filter(function (n) { return ((node.collapseStart !==\n n.collapseStart) ||\n node.collapseEnd !== n.collapseEnd); });\n }\n }\n });\n }\n });\n // If staticScale is not defined on the yAxis\n // and chart height is set, set axis.isDirty\n // to ensure collapsing works (#12012)\n TreeGridAxis_addEvent(axis, 'afterBreaks', function () {\n if (axis.coll === 'yAxis' &&\n !axis.staticScale &&\n axis.chart.options.chart.height) {\n axis.isDirty = true;\n }\n });\n userOptions = TreeGridAxis_merge({\n // Default options\n grid: {\n enabled: true\n },\n // TODO: add support for align in treegrid.\n labels: {\n align: 'left',\n /**\n * Set options on specific levels in a tree grid axis. Takes\n * precedence over labels options.\n *\n * @sample {gantt} gantt/treegrid-axis/labels-levels\n * Levels on TreeGrid Labels\n *\n * @type {Array<*>}\n * @product gantt\n * @apioption yAxis.labels.levels\n *\n * @private\n */\n levels: [{\n /**\n * Specify the level which the options within this object\n * applies to.\n *\n * @type {number}\n * @product gantt\n * @apioption yAxis.labels.levels.level\n *\n * @private\n */\n level: void 0\n }, {\n level: 1,\n /**\n * @type {Highcharts.CSSObject}\n * @product gantt\n * @apioption yAxis.labels.levels.style\n *\n * @private\n */\n style: {\n /** @ignore-option */\n fontWeight: 'bold'\n }\n }],\n /**\n * The symbol for the collapse and expand icon in a\n * treegrid.\n *\n * @product gantt\n * @optionparent yAxis.labels.symbol\n *\n * @private\n */\n symbol: {\n /**\n * The symbol type. Points to a definition function in\n * the `Highcharts.Renderer.symbols` collection.\n *\n * @type {Highcharts.SymbolKeyValue}\n *\n * @private\n */\n type: 'triangle',\n x: -5,\n y: -5,\n height: 10,\n width: 10\n }\n },\n uniqueNames: false\n }, userOptions, {\n // Forced options\n reversed: true\n });\n }\n // Now apply the original function with the original arguments, which are\n // sliced off this function's arguments\n proceed.apply(axis, [chart, userOptions, coll]);\n if (isTreeGrid) {\n axis.hasNames = true;\n axis.options.showLastLabel = true;\n }\n}\n/**\n * Set the tick positions, tickInterval, axis min and max.\n *\n * @private\n * @function Highcharts.GridAxis#setTickInterval\n *\n * @param {Function} proceed\n * The original setTickInterval function.\n */\nfunction wrapSetTickInterval(proceed) {\n var _a,\n _b,\n _c,\n _d,\n _e;\n var axis = this,\n options = axis.options,\n time = axis.chart.time,\n linkedParent = typeof options.linkedTo === 'number' ?\n (_a = this.chart[axis.coll]) === null || _a === void 0 ? void 0 : _a[options.linkedTo] :\n void 0,\n isTreeGrid = axis.type === 'treegrid';\n if (isTreeGrid) {\n axis.min = (_c = (_b = axis.userMin) !== null && _b !== void 0 ? _b : time.parse(options.min)) !== null && _c !== void 0 ? _c : axis.dataMin;\n axis.max = (_e = (_d = axis.userMax) !== null && _d !== void 0 ? _d : time.parse(options.max)) !== null && _e !== void 0 ? _e : axis.dataMax;\n TreeGridAxis_fireEvent(axis, 'foundExtremes');\n // `setAxisTranslation` modifies the min and max according to axis\n // breaks.\n axis.setAxisTranslation();\n axis.tickInterval = 1;\n axis.tickmarkOffset = 0.5;\n axis.tickPositions = axis.treeGrid.mapOfPosToGridNode ?\n axis.treeGrid.getTickPositions() :\n [];\n if (linkedParent) {\n var linkedParentExtremes = linkedParent.getExtremes();\n axis.min = TreeGridAxis_pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = TreeGridAxis_pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n axis.tickPositions = linkedParent.tickPositions;\n }\n axis.linkedParent = linkedParent;\n }\n else {\n proceed.apply(axis, Array.prototype.slice.call(arguments, 1));\n }\n}\n/**\n * Wrap axis redraw to remove TreeGrid events from ticks\n *\n * @private\n * @function Highcharts.GridAxis#redraw\n *\n * @param {Function} proceed\n * The original setTickInterval function.\n */\nfunction wrapRedraw(proceed) {\n var axis = this,\n isTreeGrid = this.type === 'treegrid';\n if (isTreeGrid && axis.visible) {\n axis.tickPositions.forEach(function (pos) {\n var tick = axis.ticks[pos];\n if (tick.label && tick.label.attachedTreeGridEvents) {\n TreeGridAxis_removeEvent(tick.label.element);\n tick.label.attachedTreeGridEvents = false;\n }\n });\n }\n proceed.apply(axis, Array.prototype.slice.call(arguments, 1));\n}\n/* *\n *\n * Classes\n *\n * */\n/**\n * @private\n * @class\n */\nvar TreeGridAxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function TreeGridAxisAdditions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n TreeGridAxisAdditions.compose = function (AxisClass, ChartClass, SeriesClass, TickClass) {\n if (!AxisClass.keepProps.includes('treeGrid')) {\n var axisProps = AxisClass.prototype;\n AxisClass.keepProps.push('treeGrid');\n TreeGridAxis_wrap(axisProps, 'generateTick', wrapGenerateTick);\n TreeGridAxis_wrap(axisProps, 'init', wrapInit);\n TreeGridAxis_wrap(axisProps, 'setTickInterval', wrapSetTickInterval);\n TreeGridAxis_wrap(axisProps, 'redraw', wrapRedraw);\n // Make utility functions available for testing.\n axisProps.utils = {\n getNode: Gantt_Tree.getNode\n };\n if (!TickConstructor) {\n TickConstructor = TickClass;\n }\n }\n Axis_GridAxis.compose(AxisClass, ChartClass, TickClass);\n Axis_BrokenAxis.compose(AxisClass, SeriesClass);\n TreeGridTick.compose(TickClass);\n return AxisClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the collapse status.\n *\n * @private\n *\n * @param {Highcharts.Axis} axis\n * The axis to check against.\n *\n * @param {Highcharts.GridNode} node\n * The node to collapse.\n */\n TreeGridAxisAdditions.prototype.setCollapsedStatus = function (node) {\n var axis = this.axis,\n chart = axis.chart;\n axis.series.forEach(function (series) {\n var data = series.options.data;\n if (node.id && data) {\n var point = chart.get(node.id),\n dataPoint = data[series.data.indexOf(point)];\n if (point && dataPoint) {\n point.collapsed = node.collapsed;\n dataPoint.collapsed = node.collapsed;\n }\n }\n });\n };\n /**\n * Calculates the new axis breaks to collapse a node.\n *\n * @private\n *\n * @param {Highcharts.Axis} axis\n * The axis to check against.\n *\n * @param {Highcharts.GridNode} node\n * The node to collapse.\n *\n * @param {number} pos\n * The tick position to collapse.\n *\n * @return {Array<object>}\n * Returns an array of the new breaks for the axis.\n */\n TreeGridAxisAdditions.prototype.collapse = function (node) {\n var axis = this.axis,\n breaks = (axis.options.breaks || []),\n obj = getBreakFromNode(node,\n axis.max);\n breaks.push(obj);\n // Change the collapsed flag #13838\n node.collapsed = true;\n axis.treeGrid.setCollapsedStatus(node);\n return breaks;\n };\n /**\n * Calculates the new axis breaks to expand a node.\n *\n * @private\n *\n * @param {Highcharts.Axis} axis\n * The axis to check against.\n *\n * @param {Highcharts.GridNode} node\n * The node to expand.\n *\n * @param {number} pos\n * The tick position to expand.\n *\n * @return {Array<object>}\n * Returns an array of the new breaks for the axis.\n */\n TreeGridAxisAdditions.prototype.expand = function (node) {\n var axis = this.axis,\n breaks = (axis.options.breaks || []),\n obj = getBreakFromNode(node,\n axis.max);\n // Change the collapsed flag #13838\n node.collapsed = false;\n axis.treeGrid.setCollapsedStatus(node);\n // Remove the break from the axis breaks array.\n return breaks.reduce(function (arr, b) {\n if (b.to !== obj.to || b.from !== obj.from) {\n arr.push(b);\n }\n return arr;\n }, []);\n };\n /**\n * Creates a list of positions for the ticks on the axis. Filters out\n * positions that are outside min and max, or is inside an axis break.\n *\n * @private\n *\n * @return {Array<number>}\n * List of positions.\n */\n TreeGridAxisAdditions.prototype.getTickPositions = function () {\n var axis = this.axis, roundedMin = Math.floor(axis.min / axis.tickInterval) * axis.tickInterval, roundedMax = Math.ceil(axis.max / axis.tickInterval) * axis.tickInterval;\n return Object.keys(axis.treeGrid.mapOfPosToGridNode || {}).reduce(function (arr, key) {\n var pos = +key;\n if (pos >= roundedMin &&\n pos <= roundedMax &&\n !(axis.brokenAxis && axis.brokenAxis.isInAnyBreak(pos))) {\n arr.push(pos);\n }\n return arr;\n }, []);\n };\n /**\n * Check if a node is collapsed.\n *\n * @private\n *\n * @param {Highcharts.Axis} axis\n * The axis to check against.\n *\n * @param {Object} node\n * The node to check if is collapsed.\n *\n * @param {number} pos\n * The tick position to collapse.\n *\n * @return {boolean}\n * Returns true if collapsed, false if expanded.\n */\n TreeGridAxisAdditions.prototype.isCollapsed = function (node) {\n var axis = this.axis,\n breaks = (axis.options.breaks || []),\n obj = getBreakFromNode(node,\n axis.max);\n return breaks.some(function (b) {\n return b.from === obj.from && b.to === obj.to;\n });\n };\n /**\n * Calculates the new axis breaks after toggling the collapse/expand\n * state of a node. If it is collapsed it will be expanded, and if it is\n * expanded it will be collapsed.\n *\n * @private\n *\n * @param {Highcharts.Axis} axis\n * The axis to check against.\n *\n * @param {Highcharts.GridNode} node\n * The node to toggle.\n *\n * @return {Array<object>}\n * Returns an array of the new breaks for the axis.\n */\n TreeGridAxisAdditions.prototype.toggleCollapse = function (node) {\n return (this.isCollapsed(node) ?\n this.expand(node) :\n this.collapse(node));\n };\n return TreeGridAxisAdditions;\n}());\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var TreeGridAxis = (TreeGridAxisAdditions);\n\n;// ./code/es5/es-modules/Series/Gantt/GanttSeries.js\n/* *\n *\n * (c) 2016-2024 Highsoft AS\n *\n * Author: Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar GanttSeries_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 Series = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, GanttSeries_XRangeSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.xrange;\n\n\n\nvar GanttSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, GanttSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, GanttSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.gantt\n *\n * @augments Highcharts.Series\n */\nvar GanttSeries = /** @class */ (function (_super) {\n GanttSeries_extends(GanttSeries, _super);\n function GanttSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n GanttSeries.compose = function (AxisClass, ChartClass, SeriesClass, TickClass) {\n GanttSeries_XRangeSeries.compose(AxisClass);\n if (!ChartClass) {\n return;\n }\n Extensions_StaticScale.compose(AxisClass, ChartClass);\n if (!SeriesClass) {\n return;\n }\n Gantt_Pathfinder.compose(ChartClass, SeriesClass.prototype.pointClass);\n if (!TickClass) {\n return;\n }\n TreeGridAxis.compose(AxisClass, ChartClass, SeriesClass, TickClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draws a single point in the series.\n *\n * This override draws the point as a diamond if point.options.milestone\n * is true, and uses the original drawPoint() if it is false or not set.\n *\n * @requires highcharts-gantt\n *\n * @private\n * @function Highcharts.seriesTypes.gantt#drawPoint\n *\n * @param {Highcharts.Point} point\n * An instance of Point in the series\n *\n * @param {\"animate\"|\"attr\"} verb\n * 'animate' (animates changes) or 'attr' (sets options)\n */\n GanttSeries.prototype.drawPoint = function (point, verb) {\n var series = this,\n seriesOpts = series.options,\n renderer = series.chart.renderer,\n shapeArgs = point.shapeArgs,\n plotY = point.plotY,\n state = point.selected && 'select',\n cutOff = seriesOpts.stacking && !seriesOpts.borderRadius;\n var graphic = point.graphic,\n diamondShape;\n if (point.options.milestone) {\n if (GanttSeries_isNumber(plotY) &&\n point.y !== null &&\n point.visible !== false) {\n diamondShape = renderer.symbols.diamond(shapeArgs.x || 0, shapeArgs.y || 0, shapeArgs.width || 0, shapeArgs.height || 0);\n if (graphic) {\n graphic[verb]({\n d: diamondShape\n });\n }\n else {\n point.graphic = graphic = renderer.path(diamondShape)\n .addClass(point.getClassName(), true)\n .add(point.group || series.group);\n }\n // Presentational\n if (!series.chart.styledMode) {\n point.graphic\n .attr(series.pointAttribs(point, state))\n .shadow(seriesOpts.shadow, null, cutOff);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n else {\n _super.prototype.drawPoint.call(this, point, verb);\n }\n };\n /**\n * Handle milestones, as they have no x2.\n * @private\n */\n GanttSeries.prototype.translatePoint = function (point) {\n var shapeArgs,\n size;\n _super.prototype.translatePoint.call(this, point);\n if (point.options.milestone) {\n shapeArgs = point.shapeArgs;\n size = shapeArgs.height || 0;\n point.shapeArgs = {\n x: (shapeArgs.x || 0) - (size / 2),\n y: shapeArgs.y,\n width: size,\n height: size\n };\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n GanttSeries.defaultOptions = GanttSeries_merge(GanttSeries_XRangeSeries.defaultOptions, Gantt_GanttSeriesDefaults);\n return GanttSeries;\n}(GanttSeries_XRangeSeries));\nGanttSeries_extend(GanttSeries.prototype, {\n pointArrayMap: ['start', 'end', 'y'],\n pointClass: Gantt_GanttPoint,\n setData: Series.prototype.setData\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('gantt', GanttSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Gantt_GanttSeries = (GanttSeries);\n\n;// ./code/es5/es-modules/masters/modules/gantt.src.js\n/**\n * @license Highcharts Gantt JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/gantt\n * @requires highcharts\n *\n * Gantt series\n *\n * (c) 2016-2024 Lars A. V. Cabrera\n *\n * License: www.highcharts.com/license\n */\n\n\n\n\n\n\n\n\n\n\n\n// Series\n\n\nvar gantt_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n// Classes\ngantt_src_G.Connection = gantt_src_G.Connection || Gantt_Connection;\ngantt_src_G.GanttChart = gantt_src_G.GanttChart || Chart_GanttChart;\ngantt_src_G.Navigator = gantt_src_G.Navigator || Navigator_Navigator;\ngantt_src_G.RangeSelector = gantt_src_G.RangeSelector || RangeSelector_RangeSelector;\ngantt_src_G.Scrollbar = gantt_src_G.Scrollbar || Scrollbar_Scrollbar;\n// Functions\ngantt_src_G.ganttChart = gantt_src_G.GanttChart.ganttChart;\n// Compositions\nExtensions_ArrowSymbols.compose(gantt_src_G.SVGRenderer);\nExtensions_CurrentDateIndication.compose(gantt_src_G.Axis, gantt_src_G.PlotLineOrBand);\nGantt_GanttSeries.compose(gantt_src_G.Axis, gantt_src_G.Chart, gantt_src_G.Series, gantt_src_G.Tick);\ngantt_src_G.Navigator.compose(gantt_src_G.Chart, gantt_src_G.Axis, gantt_src_G.Series);\ngantt_src_G.RangeSelector.compose(gantt_src_G.Axis, gantt_src_G.Chart);\ngantt_src_G.Scrollbar.compose(gantt_src_G.Axis);\n/* harmony default export */ var gantt_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__960__","__WEBPACK_EXTERNAL_MODULE__532__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__608__","__WEBPACK_EXTERNAL_MODULE__540__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__260__","__WEBPACK_EXTERNAL_MODULE__184__","extendStatics","GanttChart","GridAxisSide","NavigatorConstructor","ScrollbarAxis","RangeSelectorConstructor","OrdinalAxis","ConnectionComposition","BrokenAxis","TickConstructor","__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__","gantt_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","arrow","x","y","w","h","arrowHalf","triangleLeft","triangleLeftHalf","SVGRendererClass","symbols","defined","error","merge","objectEach","deg2rad","max","Math","min","Connection","from","to","options","init","fromPoint","toPoint","chart","series","pathfinder","renderPath","path","attribs","styledMode","anim","pathGraphic","connection","graphics","group","renderer","g","addClass","attr","zIndex","add","seriesGroup","translate","plotLeft","plotTop","opacity","animate","addMarker","type","markerVector","radians","rotation","box","width","height","pathVector","segment","point","anchor","getPathfinderAnchorPoint","enabled","length","getRadiansToVector","getMarkerVector","radius","rotationOriginX","rotationOriginY","symbol","colorIndex","fill","color","stroke","lineColor","lineWidth","animation","getPath","algorithm","algorithms","chartObstacles","obstacles","requiresObstacles","getChartObstacles","connectors","algorithmMargin","chartObstacleMetrics","getObstacleMetrics","startMarker","endMarker","lineObstacles","obstacleMetrics","hardBounds","xMin","xMax","plotWidth","yMin","yMax","plotHeight","obstacleOptions","margin","startDirectionX","getAlgorithmStartDirection","render","dashStyle","dashstyle","marker","ceil","pathResult","concat","destroy","val","composed","addEvent","CurrentDateIndication_merge","pushUnique","wrap","defaultOptions","label","format","formatter","value","axis","time","dateFormat","style","fontSize","onAxisAfterSetOptions","cdiOptions","currentDateIndicator","plotLineOptions","Date","now","className","plotLines","push","onPlotLineOrBandRender","text","getLabelText","wrapPlotLineOrBandGetLabelText","defaultMethod","defaultLabelOptions","indexOf","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default","__extends","b","setPrototypeOf","__proto__","Array","p","__","constructor","create","GanttChart_defaultOptions","isArray","GanttChart_merge","splat","_super","apply","arguments","userOptions","callback","defaultLinkedTo","xAxisOptions","xAxis","yAxisOptions","yAxis","title","legend","navigator","isGantt","map","i","_a","_b","_c","grid","borderColor","opposite","linkedTo","staticScale","reversed","categories","ganttChart","c","Chart_GanttChart","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default","isTouchDevice","ChartNavigatorComposition_addEvent","ChartNavigatorComposition_merge","pick","composedMembers","onChartAfterAddSeries","setBaseSeries","onChartAfterSetChartSize","legendOptions","scrollbarHeight","scrollButtonSize","inverted","left","chartWidth","spacing","top","navigatorOptions","chartHeight","scrollbar","rangeSelector","extraBottomMargin","getHeight","verticalAlign","layout","floating","legendHeight","titleOffset","setAxisSize","onChartAfterUpdate","event","scroller","redraw","onChartBeforeRender","onChartBeforeShowResetZoom","chartOptions","zooming","pinchType","onChartCallback","extremes","getExtremes","onChartUpdate","e","scrollbarOptions","ChartClass","NavigatorClass","chartProto","callbacks","NavigatorAxisComposition_isTouchDevice","NavigatorAxisComposition_addEvent","correctFloat","NavigatorAxisComposition_defined","isNumber","NavigatorAxisComposition_pick","onAxisInit","navigatorAxis","NavigatorAxisAdditions","onAxisSetExtremes","zoomed","zoomType","isXAxis","trigger","range","previousZoom","preventDefault","compose","AxisClass","keepProps","includes","toFixedRange","pxMin","pxMax","fixedMin","fixedMax","halfPointRange","pointRange","newMin","horiz","newMax","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","parse","seriesTypes","NavigatorDefaults","maskInside","handles","borderRadius","backgroundColor","maskFill","setOpacity","outlineColor","outlineWidth","areaspline","fillOpacity","compare","sonification","dataGrouping","approximation","groupPixelWidth","firstAnchor","lastAnchor","units","dataLabels","id","threshold","tickLength","gridLineColor","gridLineWidth","tickPixelInterval","labels","align","textOutline","crosshair","startOnTick","endOnTick","minPadding","maxPadding","tickWidth","__spreadArray","pack","ar","l","slice","relativeLength","Navigator_NavigatorSymbols","_x","_y","r","halfWidth","markerPosition","highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_","highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default","StockUtilities_defined","setOptions","NavigatorComposition_composed","getRendererType","NavigatorComposition_setFixedRange","Utilities_StockUtilities","setFixedRange","dataMax","dataMin","fixedRange","NavigatorComposition_addEvent","extend","NavigatorComposition_pushUnique","onSeriesAfterUpdate","isInternal","SeriesClass","NavigatorAxisComposition","ScrollbarAxis_composed","ScrollbarAxis_addEvent","ScrollbarAxis_defined","ScrollbarAxis_pick","ScrollbarAxis_pushUnique","Scrollbar","axisMin","axisMax","scrollMin","Infinity","scrollMax","onAxisAfterGetOffset","index","scrollbarsOffsets","axisOffset","size","onAxisAfterInit","vertical","unitedMin","unitedMax","shouldUpdateExtremes","DOMType","setExtremes","setRange","onAxisAfterRender","offsetsIndex","offset","axisTitleMargin","axisMargin","position","xPosition","isNaN","interval","ScrollbarClass","Axis_ScrollbarAxis","Scrollbar_ScrollbarDefaults","barBorderRadius","buttonBorderRadius","buttonsEnabled","liveRedraw","minWidth","step","barBackgroundColor","barBorderWidth","barBorderColor","buttonArrowColor","buttonBackgroundColor","buttonBorderColor","buttonBorderWidth","rifleColor","trackBackgroundColor","trackBorderColor","trackBorderRadius","trackBorderWidth","Scrollbar_defaultOptions","Scrollbar_addEvent","Scrollbar_correctFloat","crisp","Scrollbar_defined","destroyObjectProperties","fireEvent","Scrollbar_merge","Scrollbar_pick","removeEvent","_events","chartX","chartY","scrollbarButtons","scrollbarLeft","scrollbarStrokeWidth","scrollbarTop","swapXY","forEach","seg","temp","len","addEvents","buttonsOrder","buttons","bar","scrollbarGroup","element","track","mouseDownHandler","bind","mouseMoveHandler","mouseUpHandler","buttonToMinClick","buttonToMaxClick","trackClick","ownerDocument","args","updatePosition","DOMEvent","cursorToScrollbarPosition","normalizedEvent","minWidthDifference","calculatedWidth","xOffset","barWidth","yOffset","removeEvents","drawScrollbarButton","rect","strokeWidth","pointer","normalize","mousePosition","initPositions","grabbedCenter","change","direction","touches","chartPosition","hasDragged","method","rendered","show","translateX","translateY","hide","scrollbarRifles","fromPX","newSize","fullWidth","toPX","newPos","floor","newRiflesPos","showFull","eventType","svg","boosted","update","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default","__assign","assign","t","s","Navigator_defaultOptions","Navigator_isTouchDevice","Navigator_addEvent","clamp","Navigator_correctFloat","Navigator_defined","Navigator_destroyObjectProperties","erase","Navigator_extend","find","Navigator_fireEvent","Navigator_isArray","Navigator_isNumber","Navigator_merge","Navigator_pick","Navigator_removeEvent","Navigator_splat","numExt","extreme","_i","numbers","filter","Navigator","isDirty","Navigator_ChartNavigatorComposition","Navigator_NavigatorComposition","drawHandle","verb","round","parseInt","drawOutline","zoomedMin","zoomedMax","verticalMin","outline","halfOutline","outlineCorrection","navigatorSize","navigatorTop","lineTop","lineBtm","drawMasks","navigatorHeight","shades","shade","renderElements","mouseCursor","cursor","navigatorGroup","visibility","hasMask","css","handlesOptions_1","height_1","width_1","symbolName","symbolUrl","isImg","symbolFn","addMouseEvents","_d","_this","invertedUpdate","setOpposite","navigatorEnabled","adaptToUpdatedData","baseSeries","updatedDataHandler","eventsToUnbind","offsets","getXAxisOffsets","navigatorWidth","scrollbarXAxis","fake","minRange","maxRange","toPixels","abs","toValue","currentRange","grabbedLeft","grabbedRight","fixedWidth","container","onMouseMove","onMouseUp","getPartsEvents","renderTo","modifyNavigatorAxisExtremes","eventName","events","name","navigatorItem","shadesMousedown","ext","navigatorPosition","dragOffset","reversedExtremes","getUnionExtremes","eventArguments","handlesMousedown","baseXAxis","reverse","otherHandlePos","fixedExtreme","pageX","setTimeout","unionExtremes","triggerOp","keys","unbind","removeBaseSeriesEvents","modifyBaseAxisExtremes","scrollbarEnabled","xAxisIndex","yAxisIndex","baseXaxis","isDirtyBox","breaks","ordinal","overscroll","keepOrdinalPadding","zoomEnabled","alignTicks","data","updateNavigatorSeries","unbindRedraw","scrollTrackWidth","valueRange","addBaseSeriesEvents","addChartEvents","Boolean","returnFalseOnNoBaseSeries","ret","baseAxis","navAxis","navAxisOptions","baseAxisOptions","baseSeriesOptions","showInNavigator","baseOptions","mergedNavSeriesOptions","baseNavigatorOptions","navSeriesMixin","enableMouseTracking","padXAxis","showInLegend","stacking","states","inactive","navigatorSeries","navSeries","base","chartNavigatorSeriesOptions","linkedNavSeries","userNavOptions","visible","plotOptions","navigatorSeriesData","hasNavigatorData","initSeries","setSortedData","userSeriesOptions","colors","setVisible","remove","getBaseSeriesMin","currentSeriesMin","reduce","getColumn","baseExtremes","baseMin","baseMax","baseDataMin","baseDataMax","stickToMin","stickToMax","convertOverscroll","hasSetExtremes","eventArgs","xData","Number","MAX_VALUE","userMin","userMax","shouldStickToMax","shouldStickToMin","pointStart","setData","xDataMin","marginName","axes","coll","RangeSelector_RangeSelectorDefaults","lang","rangeSelectorZoom","rangeSelectorFrom","rangeSelectorTo","allButtonsEnabled","count","buttonSpacing","dropdown","buttonTheme","padding","inputBoxBorderColor","inputBoxHeight","inputBoxWidth","inputDateFormat","inputDateParser","inputEditDateFormat","inputEnabled","inputPosition","inputSpacing","selected","buttonPosition","inputStyle","labelStyle","RangeSelectorComposition_defaultOptions","RangeSelectorComposition_composed","RangeSelectorComposition_addEvent","RangeSelectorComposition_defined","RangeSelectorComposition_extend","RangeSelectorComposition_isNumber","RangeSelectorComposition_merge","RangeSelectorComposition_pick","RangeSelectorComposition_pushUnique","chartDestroyEvents","axisMinFromRange","rangeOptions","getTrueRange","original","toParts","modified","makeTime","MIN_VALUE","_offsetMin","updateRangeSelectorButtons","redrawElements","createRangeSelector","RangeSelectorComposition_onChartBeforeRender","deferredYTDClick","clickButton","extraTopMargin","redrawRangeSelector","alignTo","display","spacingBox","placed","onChartDestroy","iEnd","splice","onChartGetMargins","rangeSelectorHeight","marginBottom","RangeSelectorComposition_onChartUpdate","optionsRangeSelector","extraBottomMarginWas","extraTopMarginWas","RangeSelectorClass","minFromRange","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","DataTableCore_fireEvent","DataTableCore_isArray","DataTableCore_objectEach","uniqueKey","DataTableCore","autoId","columns","rowCount","versionTag","column","columnName","applyRowCount","asReference","getColumns","columnNames","getRow","rowIndex","setColumn","eventDetail","setColumns","silent","setRow","row","insert","indexRowCount","cellValue","addColumns","OrdinalAxis_assign","OrdinalAxis_addEvent","OrdinalAxis_correctFloat","OrdinalAxis_defined","OrdinalAxis_error","OrdinalAxis_isNumber","OrdinalAxis_pick","timeUnits","isString","getTimeTicks","normalizedInterval","startOfWeek","positions","closestDistance","findHigherRanks","end","segmentPositions","hasCrossedHigherRank","info","outsideMax","higherRanks","tickPixelIntervalOption","segmentStarts","start","groupPositions","lastGroupPosition","posLength","shift","unitRange","hour","length_1","translatedArr","distances","itemToRemove","translated","lastTranslated","medianDistance","distance","sort","index2val","ordinalPositions","lin2val","localMin","old","localA","transA","getExtendedPositions","pixelVal","minPixelPadding","getIndexOfPoint","mantissa","leftNeighbour","rightNeighbour","getIndexInArray","Additions","findIndexOf","percent","onAxisFoundExtremes","originalOrdinalRange","onAxisAfterSetScale","isOrdinal","onAxisInitialAxisTranslation","beforeSetTickPositions","tickInterval","postProcessTickInterval","onChartPan","originalEvent","panning","runBase","mouseDownX","hoverPoints","closestPointRange","overscrollPointsRange","movedUnits","translationSlope","slope","extendedOrdinalPositions","extendedAxis","index2val_1","val2lin_1","val2lin","trimmedRange","setState","test","onSeriesUpdatedData","toIndex","ordinalIndex","ordinalLength","length_2","originalPositionsReference","diff","approximateIndexOffset","axisProto","ordinal2lin","uniqueOrdinalPositions","dist","minIndex","maxIndex","hasBreaks","brokenAxis","useOrdinal","adjustOrdinalExtremesPoints","isBoosted","distanceBetweenPoint_1","reserveSpace","takeOrdinalPosition","unshift","pop","forceOrdinal","getOverscrollPositions","groupIntervalFactor","sortedArray","indirectSearch","middle","withOverscroll","fakeAxis","k","grouping","currentDataGrouping","unitName","fakeSeries","applyGrouping","getGroupPixelWidth","getGroupIntervalFactor","destroyGroupedData","noop","getProcessedData","dataTable","forced","processData","hasExtremesChanged","basePointRange","median","processedXData","ordinalArray","minX","indexOfMin","extraRange","ordinalSlope","calculateOverscroll","overscrollPercentage","overscrollValue","pixelToPercent","limitedOverscrollValue","Axis_OrdinalAxis","RangeSelector_defaultOptions","RangeSelector_addEvent","createElement","RangeSelector_css","RangeSelector_defined","RangeSelector_destroyObjectProperties","diffObjects","discardElement","RangeSelector_extend","RangeSelector_fireEvent","RangeSelector_isNumber","RangeSelector_isString","RangeSelector_merge","RangeSelector_objectEach","RangeSelector_pick","RangeSelector_splat","preferredInputType","hasTimeKey","char","RegExp","fractionalSecondDigits","date","some","dateStyle","day","month","year","timeStyle","minute","second","RangeSelector","buttonOptions","defaultButtons","initialButtonGroupWidth","maxButtonWidth","buttonWidth","button","bBox","getBBox","RangeSelector_RangeSelectorComposition","baseXAxisOptions","rangeMin","ctx","ytdExtremes","_range","addOffsetMin","setSelected","forcedDataGrouping","setDataGrouping","frozenStates","preserveDataGrouping","hasData","getYTDExtremes","_offsetMax","selectedIndex","rangeSelectorButton","axisRangeUpdateEvent_1","selectedOption","blurInputs","minInput","maxInput","blur","computeButtonRange","createElements","updateButtonStates","dropdownLabel","actualRange","hasNoData","hasVisibleSeries","ytdMin","ytdMax","buttonStates","selectedExists","isSelectedTooGreat","offsetRange","isSelected","isTooGreatRange","isTooSmallRange","isYTDButNotSelected","isSameRange","prevOrdinalPosition","nextOrdinalPosition","disable","select","state","disabled","bbox","fixedTimes","millisecond","week","offsetMin","offsetMax","getInputValue","input","defaultInputDateParser","timezone","setInputValue","inputTime","dateBox","minDateBox","maxDateBox","setAttribute","hcTimeAttr","getAttribute","updatedTime","previousTime","inputTypeFormats","setInputExtremes","showInput","inputGroup","isTextInput","_e","_f","border","offsetWidth","offsetHeight","hideInput","inputDate","useUTC","drawInput","div","chartStyle","isMin","updateExtremes","chartAxis","currentExtreme","on","focus","boxShadow","textAlign","fontFamily","onfocus","onblur","doc","activeElement","keyDown","onchange","onkeypress","keyCode","onkeydown","onkeyup","getPosition","buttonTop","inputTop","inputsZIndex","renderButtons","parentNode","insertBefore","createInputs","minElems","minLabel","maxElems","maxLabel","x_1","zoomText","alignElements","buttonGroup","userButtonTheme","paddingLeft","paddingRight","hover","mouseOver","isMS","mouseOut","textContent","textStr","createButtons","createButton","callDefaultEvent","buttonEvents","click","isActive","navButtonOptions","exporting","navigation","getXOffsetForExportButton","rightAligned","titleCollision","positionButtons","xOffsetForExportButton_1","alignButtonGroup","hasLoaded","xOffsetForExportButton","handleCollision","alignTranslateY","alignAttr","groupHeight","marginTop","_g","_h","isCollapsed","newButtonsOptions","btnLength","_j","btn","dropdownTranslateX","hasVisibleDropdown","buttonLeft","moveInputsDown","collapseButtons","expandButtons","showDropdown","hideDropdown","rangeSelectorGroup","yPosition","buttonPositionY","inputPositionY","minPosition","subtitle","rSelector","window","HTMLElement","prevSeg","nextSeg","x1","y1","x2","y2","directionX","directionY","PathfinderAlgorithms_pick","PathfinderAlgorithms_min","PathfinderAlgorithms_max","findLastObstacleBefore","startIx","cmp","right","findObstacleFromPoint","obstacle","pathFromSegments","segments","limitObstacleToBounds","bounds","simpleConnect","endSegment","startObstacle","waypoint","useMax","endPoint","startObstacleIx","endObstacleIx","dir","copyFromPoint","fromKey","toKey","getMeOut","prevWaypoint","waypoint2","Series_PathUtilities","fastAvoid","dirIsX","extractedEndPoint","endSegments","metrics","softMinX","maxWidth","softMaxX","softMinY","maxHeight","softMaxY","forceObstacleBreak","pivotPoint","directionIsX","firstPoint","lastPoint","highestPoint","lowestPoint","searchDirection","getDodgeDirection","softBounds","soft","hard","toPointMax","toPointMin","maxOutOfSoftBounds","minOutOfSoftBounds","maxOutOfHardBounds","minOutOfHardBounds","minDistance","maxDistance","minPivot","maxPivot","clearPathTo","pivot","waypointUseMax","envelopingObstacle","secondEnvelopingObstacle","envelopWaypoint","obstacleMargin","ConnectorsDefaults","inside","PathfinderComposition_setOptions","PathfinderComposition_defined","PathfinderComposition_error","PathfinderComposition_merge","getPointBB","shapeArgs","bb","graphic","plotX","plotY","pointGetPathfinderAnchorPoint","markerOptions","pointGetRadiansToVector","v1","v2","atan2","pointGetMarkerVector","markerRadius","twoPI","PI","rectWidth","rectHeight","rAtan","rectHalfWidth","rectHalfHeight","rectHorizontalCenter","rectVerticalCenter","edgePoint","theta","tanTheta","leftOrRightRegion","xFactor","yFactor","tan","cos","sin","PathfinderClass","PointClass","pointProto","acc","PathfinderComposition","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","Pathfinder_addEvent","Pathfinder_defined","Pathfinder_pick","Pathfinder_splat","Pathfinder_max","Pathfinder_min","Pathfinder","connections","deferRender","oldConnections","points","ganttPointOptions","dependency","connect","connects","isInside","toId","j","found","lenOld","lenNew","oldCon","newCon","renderConnections","conns","pathfinderRemoveRenderEvent","calculatedMargin","sLen","pLen","Pathfinder_getPointBB","calculateObstacleMargin","onstacleDistance","calculateObstacleDistance","bbMargin","yOverlap","xOverlap","xDistance","yDistance","xCenter","yCenter","straight","G","Extensions_ArrowSymbols","SVGRenderer","Chart","Point","StaticScale_addEvent","StaticScale_defined","StaticScale_isNumber","StaticScale_pick","StaticScale_onAxisAfterSetOptions","scrollablePlotArea","minHeight","chartAdjustHeight","redrawTrigger","_loop_1","chart_1","initiatedScale","unitLength","scrollablePixelsY","setSize","clipRect","sharedClipKey","sharedClips","adjustHeight","static_scale_src_G","Extensions_StaticScale","Axis","XRangeSeriesDefaults_correctFloat","XRangeSeriesDefaults_isNumber","isObject","XRange_XRangeSeriesDefaults","colorByPoint","amount","partialFill","whiteSpace","tooltip","headerFormat","pointFormat","XRangePoint_extends","TypeError","String","ColumnPoint","pointClass","XRangePoint_extend","XRangePoint","getColorByCategory","colorCount","resolveColor","applyOptions","isNull","isValid","drawPoint","getAnimationVerb","ttBelow","tooltipDateKeys","XRangeSeries_extends","XRangeSeries_composed","XRangeSeries_color","ColumnSeries","XRangeSeries_addEvent","XRangeSeries_clamp","XRangeSeries_crisp","XRangeSeries_defined","XRangeSeries_extend","XRangeSeries_find","XRangeSeries_isNumber","XRangeSeries_isObject","XRangeSeries_merge","XRangeSeries_pick","XRangeSeries_pushUnique","XRangeSeries_relativeLength","onAxisAfterGetSeriesExtremes","modMax","XRangeSeries","getColumnMetrics","swapAxes","cropData","table","x2Data","croppedData","findPointIndex","pointIndex","cropStart","touched","cropped","alignDataLabel","oldPlotX","dlBox","centerX","dataLabel","translatePoint","widthDifference","dlLeft","dlRight","dlWidth","clipRectWidth","columnMetrics","minPointLength","oldColWidth","seriesXOffset","pointXOffset","posX","plotX2","borderWidth","pointHeight","pointWidth","pointPlacement","tooltipPos","xIndex","yIndex","tooltipYOffset","partShapeArgs","clipRectArgs","category","yCategory","seriesOpts","shapeType","pointState","stateOpts","pointStateVerb","pointAttr","pointAttribs","pfOptions","getClassName","partRect","partialClipRect","clip","shadow","brighten","drawPoints","pointCount","animationLimit","isPointInside","pointArrayMap","getExtremesFromAll","keysAffectYAxis","parallelArrays","requireSorting","autoIncrement","buildKDTree","registerSeriesType","xrange_src_G","XRange_XRangeSeries","GanttPoint_extends","GanttPoint","setGanttPointAliases","completed","ganttPoint","milestone","xrange","GanttSeriesDefaults_isNumber","Gantt_GanttSeriesDefaults","pointFormatter","formats","tooltipOptions","dateTimeLabelFormats","ttOptions","xDateFormat","retVal","tooltipFormatter","getDateFormat","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default","BrokenAxis_addEvent","BrokenAxis_find","BrokenAxis_fireEvent","BrokenAxis_isArray","BrokenAxis_isNumber","BrokenAxis_pick","setBreaks","onAxisAfterSetTickPositions","tickPositions","newPositions","isInAnyBreak","onSeriesAfterGeneratePoints","connectNulls","isPointInBreak","onSeriesAfterRender","drawBreaks","seriesDrawBreaks","brokenAxis_1","breakArray","breaksOutOfRange","brk","isOut","otherBreak","toUpperCase","seriesGappedPath","groupingSize","gapSize","gapUnit","current","next","xRange","stack","stacks","stackKey","stackLabels","total","getGraphPath","seriesProto","gappedPath","isInBreak","repeat","inclusive","lin2Val","nval","val2Lin","findBreakAt","testKeep","inbrk","keep","showPoints","forceRedraw","breaks_1","axisBreak","setAxisTranslation","inBrk_1","repeat_1","start_1","i_1","breaks_2","breakArrayT_1","breakArray_1","pointRangePadding","min_1","max_1","move","breakSize","minPointOffset","Axis_BrokenAxis","dateFormats","GridAxis_addEvent","GridAxis_defined","GridAxis_erase","GridAxis_find","GridAxis_isArray","GridAxis_isNumber","GridAxis_merge","GridAxis_pick","GridAxis_timeUnits","GridAxis_wrap","GridAxis_isObject","getMaxLabelDimensions","ticks","dimensions","pos","tick","labelHeight","labelWidth","textPxLength","treeGrid","mapOfPosToGridNode","treeDepth","indentation","wrapGetOffset","proceed","columnsFirst","side","isColumn","getOffset","onAfterGetTitlePosition","gridOptions","axisTitle","axisHeight","axisLeft","options_1","axisTop","axisWidth","tickSize","titleWidth","xOption","yOption","titleMargin","titleFontSize","fontMetrics","f","offAxis","bottom","titlePosition","onAfterInit","showLastLabel","labelRotation","minTickInterval","columnIndex","columnOptions","onAfterRender","firstTick","slotWidth","maxLabelDimensions","rightWall","isOuterAxis","axisLine","linePath","getLinePath","startPoint","marginRight","upperBorderEndPoint","upperBorderPath","lowerBorderEndPoint","tickmarkOffset","lowerBorderPath","upperBorder","renderBorder","lowerBorder","axisLineExtra","showAxis","hasRendered","linkedParent","lastTick","firstTick_1","tickMark","hiddenLabels","hiddenMarks","mark","isLast","onAfterSetAxisTranslation","tickInfo","userLabels","onAfterSetOptions","gridAxisOptions","list","textOverflow","tickPositioner","parentInfo","unitIdx","unit_1","unit","counts","onAfterSetOptions2","onAfterSetScale","setScale","onAfterTickSize","labelPadding","cellHeight","GridAxis_onChartAfterSetChartSize","onDestroy","keepEvents","onInit","tickColor","GridAxisAdditions","onTickAfterGetLabelPosition","labelOpts","tickPos","nextTickPos","crispCorr","top_1","lblMetrics","useHTML","lines","onTickLabelFormat","isFirst","pointCopy","is","gantt","onTrimTicks","categoryAxis","firstPos","secondPos","lastPos","beforeLastPos","linkedMin","linkedMax","startLessThanMin","endMoreThanMin","startLessThanMax","endMoreThanMax","isLinked","wrapUnsquish","parentAxis","thisIndex","lastIndex","otherAxis","extraBorderLine","axisGroup","E","timestamp","charAt","W","firstDay","thursday","firstThursday","thursdayTS","toString","__rest","getOwnPropertySymbols","propertyIsEnumerable","Tree_extend","Tree_isNumber","Tree_pick","getNode","parent","level","mapOfIdToChildren","after","before","node","depth","descendants","children","child","childStart","NaN","childEnd","Gantt_Tree","getTree","ids","listOfParents","prev","curr","adoptedByRoot","orphan","TreeGridTick_addEvent","TreeGridTick_removeEvent","TreeGridTick_isObject","TreeGridTick_isNumber","TreeGridTick_pick","TreeGridTick_wrap","onTickInit","TreeGridTickAdditions","wrapGetLabelPosition","labelOptions","lbOptions","isTreeGrid","result","wrapRenderLabel","params","isNew","labelBox","iconCenter","shouldRender","icon","collapsed","addClassName","removeClassName","tickGrid","tickOptions","labelIcon","labelElement","axisGrid","axisOptions","symbolOptions","hasDescendants","isTreeGridElement","prefixClassName","prefixLevelClass","removeClass","styles","parentGroup","xy","object","attachedTreeGridEvents","textDecoration","toggleCollapse","TickClass","tickProto","collapse","expand","posMappedNodes","TreeUtilities_isArray","TreeUtilities_isNumber","TreeUtilities_isObject","TreeUtilities_merge","TreeUtilities_pick","TreeGridAxis_getLevelOptions","defaults","converted","levels","item","levelIsConstant","TreeGridAxis_addEvent","TreeGridAxis_isArray","TreeGridAxis_splat","TreeGridAxis_find","TreeGridAxis_fireEvent","TreeGridAxis_isObject","TreeGridAxis_isString","TreeGridAxis_merge","TreeGridAxis_pick","TreeGridAxis_removeEvent","TreeGridAxis_wrap","getBreakFromNode","collapseEnd","collapseStart","getTreeGridFromData","uniqueNames","numberOfSeries","setValues","collapsedNodes","mapOfIdToNode","uniqueNamesEnabled","posIterator","tree","gridNode","parentGridNode","nodes","seriesIndex","onBeforeRender","target","isDirtyData","seriesHasPrimitivePoints_1","arr","seriesData","foundPrimitivePoint","pointOptions","optionsToObject","hasNames","axisData","toArray","mapOptionsToLevel","wrapGenerateTick","levelOptions","parameters","addLabel","wrapInit","TreeGridAxisAdditions","fontWeight","wrapSetTickInterval","getTickPositions","linkedParentExtremes","wrapRedraw","axisProps","utils","TreeGridTick","setCollapsedStatus","dataPoint","roundedMin","roundedMax","GanttSeries_extends","Series","GanttSeries_XRangeSeries","GanttSeries_extend","GanttSeries_isNumber","GanttSeries_merge","GanttSeries","Gantt_Pathfinder","TreeGridAxis","diamondShape","cutOff","diamond","gantt_src_G","Extensions_CurrentDateIndication","PlotLineOrBandClass","PlotLineOrBand","Gantt_GanttSeries","Tick"],"mappings":"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"}
Hacked By AnonymousFox1.0, Coded By AnonymousFox