Hacked By AnonymousFox
{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts Gantt JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/treegrid\n * @requires highcharts\n *\n * Tree Grid\n *\n * (c) 2016-2024 Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"StackItem\"], root[\"_Highcharts\"][\"Axis\"], root[\"_Highcharts\"][\"Color\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/treegrid\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"StackItem\"],amd1[\"Axis\"],amd1[\"Color\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/treegrid\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"StackItem\"], root[\"_Highcharts\"][\"Axis\"], root[\"_Highcharts\"][\"Color\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"StackItem\"], root[\"Highcharts\"][\"Axis\"], root[\"Highcharts\"][\"Color\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__184__, __WEBPACK_EXTERNAL_MODULE__532__, __WEBPACK_EXTERNAL_MODULE__620__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 532:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__532__;\n\n/***/ }),\n\n/***/ 620:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 184:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__184__;\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (/* binding */ treegrid_src)\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"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/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\nconst { addEvent, find, fireEvent, isArray, isNumber, pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\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 addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n addEvent(AxisClass, 'afterSetTickPositions', onAxisAfterSetTickPositions);\n addEvent(AxisClass, 'afterSetOptions', onAxisAfterSetOptions);\n const seriesProto = SeriesClass.prototype;\n seriesProto.drawBreaks = seriesDrawBreaks;\n seriesProto.gappedPath = seriesGappedPath;\n addEvent(SeriesClass, 'afterGeneratePoints', onSeriesAfterGeneratePoints);\n 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 const axis = this;\n if (axis.brokenAxis?.hasBreaks) {\n axis.options.ordinal = false;\n }\n }\n /**\n * @private\n */\n function onAxisAfterSetTickPositions() {\n const axis = this, brokenAxis = axis.brokenAxis;\n if (brokenAxis?.hasBreaks) {\n const tickPositions = axis.tickPositions, info = axis.tickPositions.info, newPositions = [];\n for (let 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 const axis = this;\n if (!axis.brokenAxis) {\n axis.brokenAxis = new Additions(axis);\n }\n }\n /**\n * @private\n */\n function onSeriesAfterGeneratePoints() {\n const { isDirty, options: { connectNulls }, points, xAxis, yAxis } = this;\n // Set, or reset visibility of the points. Axis.setBreaks marks\n // the series as isDirty\n if (isDirty) {\n let i = points.length;\n while (i--) {\n const point = points[i];\n // Respect nulls inside the break (#4275)\n const nullGap = point.y === null && connectNulls === false;\n const isPointInBreak = (!nullGap && (xAxis?.brokenAxis?.isInAnyBreak(point.x, true) ||\n yAxis?.brokenAxis?.isInAnyBreak(point.y, 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, pick(this.pointArrayMap, ['y']));\n }\n /**\n * @private\n */\n function seriesDrawBreaks(axis, keys) {\n const series = this, points = series.points;\n let breaks, threshold, y;\n if (axis?.brokenAxis?.hasBreaks) {\n const brokenAxis = axis.brokenAxis;\n keys.forEach(function (key) {\n breaks = brokenAxis?.breakArray || [];\n threshold = axis.isXAxis ?\n axis.min :\n 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 const breaksOutOfRange = axis?.options?.breaks?.filter(function (brk) {\n let isOut = true;\n // Iterate to see if \"brk\" is in axis range\n for (let i = 0; i < breaks.length; i++) {\n const 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 = pick(point['stack' + key.toUpperCase()], point[key]);\n breaks.forEach(function (brk) {\n if (isNumber(threshold) && isNumber(y)) {\n let 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 fireEvent(axis, eventName, { point, brk });\n }\n }\n });\n breaksOutOfRange?.forEach(function (brk) {\n fireEvent(axis, 'pointOutsideOfBreak', { point, 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 const currentDataGrouping = this.currentDataGrouping, groupingSize = currentDataGrouping?.gapSize, points = this.points.slice(), yAxis = this.yAxis;\n let gapSize = this.options.gapSize, i = points.length - 1, 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 let current, next;\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 const 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 class Additions {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n static isInBreak(brk, val) {\n const repeat = brk.repeat || Infinity, from = brk.from, length = brk.to - brk.from, test = (val >= from ?\n (val - from) % repeat :\n repeat - ((from - val) % repeat));\n let 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 static lin2Val(val) {\n const axis = this;\n const brokenAxis = axis.brokenAxis;\n const breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !isNumber(val)) {\n return val;\n }\n let nval = val, brk, 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 static val2Lin(val) {\n const axis = this;\n const brokenAxis = axis.brokenAxis;\n const breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !isNumber(val)) {\n return val;\n }\n let nval = val, brk, 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 * Constructors\n *\n * */\n constructor(axis) {\n this.hasBreaks = false;\n this.axis = axis;\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 findBreakAt(x, breaks) {\n return find(breaks, function (b) {\n return b.from < x && x < b.to;\n });\n }\n /**\n * @private\n */\n isInAnyBreak(val, testKeep) {\n const brokenAxis = this, axis = brokenAxis.axis, breaks = axis.options.breaks || [];\n let i = breaks.length, inbrk, keep, ret;\n if (i && isNumber(val)) {\n while (i--) {\n if (Additions.isInBreak(breaks[i], val)) {\n inbrk = true;\n if (!keep) {\n keep = 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 setBreaks(breaks, redraw) {\n const brokenAxis = this, axis = brokenAxis.axis, time = axis.chart.time, hasBreaks = 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?.forEach((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 const breaks = (this.options.breaks || []);\n let axisBreak;\n while ((axisBreak = brokenAxis.findBreakAt(newMin, breaks))) {\n newMin = axisBreak.to;\n }\n while ((axisBreak = brokenAxis.findBreakAt(newMax, breaks))) {\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 const breaks = axis.options.breaks || [], \n // Temporary one:\n breakArrayT = [], breakArray = [], pointRangePadding = pick(axis.pointRangePadding, 0);\n let length = 0, inBrk, repeat, min = axis.userMin || axis.min, max = axis.userMax || axis.max, start, i;\n // Min & max check (#4247)\n breaks.forEach(function (brk) {\n repeat = brk.repeat || Infinity;\n if (isNumber(min) && isNumber(max)) {\n if (Additions.isInBreak(brk, min)) {\n min += ((brk.to % repeat) -\n (min % repeat));\n }\n if (Additions.isInBreak(brk, max)) {\n max -= ((max % repeat) -\n (brk.from % repeat));\n }\n }\n });\n // Construct an array holding all breaks in the axis\n breaks.forEach(function (brk) {\n start = brk.from;\n repeat = brk.repeat || Infinity;\n if (isNumber(min) && isNumber(max)) {\n while (start - repeat > min) {\n start -= repeat;\n }\n while (start < min) {\n start += repeat;\n }\n for (i = start; i < max; i += repeat) {\n breakArrayT.push({\n value: i,\n move: 'in'\n });\n breakArrayT.push({\n value: i + brk.to - brk.from,\n move: 'out',\n size: brk.breakSize\n });\n }\n }\n });\n breakArrayT.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 = 0;\n start = min;\n breakArrayT.forEach(function (brk) {\n inBrk += (brk.move === 'in' ? 1 : -1);\n if (inBrk === 1 && brk.move === 'in') {\n start = brk.value;\n }\n if (inBrk === 0 && isNumber(start)) {\n breakArray.push({\n from: start,\n to: brk.value,\n len: brk.value - start - (brk.size || 0)\n });\n length += (brk.value -\n start -\n (brk.size || 0));\n }\n });\n brokenAxis.breakArray = breakArray;\n // Used with staticScale, and below the actual axis\n // length, when breaks are subtracted.\n if (isNumber(min) &&\n isNumber(max) &&\n isNumber(axis.min)) {\n brokenAxis.unitLength = max - min - length +\n pointRangePadding;\n fireEvent(axis, 'afterBreaks');\n if (axis.staticScale) {\n axis.transA = axis.staticScale;\n }\n else if (brokenAxis.unitLength) {\n axis.transA *=\n (max - axis.min + pointRangePadding) /\n brokenAxis.unitLength;\n }\n if (pointRangePadding) {\n axis.minPixelPadding =\n axis.transA * (axis.minPointOffset || 0);\n }\n axis.min = min;\n axis.max = max;\n }\n }\n };\n }\n if (pick(redraw, true)) {\n axis.chart.redraw();\n }\n }\n }\n BrokenAxis.Additions = Additions;\n})(BrokenAxis || (BrokenAxis = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const Axis_BrokenAxis = (BrokenAxis);\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/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\nconst { dateFormats } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: GridAxis_addEvent, defined, erase, find: GridAxis_find, isArray: GridAxis_isArray, isNumber: GridAxis_isNumber, merge, pick: GridAxis_pick, timeUnits, wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\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 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 const 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 compose(AxisClass, ChartClass, TickClass) {\n if (!AxisClass.keepProps.includes('grid')) {\n AxisClass.keepProps.push('grid');\n AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;\n wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);\n 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', 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 const dimensions = {\n width: 0,\n height: 0\n };\n tickPositions.forEach(function (pos) {\n const tick = ticks[pos];\n let labelHeight = 0, labelWidth = 0, label;\n if (isObject(tick)) {\n label = 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 const 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 const { grid } = this, \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?.isColumn) {\n let columns = grid?.columns || [];\n if (columnsFirst) {\n columns = columns.slice().reverse();\n }\n columns\n .forEach((column) => {\n column.getOffset();\n });\n }\n if (columnsFirst) {\n proceed.apply(this);\n }\n}\n/**\n * @private\n */\nfunction onAfterGetTitlePosition(e) {\n const axis = this;\n const options = axis.options;\n const gridOptions = options.grid || {};\n if (gridOptions.enabled === true) {\n // Compute anchor points for each of the title align options\n const { axisTitle, height: axisHeight, horiz, left: axisLeft, offset, opposite, options, top: axisTop, width: axisWidth } = axis;\n const tickSize = axis.tickSize();\n const titleWidth = axisTitle && axisTitle.getBBox().width;\n const xOption = options.title.x;\n const yOption = options.title.y;\n const titleMargin = GridAxis_pick(options.title.margin, horiz ? 5 : 10);\n const titleFontSize = axisTitle ? axis.chart.renderer.fontMetrics(axisTitle).f : 0;\n const crispCorr = tickSize ? tickSize[0] / 2 : 0;\n // TODO account for alignment\n // the position in the perpendicular direction of the axis\n const 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 const axis = this;\n const { chart, options: { grid: gridOptions = {} }, userOptions } = axis;\n if (gridOptions.enabled) {\n applyGridOptions(axis);\n }\n if (gridOptions.columns) {\n const columns = axis.grid.columns = [];\n let columnIndex = axis.grid.columnIndex = 0;\n // Handle columns, each column is a grid axis\n while (++columnIndex < gridOptions.columns.length) {\n const columnOptions = merge(userOptions, 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 const column = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(axis.chart, 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 erase(chart.axes, column);\n 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 const axis = this, { axisTitle, grid, options } = axis, gridOptions = options.grid || {};\n if (gridOptions.enabled === true) {\n const min = axis.min || 0, max = axis.max || 0, 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?.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 const lineWidth = options.lineWidth;\n if (lineWidth) {\n const linePath = axis.getLinePath(lineWidth), startPoint = linePath[0], 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], 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 const upperBorderStartPoint = startPoint, upperBorderEndPoint = [\n 'L',\n axis.left,\n startPoint[2] || 0\n ], upperBorderPath = [\n upperBorderStartPoint,\n upperBorderEndPoint\n ], lowerBorderEndPoint = [\n 'L',\n axis.chart.chartWidth - axis.chart.marginRight,\n axis.toPixels(max + axis.tickmarkOffset)\n ], lowerBorderStartPoint = [\n 'M',\n endPoint[1] || 0,\n axis.toPixels(max + axis.tickmarkOffset)\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((column) => 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 const tickmarkOffset = axis.tickmarkOffset, lastTick = axis.tickPositions[axis.tickPositions.length - 1], firstTick = axis.tickPositions[0];\n let label, tickMark;\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].label;\n if (label) {\n if (min - firstTick > 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 const 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 const axis = this;\n const tickInfo = axis.tickPositions && axis.tickPositions.info;\n const options = axis.options;\n const gridOptions = options.grid || {};\n const 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((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 !defined(userLabels.align) &&\n (options.dateTimeLabelFormats[tickInfo.unitName]\n .range === false ||\n tickInfo.count > 1 // Years\n )) {\n options.labels.align = 'left';\n if (!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 const options = this.options, userOptions = e.userOptions, gridOptions = ((options && isObject(options.grid)) ? options.grid : {});\n let 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 = 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 (defined(userOptions.linkedTo) &&\n !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 !defined(userOptions.tickPixelInterval) &&\n // Only for linked axes\n defined(userOptions.linkedTo) &&\n !defined(userOptions.tickPositioner) &&\n !defined(userOptions.tickInterval) &&\n !defined(userOptions.units)) {\n gridAxisOptions.tickPositioner = function (min, max) {\n const parentInfo = (this.linkedParent &&\n this.linkedParent.tickPositions &&\n this.linkedParent.tickPositions.info);\n if (parentInfo) {\n const units = (gridAxisOptions.units || []);\n let unitIdx, count = 1, unitName = 'year';\n for (let i = 0; i < units.length; i++) {\n const unit = units[i];\n if (unit && unit[0] === parentInfo.unitName) {\n unitIdx = i;\n break;\n }\n }\n // Get the first allowed count on the next unit.\n const unit = (GridAxis_isNumber(unitIdx) && units[unitIdx + 1]);\n if (unit) {\n unitName = unit[0] || 'year';\n const 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 const unitRange = timeUnits[unitName];\n this.tickInterval = unitRange * count;\n return this.chart.time.getTimeTicks({ unitRange, count, unitName }, min, max, this.options.startOfWeek);\n }\n };\n }\n }\n // Now merge the combined options into the axis options\n 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 const axis = this;\n const userOptions = e.userOptions;\n const gridOptions = userOptions && userOptions.grid || {};\n const 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 merge(true, axis.options, columns[0]);\n }\n}\n/**\n * Handle columns and setScale.\n * @private\n */\nfunction onAfterSetScale() {\n const axis = this;\n (axis.grid.columns || []).forEach((column) => 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 const { horiz, maxLabelDimensions, options: { grid: gridOptions = {} } } = this;\n if (gridOptions.enabled && maxLabelDimensions) {\n const labelPadding = this.options.labels.distance * 2;\n const 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 onChartAfterSetChartSize() {\n this.axes.forEach((axis) => {\n (axis.grid && axis.grid.columns || []).forEach((column) => {\n column.setAxisSize();\n column.setAxisTranslation();\n });\n });\n}\n/**\n * @private\n */\nfunction onDestroy(e) {\n const { grid } = this;\n (grid.columns || []).forEach((column) => 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 const axis = this;\n const userOptions = e.userOptions || {};\n const gridOptions = userOptions.grid || {};\n if (gridOptions.enabled && 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 const tick = this, label = tick.label, axis = tick.axis, reversed = axis.reversed, chart = axis.chart, options = axis.options, gridOptions = options.grid || {}, labelOpts = axis.options.labels, align = labelOpts.align, \n // `verticalAlign` is currently not supported for axis.labels.\n verticalAlign = 'middle', // LabelOpts.verticalAlign,\n side = GridAxisSide[axis.side], tickmarkOffset = e.tickmarkOffset, tickPositions = axis.tickPositions, tickPos = tick.pos - tickmarkOffset, nextTickPos = (GridAxis_isNumber(tickPositions[e.index + 1]) ?\n tickPositions[e.index + 1] - tickmarkOffset :\n (axis.max || 0) + tickmarkOffset), tickSize = axis.tickSize('tick'), tickWidth = tickSize ? tickSize[0] : 0, crispCorr = tickSize ? tickSize[1] / 2 : 0;\n // Only center tick labels in grid axes\n if (gridOptions.enabled === true) {\n let bottom, top, left, right;\n // Calculate top and bottom positions of the cell.\n if (side === 'top') {\n bottom = axis.top + axis.offset;\n top = bottom - tickWidth;\n }\n else if (side === 'bottom') {\n top = chart.chartHeight - axis.bottom + axis.offset;\n bottom = top + tickWidth;\n }\n else {\n bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);\n top = 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 :\n verticalAlign === 'bottom' ?\n bottom :\n top + ((bottom - top) / 2) // Default to middle\n );\n if (label) {\n const lblMetrics = chart.renderer.fontMetrics(label), 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 const 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 const { axis, value } = ctx;\n if (axis.options.grid &&\n axis.options.grid.enabled) {\n const tickPos = axis.tickPositions;\n const series = (axis.linkedParent || axis).series[0];\n const isFirst = value === tickPos[0];\n const isLast = value === tickPos[tickPos.length - 1];\n const point = series && GridAxis_find(series.options.data, function (p) {\n return p[axis.isXAxis ? 'x' : 'y'] === value;\n });\n let pointCopy;\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 = 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 const axis = this, options = axis.options, gridOptions = options.grid || {}, categoryAxis = axis.categories, tickPositions = axis.tickPositions, firstPos = tickPositions[0], secondPos = tickPositions[1], lastPos = tickPositions[tickPositions.length - 1], beforeLastPos = tickPositions[tickPositions.length - 2], linkedMin = axis.linkedParent && axis.linkedParent.min, linkedMax = axis.linkedParent && axis.linkedParent.max, min = linkedMin || axis.min, max = linkedMax || axis.max, tickInterval = axis.tickInterval, startLessThanMin = ( // #19845\n GridAxis_isNumber(min) &&\n min >= firstPos + tickInterval &&\n min < secondPos), endMoreThanMin = (GridAxis_isNumber(min) &&\n firstPos < min &&\n firstPos + tickInterval > min), startLessThanMax = (GridAxis_isNumber(max) &&\n lastPos > max &&\n lastPos - tickInterval < max), 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 const axis = this;\n const { options: { grid: gridOptions = {} } } = axis;\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 */\nclass GridAxisAdditions {\n /* *\n *\n * Constructors\n *\n * */\n constructor(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 isOuterAxis() {\n const axis = this.axis;\n const chart = axis.chart;\n const columnIndex = axis.grid.columnIndex;\n const columns = (axis.linkedParent?.grid.columns ||\n axis.grid.columns ||\n []);\n const parentAxis = columnIndex ? axis.linkedParent : axis;\n let thisIndex = -1, 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((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 renderBorder(path) {\n const axis = this.axis, renderer = axis.chart.renderer, options = axis.options, 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}\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 const d = this.toParts(timestamp), firstDay = (d[7] + 6) % 7, thursday = d.slice(0);\n thursday[2] = d[2] - firstDay + 3;\n const 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 const thursdayTS = this.makeTime(thursday[0], thursday[1], thursday[2]), firstThursdayTS = this.makeTime(firstThursday[0], firstThursday[1], firstThursday[2]);\n return (1 +\n Math.floor((thursdayTS - firstThursdayTS) / 604800000)).toString();\n};\n/* *\n *\n * Default Export\n *\n * */\nconst GridAxis = {\n compose\n};\n/* harmony default export */ const 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/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\n/* *\n *\n * Imports\n *\n * */\n\nconst { extend, isNumber: Tree_isNumber, pick: Tree_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\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 const root = '', ids = [], listOfParents = data.reduce((prev, curr) => {\n const { parent = '', id } = curr;\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((node) => {\n if ((node !== root) && (ids.indexOf(node) === -1)) {\n const adoptedByRoot = listOfParents[node].map(function (orphan) {\n const { ...parentExcluded } = orphan; // #15196\n return parentExcluded;\n });\n listOfParents[root].push(...adoptedByRoot);\n delete listOfParents[node];\n }\n });\n return listOfParents;\n}\n/** @private */\nfunction getNode(id, parent, level, data, mapOfIdToChildren, options) {\n const after = options && options.after, before = options && options.before, node = {\n data,\n depth: level - 1,\n id,\n level,\n parent: (parent || '')\n };\n let descendants = 0, height = 0, start, 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 const children = ((mapOfIdToChildren[id] || [])).map((child) => {\n const node = getNode(child.id, id, (level + 1), child, mapOfIdToChildren, options), childStart = child.start || NaN, 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 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 * */\nconst Tree = {\n getNode,\n getTree\n};\n/* harmony default export */ const Gantt_Tree = (Tree);\n\n;// ./code/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\nconst { addEvent: TreeGridTick_addEvent, removeEvent, isObject: TreeGridTick_isObject, isNumber: TreeGridTick_isNumber, pick: TreeGridTick_pick, wrap: TreeGridTick_wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction onTickInit() {\n const 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 const 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 const treeGrid = tick.treeGrid, isNew = !treeGrid.labelIcon, renderer = params.renderer, labelBox = params.xy, options = params.options, width = options.width || 0, height = options.height || 0, padding = options.padding ?? tick.axis.linkedParent ? 0 : 5, iconCenter = {\n x: labelBox.x - (width / 2) - padding,\n y: labelBox.y - (height / 2)\n }, rotation = params.collapsed ? 90 : 180, shouldRender = params.show && TreeGridTick_isNumber(iconCenter.y);\n let 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 const tick = this, lbOptions = TreeGridTick_pick(tick.options && tick.options.labels, labelOptions), pos = tick.pos, axis = tick.axis, isTreeGrid = axis.type === 'treegrid', result = proceed.apply(tick, [x, y, label, horiz, lbOptions, tickmarkOffset, index, step]);\n let mapOfPosToGridNode, node, level;\n if (isTreeGrid) {\n const { width = 0, padding = axis.linkedParent ? 0 : 5 } = (lbOptions && TreeGridTick_isObject(lbOptions.symbol, true) ?\n lbOptions.symbol :\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 const tick = this, { pos, axis, label, treeGrid: tickGrid, options: tickOptions } = tick, icon = tickGrid?.labelIcon, labelElement = label?.element, { treeGrid: axisGrid, options: axisOptions, chart, tickPositions } = axis, mapOfPosToGridNode = axisGrid.mapOfPosToGridNode, labelOptions = TreeGridTick_pick(tickOptions?.labels, axisOptions?.labels), symbolOptions = (labelOptions && TreeGridTick_isObject(labelOptions.symbol, true) ?\n labelOptions.symbol :\n {}), node = mapOfPosToGridNode && mapOfPosToGridNode[pos], { descendants, depth } = node || {}, 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 let collapsed, addClassName, 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((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 removeEvent(labelElement);\n label?.css({ cursor: 'default' });\n icon.destroy();\n }\n}\n/* *\n *\n * Classes\n *\n * */\n/**\n * @private\n * @class\n */\nclass TreeGridTickAdditions {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n static compose(TickClass) {\n const 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 * Constructors\n *\n * */\n /**\n * @private\n */\n constructor(tick) {\n this.tick = tick;\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 collapse(redraw) {\n const tick = this.tick, axis = tick.axis, brokenAxis = axis.brokenAxis;\n if (brokenAxis &&\n axis.treeGrid.mapOfPosToGridNode) {\n const pos = tick.pos, node = axis.treeGrid.mapOfPosToGridNode[pos], 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 destroy() {\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 expand(redraw) {\n const { pos, axis } = this.tick, { treeGrid, brokenAxis } = axis, posMappedNodes = treeGrid.mapOfPosToGridNode;\n if (brokenAxis && posMappedNodes) {\n const node = posMappedNodes[pos], 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 toggleCollapse(redraw) {\n const tick = this.tick, axis = tick.axis, brokenAxis = axis.brokenAxis;\n if (brokenAxis &&\n axis.treeGrid.mapOfPosToGridNode) {\n const pos = tick.pos, node = axis.treeGrid.mapOfPosToGridNode[pos], breaks = axis.treeGrid.toggleCollapse(node);\n brokenAxis.setBreaks(breaks, TreeGridTick_pick(redraw, true));\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const TreeGridTick = (TreeGridTickAdditions);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n;// ./code/es-modules/Series/TreeUtilities.js\n/* *\n *\n * (c) 2014-2024 Highsoft AS\n *\n * Authors: Jon Arild Nygard / Oystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { extend: TreeUtilities_extend, isArray: TreeUtilities_isArray, isNumber: TreeUtilities_isNumber, isObject: TreeUtilities_isObject, merge: TreeUtilities_merge, pick: TreeUtilities_pick, relativeLength } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getColor(node, options) {\n const index = options.index, mapOptionsToLevel = options.mapOptionsToLevel, parentColor = options.parentColor, parentColorIndex = options.parentColorIndex, series = options.series, colors = options.colors, siblings = options.siblings, points = series.points, chartOptionsChart = series.chart.options.chart;\n let getColorByPoint, point, level, colorByPoint, colorIndexByPoint, color, colorIndex;\n /**\n * @private\n */\n const variateColor = (color) => {\n const colorVariation = level && level.colorVariation;\n if (colorVariation &&\n colorVariation.key === 'brightness' &&\n index &&\n siblings) {\n return highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default().parse(color).brighten(colorVariation.to * (index / siblings)).get();\n }\n return color;\n };\n if (node) {\n point = points[node.i];\n level = mapOptionsToLevel[node.level] || {};\n getColorByPoint = point && level.colorByPoint;\n if (getColorByPoint) {\n colorIndexByPoint = point.index % (colors ?\n colors.length :\n chartOptionsChart.colorCount);\n colorByPoint = colors && colors[colorIndexByPoint];\n }\n // Select either point color, level color or inherited color.\n if (!series.chart.styledMode) {\n color = TreeUtilities_pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);\n }\n colorIndex = TreeUtilities_pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);\n }\n return {\n color: color,\n colorIndex: colorIndex\n };\n}\n/**\n * Creates a map from level number to its given options.\n *\n * @private\n *\n * @param {Object} params\n * Object containing parameters.\n * - `defaults` Object containing default options. The default options are\n * merged with the userOptions to get the final options for a specific\n * level.\n * - `from` The lowest level number.\n * - `levels` User options from series.levels.\n * - `to` The highest level number.\n *\n * @return {Highcharts.Dictionary<object>|null}\n * Returns a map from level number to its given options.\n */\nfunction getLevelOptions(params) {\n const result = {};\n let defaults, converted, i, from, to, levels;\n if (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((obj, item) => {\n let level, levelIsConstant, 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 const before = options.before, idRoot = options.idRoot, mapIdToNode = options.mapIdToNode, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (options.levelIsConstant !== false), points = options.points, point = points[tree.i], optionsPoint = point && point.options || {}, children = [];\n let childrenTotal = 0;\n tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);\n tree.name = TreeUtilities_pick(point && point.name, '');\n tree.visible = (idRoot === tree.id ||\n options.visible === true);\n if (typeof before === 'function') {\n tree = before(tree, options);\n }\n // First give the children some values\n tree.children.forEach((child, i) => {\n const newOptions = TreeUtilities_extend({}, options);\n TreeUtilities_extend(newOptions, {\n index: i,\n siblings: tree.children.length,\n visible: tree.visible\n });\n child = setTreeValues(child, newOptions);\n children.push(child);\n if (child.visible) {\n childrenTotal += child.val;\n }\n });\n // Set the values\n const value = TreeUtilities_pick(optionsPoint.value, childrenTotal);\n tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);\n tree.children = children;\n tree.childrenTotal = childrenTotal;\n tree.isLeaf = tree.visible && !childrenTotal;\n tree.val = value;\n return tree;\n}\n/**\n * Update the rootId property on the series. Also makes sure that it is\n * accessible to exporting.\n *\n * @private\n *\n * @param {Object} series\n * The series to operate on.\n *\n * @return {string}\n * Returns the resulting rootId after update.\n */\nfunction updateRootId(series) {\n let rootId, options;\n if (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 const { chart, options } = series, { nodeDistance = 0, nodeWidth = 0 } = options, { plotSizeX = 1 } = chart;\n // Node width auto means they are evenly distributed along the width of\n // the plot area\n if (nodeWidth === 'auto') {\n if (typeof nodeDistance === 'string' && /%$/.test(nodeDistance)) {\n const fraction = parseFloat(nodeDistance) / 100, total = columnCount + fraction * (columnCount - 1);\n return plotSizeX / total;\n }\n const nDistance = Number(nodeDistance);\n return ((plotSizeX + nDistance) /\n (columnCount || 1)) - nDistance;\n }\n return relativeLength(nodeWidth, plotSizeX);\n}\n/* *\n *\n * Default Export\n *\n * */\nconst TreeUtilities = {\n getColor,\n getLevelOptions,\n getNodeWidth,\n setTreeValues,\n updateRootId\n};\n/* harmony default export */ const Series_TreeUtilities = (TreeUtilities);\n\n;// ./code/es-modules/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\nconst { getLevelOptions: TreeGridAxis_getLevelOptions } = Series_TreeUtilities;\n\nconst { addEvent: TreeGridAxis_addEvent, isArray: TreeGridAxis_isArray, splat, find: TreeGridAxis_find, fireEvent: TreeGridAxis_fireEvent, isObject: TreeGridAxis_isObject, isString, merge: TreeGridAxis_merge, pick: TreeGridAxis_pick, removeEvent: TreeGridAxis_removeEvent, wrap: TreeGridAxis_wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n * Variables\n *\n * */\nlet TickConstructor;\n/* *\n *\n * Functions\n *\n * */\n/**\n * @private\n */\nfunction getBreakFromNode(node, max) {\n const to = node.collapseEnd || 0;\n let 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 const categories = [], collapsedNodes = [], mapOfIdToNode = {}, uniqueNamesEnabled = uniqueNames || false;\n let mapOfPosToGridNode = {}, posIterator = -1;\n // Build the tree from the series data.\n const treeParams = {\n // After the children has been created.\n after: function (node) {\n const gridNode = mapOfPosToGridNode[node.pos];\n let height = 0, 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 const data = TreeGridAxis_isObject(node.data, true) ?\n node.data :\n {}, name = isString(data.name) ? data.name : '', parentNode = mapOfIdToNode[node.parent], parentGridNode = (TreeGridAxis_isObject(parentNode, true) ?\n mapOfPosToGridNode[parentNode.pos] :\n null), hasSameName = function (x) {\n return x.name === name;\n };\n let gridNode, 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 (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 const updateYValuesAndTickPos = function (map, numberOfSeries) {\n const setValues = function (gridNode, start, result) {\n const nodes = gridNode.nodes, padding = 0.5;\n let end = start + (start === -1 ? 0 : numberOfSeries - 1);\n const diff = (end - start) / 2, pos = start + diff;\n nodes.forEach(function (node) {\n const 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 const tree = Gantt_Tree.getTree(data, 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 const chart = e.target, axes = chart.axes;\n axes.filter((axis) => axis.type === 'treegrid').forEach(function (axis) {\n const options = axis.options || {}, labelOptions = options.labels, uniqueNames = axis.uniqueNames, 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 let numberOfSeries = 0, data, treeGrid;\n if (isDirty) {\n const seriesHasPrimitivePoints = [];\n // Concatenate data from all series assigned to this axis.\n data = axis.series.reduce(function (arr, s) {\n const seriesData = (s.options.data || []), 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((value) => (typeof value === 'object')));\n seriesHasPrimitivePoints.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 (let 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 const axisData = (series.options.data || []).map(function (d) {\n if (seriesHasPrimitivePoints[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 const toArray = 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 const axis = this, mapOptionsToLevel = axis.treeGrid.mapOptionsToLevel || {}, isTreeGrid = axis.type === 'treegrid', ticks = axis.ticks;\n let tick = ticks[pos], levelOptions, options, 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 const axis = this, 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 const treeGrid = getTreeGridFromData(e.options.data, 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 const 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((n) => ((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 const axis = this, options = axis.options, time = axis.chart.time, linkedParent = typeof options.linkedTo === 'number' ?\n this.chart[axis.coll]?.[options.linkedTo] :\n void 0, isTreeGrid = axis.type === 'treegrid';\n if (isTreeGrid) {\n axis.min = axis.userMin ?? time.parse(options.min) ?? axis.dataMin;\n axis.max = axis.userMax ?? time.parse(options.max) ?? 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 const 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 const axis = this, isTreeGrid = this.type === 'treegrid';\n if (isTreeGrid && axis.visible) {\n axis.tickPositions.forEach(function (pos) {\n const 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 */\nclass TreeGridAxisAdditions {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n static compose(AxisClass, ChartClass, SeriesClass, TickClass) {\n if (!AxisClass.keepProps.includes('treeGrid')) {\n const 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 * Constructors\n *\n * */\n /**\n * @private\n */\n constructor(axis) {\n this.axis = axis;\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 setCollapsedStatus(node) {\n const axis = this.axis, chart = axis.chart;\n axis.series.forEach(function (series) {\n const data = series.options.data;\n if (node.id && data) {\n const point = chart.get(node.id), 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 collapse(node) {\n const axis = this.axis, breaks = (axis.options.breaks || []), obj = getBreakFromNode(node, 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 expand(node) {\n const axis = this.axis, breaks = (axis.options.breaks || []), obj = getBreakFromNode(node, 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 getTickPositions() {\n const 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 const 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 isCollapsed(node) {\n const axis = this.axis, breaks = (axis.options.breaks || []), obj = getBreakFromNode(node, 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 toggleCollapse(node) {\n return (this.isCollapsed(node) ?\n this.expand(node) :\n this.collapse(node));\n }\n}\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ const TreeGridAxis = (TreeGridAxisAdditions);\n\n;// ./code/es-modules/masters/modules/treegrid.src.js\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nTreeGridAxis.compose(G.Axis, G.Chart, G.Series, G.Tick);\n/* harmony default export */ const treegrid_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","define","amd","amd1","window","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__184__","__WEBPACK_EXTERNAL_MODULE__532__","__WEBPACK_EXTERNAL_MODULE__620__","TickConstructor","BrokenAxis","GridAxisSide","__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__","treegrid_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default","addEvent","find","fireEvent","isArray","isNumber","pick","onAxisAfterInit","brokenAxis","setBreaks","options","breaks","onAxisAfterSetOptions","axis","hasBreaks","ordinal","onAxisAfterSetTickPositions","tickPositions","info","newPositions","i","length","isInAnyBreak","push","onAxisInit","Additions","onSeriesAfterGeneratePoints","isDirty","connectNulls","points","xAxis","yAxis","point","isPointInBreak","y","x","visible","onSeriesAfterRender","drawBreaks","pointArrayMap","seriesDrawBreaks","keys","threshold","series","forEach","breakArray","isXAxis","min","breaksOutOfRange","filter","brk","isOut","otherBreak","from","to","toUpperCase","eventName","seriesGappedPath","currentDataGrouping","groupingSize","gapSize","slice","current","next","gapUnit","basePointRange","xRange","splice","isNull","stacking","stack","stacks","stackKey","stackLabels","total","getGraphPath","compose","AxisClass","SeriesClass","keepProps","includes","seriesProto","gappedPath","isInBreak","val","repeat","Infinity","test","inclusive","lin2Val","nval","len","val2Lin","constructor","findBreakAt","b","testKeep","inbrk","keep","ret","showPoints","redraw","time","chart","parse","userOptions","forceRedraw","val2lin","lin2val","setExtremes","newMin","newMax","animation","eventArguments","axisBreak","setAxisTranslation","unitLength","breakArrayT","pointRangePadding","inBrk","userMin","max","userMax","start","value","move","size","breakSize","sort","staticScale","transA","minPixelPadding","minPointOffset","Axis_BrokenAxis","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default","dateFormats","GridAxis_addEvent","defined","erase","GridAxis_find","GridAxis_isArray","GridAxis_isNumber","merge","GridAxis_pick","timeUnits","wrap","isObject","getMaxLabelDimensions","ticks","dimensions","width","height","pos","tick","labelHeight","labelWidth","label","getBBox","textStr","textPxLength","Math","round","type","treeGrid","mapOfPosToGridNode","treeDepth","labels","indentation","wrapGetOffset","proceed","grid","columnsFirst","side","apply","isColumn","columns","reverse","column","getOffset","onAfterGetTitlePosition","e","gridOptions","enabled","axisTitle","axisHeight","horiz","left","axisLeft","offset","opposite","top","axisTop","axisWidth","tickSize","titleWidth","xOption","title","yOption","titleMargin","margin","titleFontSize","renderer","fontMetrics","f","offAxis","bottom","titlePosition","onAfterInit","applyGridOptions","align","categories","showLastLabel","labelRotation","rotation","minTickInterval","columnIndex","columnOptions","isInternal","linkedTo","scrollbar","axes","coll","onAfterRender","firstTick","styledMode","slotWidth","style","css","maxLabelDimensions","rightWall","destroy","isOuterAxis","axisLine","lineWidth","linePath","getLinePath","startPoint","endPoint","distance","tickLength","marginRight","upperBorderEndPoint","upperBorderPath","lowerBorderEndPoint","chartWidth","toPixels","tickmarkOffset","lowerBorderPath","upperBorder","renderBorder","attr","stroke","lineColor","animate","lowerBorder","axisLineExtra","showAxis","render","hasRendered","linkedParent","tickMark","lastTick","hiddenLabels","pop","element","show","hiddenMarks","hide","mark","isLast","onAfterSetAxisTranslation","tickInfo","userLabels","pointRange","dateTimeLabelFormats","unitName","range","count","tickInterval","onAfterSetOptions","gridAxisOptions","className","hour","list","day","week","month","borderWidth","padding","fontSize","text","reserveSpace","textOverflow","units","tickPixelInterval","tickPositioner","parentInfo","unitIdx","unit","counts","unitRange","getTimeTicks","startOfWeek","minPadding","maxPadding","tickWidth","onAfterSetOptions2","onAfterSetScale","setScale","onAfterTickSize","labelPadding","cellHeight","onChartAfterSetChartSize","setAxisSize","onDestroy","keepEvents","onInit","borderColor","tickColor","GridAxisAdditions","onTickAfterGetLabelPosition","reversed","labelOpts","tickPos","nextTickPos","index","crispCorr","right","chartHeight","translate","lblMetrics","useHTML","lines","h","onTickLabelFormat","ctx","pointCopy","isFirst","data","p","is","seriesTypes","gantt","pointClass","setGanttPointAliases","onTrimTicks","categoryAxis","firstPos","secondPos","lastPos","beforeLastPos","linkedMin","linkedMax","startLessThanMin","endMoreThanMin","startLessThanMax","endMoreThanMax","isLinked","startOnTick","endOnTick","wrapUnsquish","args","arguments","Array","parentAxis","thisIndex","lastIndex","inverted","otherAxis","path","extraBorderLine","addClass","add","axisGroup","zIndex","E","timestamp","dateFormat","charAt","W","toParts","firstDay","thursday","firstThursday","makeTime","floor","thursdayTS","toString","Axis_GridAxis","ChartClass","TickClass","extend","Tree_isNumber","Tree_pick","getNode","id","parent","level","mapOfIdToChildren","after","before","node","depth","descendants","end","children","map","child","childStart","NaN","childEnd","milestone","Gantt_Tree","getTree","getListOfParents","ids","listOfParents","reduce","prev","curr","indexOf","adoptedByRoot","orphan","parentExcluded","TreeGridTick_addEvent","removeEvent","TreeGridTick_isObject","TreeGridTick_isNumber","TreeGridTick_pick","TreeGridTick_wrap","onTickInit","TreeGridTickAdditions","wrapGetLabelPosition","labelOptions","step","lbOptions","isTreeGrid","result","symbol","wrapRenderLabel","collapsed","addClassName","removeClassName","tickGrid","tickOptions","icon","labelIcon","labelElement","axisGrid","axisOptions","symbolOptions","hasDescendants","isTreeGridElement","shouldRender","prefixClassName","prefixLevelClass","removeClass","RegExp","isCollapsed","renderLabelIcon","params","isNew","labelBox","xy","iconCenter","symbols","group","cursor","color","strokeWidth","translateX","translateY","styles","parentGroup","object","attachedTreeGridEvents","textDecoration","onTickHoverExit","toggleCollapse","tickProto","collapse","expand","posMappedNodes","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","TreeUtilities_extend","TreeUtilities_isArray","TreeUtilities_isNumber","TreeUtilities_isObject","TreeUtilities_merge","TreeUtilities_pick","relativeLength","getLevelOptions","TreeGridAxis_getLevelOptions","getColor","colorByPoint","colorIndexByPoint","colorIndex","mapOptionsToLevel","parentColor","parentColorIndex","colors","siblings","chartOptionsChart","colorCount","variateColor","colorVariation","brighten","defaults","converted","levels","item","levelIsConstant","getNodeWidth","columnCount","nodeDistance","nodeWidth","plotSizeX","fraction","parseFloat","nDistance","Number","setTreeValues","tree","idRoot","nodeRoot","mapIdToNode","optionsPoint","childrenTotal","levelDynamic","name","newOptions","isLeaf","updateRootId","rootId","rootNode","TreeGridAxis_addEvent","TreeGridAxis_isArray","splat","TreeGridAxis_find","TreeGridAxis_fireEvent","TreeGridAxis_isObject","isString","TreeGridAxis_merge","TreeGridAxis_pick","TreeGridAxis_removeEvent","TreeGridAxis_wrap","getBreakFromNode","collapseEnd","collapseStart","getTreeGridFromData","uniqueNames","numberOfSeries","collapsedNodes","mapOfIdToNode","uniqueNamesEnabled","posIterator","gridNode","parentNode","parentGridNode","nodes","updateYValuesAndTickPos","setValues","diff","seriesIndex","onBeforeRender","target","some","isDirtyData","seriesHasPrimitivePoints","arr","s","seriesData","firstPoint","foundPrimitivePoint","pointOptions","optionsToObject","hasNames","axisData","toArray","x2","setData","wrapGenerateTick","levelOptions","category","parameters","addLabel","wrapInit","TreeGridAxisAdditions","concat","fontWeight","wrapSetTickInterval","dataMin","dataMax","getTickPositions","linkedParentExtremes","getExtremes","wrapRedraw","axisProps","utils","TreeGridTick","setCollapsedStatus","dataPoint","roundedMin","roundedMax","ceil","G","TreeGridAxis","Axis","Chart","Series","Tick"],"mappings":"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"}
Hacked By AnonymousFox1.0, Coded By AnonymousFox