Hacked By AnonymousFox

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

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/annotations\n * @requires highcharts\n *\n * Annotations module\n *\n * (c) 2009-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"AST\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/annotations\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"SeriesRegistry\"],amd1[\"Templating\"],amd1[\"AST\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/annotations\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"SeriesRegistry\"], root[\"_Highcharts\"][\"Templating\"], root[\"_Highcharts\"][\"AST\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"AST\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__660__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 660:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__660__;\n\n/***/ }),\n\n/***/ 512:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 984:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\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 */ annotations_src)\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es-modules/Extensions/Annotations/AnnotationChart.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { addEvent, erase, find, fireEvent, pick, wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Add an annotation to the chart after render time.\n *\n * @sample highcharts/annotations/add-annotation/\n *         Add annotation\n *\n * @function Highcharts.Chart#addAnnotation\n *\n * @param  {Highcharts.AnnotationsOptions} options\n *         The annotation options for the new, detailed annotation.\n *\n * @param {boolean} [redraw]\n *\n * @return {Highcharts.Annotation}\n *         The newly generated annotation.\n */\nfunction chartAddAnnotation(userOptions, redraw) {\n    const annotation = this.initAnnotation(userOptions);\n    this.options.annotations.push(annotation.options);\n    if (pick(redraw, true)) {\n        annotation.redraw();\n        annotation.graphic.attr({\n            opacity: 1\n        });\n    }\n    return annotation;\n}\n/**\n * @private\n */\nfunction chartCallback() {\n    const chart = this;\n    chart.plotBoxClip = this.renderer.clipRect(this.plotBox);\n    chart.controlPointsGroup = chart.renderer\n        .g('control-points')\n        .attr({ zIndex: 99 })\n        .clip(chart.plotBoxClip)\n        .add();\n    chart.options.annotations.forEach((annotationOptions, i) => {\n        if (\n        // Verify that it has not been previously added in a responsive rule\n        !chart.annotations.some((annotation) => annotation.options === annotationOptions)) {\n            const annotation = chart.initAnnotation(annotationOptions);\n            chart.options.annotations[i] = annotation.options;\n        }\n    });\n    chart.drawAnnotations();\n    addEvent(chart, 'redraw', chart.drawAnnotations);\n    addEvent(chart, 'destroy', function () {\n        chart.plotBoxClip.destroy();\n        chart.controlPointsGroup.destroy();\n    });\n    addEvent(chart, 'exportData', function (event) {\n        const annotations = chart.annotations, csvColumnHeaderFormatter = ((this.options.exporting &&\n            this.options.exporting.csv) ||\n            {}).columnHeaderFormatter, \n        // If second row doesn't have xValues\n        // then it is a title row thus multiple level header is in use.\n        multiLevelHeaders = !event.dataRows[1].xValues, annotationHeader = (chart.options.lang &&\n            chart.options.lang.exportData &&\n            chart.options.lang.exportData.annotationHeader), columnHeaderFormatter = function (index) {\n            let s;\n            if (csvColumnHeaderFormatter) {\n                s = csvColumnHeaderFormatter(index);\n                if (s !== false) {\n                    return s;\n                }\n            }\n            s = annotationHeader + ' ' + index;\n            if (multiLevelHeaders) {\n                return {\n                    columnTitle: s,\n                    topLevelColumnTitle: s\n                };\n            }\n            return s;\n        }, startRowLength = event.dataRows[0].length, annotationSeparator = (chart.options.exporting &&\n            chart.options.exporting.csv &&\n            chart.options.exporting.csv.annotations &&\n            chart.options.exporting.csv.annotations.itemDelimiter), joinAnnotations = (chart.options.exporting &&\n            chart.options.exporting.csv &&\n            chart.options.exporting.csv.annotations &&\n            chart.options.exporting.csv.annotations.join);\n        annotations.forEach((annotation) => {\n            if (annotation.options.labelOptions &&\n                annotation.options.labelOptions.includeInDataExport) {\n                annotation.labels.forEach((label) => {\n                    if (label.options.text) {\n                        const annotationText = label.options.text;\n                        label.points.forEach((points) => {\n                            const annotationX = points.x, xAxisIndex = points.series.xAxis ?\n                                points.series.xAxis.index :\n                                -1;\n                            let wasAdded = false;\n                            // Annotation not connected to any xAxis -\n                            // add new row.\n                            if (xAxisIndex === -1) {\n                                const n = event.dataRows[0].length, newRow = new Array(n);\n                                for (let i = 0; i < n; ++i) {\n                                    newRow[i] = '';\n                                }\n                                newRow.push(annotationText);\n                                newRow.xValues = [];\n                                newRow.xValues[xAxisIndex] = annotationX;\n                                event.dataRows.push(newRow);\n                                wasAdded = true;\n                            }\n                            // Annotation placed on a exported data point\n                            // - add new column\n                            if (!wasAdded) {\n                                event.dataRows.forEach((row) => {\n                                    if (!wasAdded &&\n                                        row.xValues &&\n                                        xAxisIndex !== void 0 &&\n                                        annotationX === row.xValues[xAxisIndex]) {\n                                        if (joinAnnotations &&\n                                            row.length > startRowLength) {\n                                            row[row.length - 1] += (annotationSeparator +\n                                                annotationText);\n                                        }\n                                        else {\n                                            row.push(annotationText);\n                                        }\n                                        wasAdded = true;\n                                    }\n                                });\n                            }\n                            // Annotation not placed on any exported data point,\n                            // but connected to the xAxis - add new row\n                            if (!wasAdded) {\n                                const n = event.dataRows[0].length, newRow = new Array(n);\n                                for (let i = 0; i < n; ++i) {\n                                    newRow[i] = '';\n                                }\n                                newRow[0] = annotationX;\n                                newRow.push(annotationText);\n                                newRow.xValues = [];\n                                if (xAxisIndex !== void 0) {\n                                    newRow.xValues[xAxisIndex] = annotationX;\n                                }\n                                event.dataRows.push(newRow);\n                            }\n                        });\n                    }\n                });\n            }\n        });\n        let maxRowLen = 0;\n        event.dataRows.forEach((row) => {\n            maxRowLen = Math.max(maxRowLen, row.length);\n        });\n        const newRows = maxRowLen - event.dataRows[0].length;\n        for (let i = 0; i < newRows; i++) {\n            const header = columnHeaderFormatter(i + 1);\n            if (multiLevelHeaders) {\n                event.dataRows[0].push(header.topLevelColumnTitle);\n                event.dataRows[1].push(header.columnTitle);\n            }\n            else {\n                event.dataRows[0].push(header);\n            }\n        }\n    });\n}\n/**\n * @private\n */\nfunction chartDrawAnnotations() {\n    this.plotBoxClip.attr(this.plotBox);\n    this.annotations.forEach((annotation) => {\n        annotation.redraw();\n        annotation.graphic.animate({\n            opacity: 1\n        }, annotation.animationConfig);\n    });\n}\n/**\n * Remove an annotation from the chart.\n *\n * @function Highcharts.Chart#removeAnnotation\n *\n * @param {number|string|Highcharts.Annotation} idOrAnnotation\n *        The annotation's id or direct annotation object.\n */\nfunction chartRemoveAnnotation(idOrAnnotation) {\n    const annotations = this.annotations, annotation = (idOrAnnotation.coll === 'annotations') ?\n        idOrAnnotation :\n        find(annotations, function (annotation) {\n            return annotation.options.id === idOrAnnotation;\n        });\n    if (annotation) {\n        fireEvent(annotation, 'remove');\n        erase(this.options.annotations, annotation.options);\n        erase(annotations, annotation);\n        annotation.destroy();\n    }\n}\n/**\n * Create lookups initially\n * @private\n */\nfunction onChartAfterInit() {\n    const chart = this;\n    chart.annotations = [];\n    if (!this.options.annotations) {\n        this.options.annotations = [];\n    }\n}\n/**\n * @private\n */\nfunction wrapPointerOnContainerMouseDown(proceed) {\n    if (!this.chart.hasDraggedAnnotation) {\n        proceed.apply(this, Array.prototype.slice.call(arguments, 1));\n    }\n}\n/* *\n *\n *  Composition\n *\n * */\n/**\n * @private\n */\nvar AnnotationChart;\n(function (AnnotationChart) {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(AnnotationClass, ChartClass, PointerClass) {\n        const chartProto = ChartClass.prototype;\n        if (!chartProto.addAnnotation) {\n            const pointerProto = PointerClass.prototype;\n            addEvent(ChartClass, 'afterInit', onChartAfterInit);\n            chartProto.addAnnotation = chartAddAnnotation;\n            chartProto.callbacks.push(chartCallback);\n            chartProto.collectionsWithInit.annotations = [chartAddAnnotation];\n            chartProto.collectionsWithUpdate.push('annotations');\n            chartProto.drawAnnotations = chartDrawAnnotations;\n            chartProto.removeAnnotation = chartRemoveAnnotation;\n            chartProto.initAnnotation = function chartInitAnnotation(userOptions) {\n                const Constructor = (AnnotationClass.types[userOptions.type] ||\n                    AnnotationClass), annotation = new Constructor(this, userOptions);\n                this.annotations.push(annotation);\n                return annotation;\n            };\n            wrap(pointerProto, 'onContainerMouseDown', wrapPointerOnContainerMouseDown);\n        }\n    }\n    AnnotationChart.compose = compose;\n})(AnnotationChart || (AnnotationChart = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_AnnotationChart = (AnnotationChart);\n\n;// ./code/es-modules/Extensions/Annotations/AnnotationDefaults.js\n/* *\n *\n *  Imports\n *\n * */\n\nconst { defined } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  API Options\n *\n * */\n/**\n * A basic type of an annotation. It allows to add custom labels\n * or shapes. The items can be tied to points, axis coordinates\n * or chart pixel coordinates.\n *\n * @sample highcharts/annotations/basic/\n *         Basic annotations\n * @sample highcharts/demo/annotations/\n *         Advanced annotations\n * @sample highcharts/css/annotations\n *         Styled mode\n * @sample highcharts/annotations-advanced/controllable\n *         Controllable items\n * @sample {highstock} stock/annotations/fibonacci-retracements\n *         Custom annotation, Fibonacci retracement\n *\n * @type         {Array<*>}\n * @since        6.0.0\n * @requires     modules/annotations\n * @optionparent annotations\n */\nconst AnnotationDefaults = {\n    /**\n     * Sets an ID for an annotation. Can be user later when\n     * removing an annotation in [Chart#removeAnnotation(id)](\n     * /class-reference/Highcharts.Chart#removeAnnotation) method.\n     *\n     * @type      {number|string}\n     * @apioption annotations.id\n     */\n    /**\n     * Whether the annotation is visible.\n     *\n     * @sample highcharts/annotations/visible/\n     *         Set annotation visibility\n     */\n    visible: true,\n    /**\n     * Enable or disable the initial animation when a series is\n     * displayed for the `annotation`. The animation can also be set\n     * as a configuration object. Please note that this option only\n     * applies to the initial animation.\n     * For other animations, see [chart.animation](#chart.animation)\n     * and the animation parameter under the API methods.\n     * The following properties are supported:\n     *\n     * - `defer`: The animation delay time in milliseconds.\n     *\n     * @sample {highcharts} highcharts/annotations/defer/\n     *          Animation defer settings\n     * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n     * @since 8.2.0\n     */\n    animation: {},\n    /**\n     * Whether to hide the part of the annotation\n     * that is outside the plot area.\n     *\n     * @sample highcharts/annotations/label-crop-overflow/\n     *         Crop line annotation\n     * @type  {boolean}\n     * @since 9.3.0\n     */\n    crop: true,\n    /**\n     * The animation delay time in milliseconds.\n     * Set to `0` renders annotation immediately.\n     * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n     *\n     * @type      {number}\n     * @since 8.2.0\n     * @apioption annotations.animation.defer\n     */\n    /**\n     * Allow an annotation to be draggable by a user. Possible\n     * values are `'x'`, `'xy'`, `'y'` and `''` (disabled).\n     *\n     * @sample highcharts/annotations/draggable/\n     *         Annotations draggable: 'xy'\n     *\n     * @type {Highcharts.AnnotationDraggableValue}\n     */\n    draggable: 'xy',\n    /**\n     * Options for annotation's labels. Each label inherits options\n     * from the labelOptions object. An option from the labelOptions\n     * can be overwritten by config for a specific label.\n     *\n     * @requires modules/annotations\n     */\n    labelOptions: {\n        /**\n         * The alignment of the annotation's label. If right,\n         * the right side of the label should be touching the point.\n         *\n         * @sample highcharts/annotations/label-position/\n         *         Set labels position\n         *\n         * @type {Highcharts.AlignValue}\n         */\n        align: 'center',\n        /**\n         * Whether to allow the annotation's labels to overlap.\n         * To make the labels less sensitive for overlapping,\n         * the can be set to 0.\n         *\n         * @sample highcharts/annotations/tooltip-like/\n         *         Hide overlapping labels\n         */\n        allowOverlap: false,\n        /**\n         * The background color or gradient for the annotation's\n         * label.\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         *\n         * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         */\n        backgroundColor: 'rgba(0, 0, 0, 0.75)',\n        /**\n         * The border color for the annotation's label.\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         *\n         * @type {Highcharts.ColorString}\n         */\n        borderColor: \"#000000\" /* Palette.neutralColor100 */,\n        /**\n         * The border radius in pixels for the annotation's label.\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         */\n        borderRadius: 3,\n        /**\n         * The border width in pixels for the annotation's label\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         */\n        borderWidth: 1,\n        /**\n         * A class name for styling by CSS.\n         *\n         * @sample highcharts/css/annotations\n         *         Styled mode annotations\n         *\n         * @since 6.0.5\n         */\n        className: 'highcharts-no-tooltip',\n        /**\n         * Whether to hide the annotation's label\n         * that is outside the plot area.\n         *\n         * @sample highcharts/annotations/label-crop-overflow/\n         *         Crop or justify labels\n         */\n        crop: false,\n        /**\n         * The label's pixel distance from the point.\n         *\n         * @sample highcharts/annotations/label-position/\n         *         Set labels position\n         *\n         * @type      {number}\n         * @apioption annotations.labelOptions.distance\n         */\n        /**\n         * A\n         * [format](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n         * string for the data label.\n         *\n         * @see [plotOptions.series.dataLabels.format](plotOptions.series.dataLabels.format.html)\n         *\n         * @sample highcharts/annotations/label-text/\n         *         Set labels text\n         *\n         * @type      {string}\n         * @apioption annotations.labelOptions.format\n         */\n        /**\n         * Alias for the format option.\n         *\n         * @see [format](annotations.labelOptions.format.html)\n         *\n         * @sample highcharts/annotations/label-text/\n         *         Set labels text\n         *\n         * @type      {string}\n         * @apioption annotations.labelOptions.text\n         */\n        /**\n         * Callback JavaScript function to format the annotation's\n         * label. Note that if a `format` or `text` are defined,\n         * the format or text take precedence and the formatter is\n         * ignored. `This` refers to a point object.\n         *\n         * @sample highcharts/annotations/label-text/\n         *         Set labels text\n         *\n         * @type    {Highcharts.FormatterCallbackFunction<Highcharts.Point>}\n         * @default function () { return defined(this.y) ? this.y : 'Annotation label'; }\n         */\n        formatter: function () {\n            return defined(this.y) ? '' + this.y : 'Annotation label';\n        },\n        /**\n         * Whether the annotation is visible in the exported data\n         * table.\n         *\n         * @sample highcharts/annotations/include-in-data-export/\n         *         Do not include in the data export\n         *\n         * @since 8.2.0\n         * @requires modules/export-data\n         */\n        includeInDataExport: true,\n        /**\n         * How to handle the annotation's label that flow outside\n         * the plot area. The justify option aligns the label inside\n         * the plot area.\n         *\n         * @sample highcharts/annotations/label-crop-overflow/\n         *         Crop or justify labels\n         *\n         * @validvalue [\"allow\", \"justify\"]\n         */\n        overflow: 'justify',\n        /**\n         * When either the borderWidth or the backgroundColor is\n         * set, this is the padding within the box.\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         */\n        padding: 5,\n        /**\n         * The shadow of the box. The shadow can be an object\n         * configuration containing `color`, `offsetX`, `offsetY`,\n         * `opacity` and `width`.\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         *\n         * @type {boolean|Highcharts.ShadowOptionsObject}\n         */\n        shadow: false,\n        /**\n         * The name of a symbol to use for the border around the\n         * label. Symbols are predefined functions on the Renderer\n         * object.\n         *\n         * @sample highcharts/annotations/shapes/\n         *         Available shapes for labels\n         */\n        shape: 'callout',\n        /**\n         * Styles for the annotation's label.\n         *\n         * @see [plotOptions.series.dataLabels.style](plotOptions.series.dataLabels.style.html)\n         *\n         * @sample highcharts/annotations/label-presentation/\n         *         Set labels graphic options\n         *\n         * @type {Highcharts.CSSObject}\n         */\n        style: {\n            /** @ignore */\n            fontSize: '0.7em',\n            /** @ignore */\n            fontWeight: 'normal',\n            /** @ignore */\n            color: 'contrast'\n        },\n        /**\n         * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n         * to render the annotation's label.\n         */\n        useHTML: false,\n        /**\n         * The vertical alignment of the annotation's label.\n         *\n         * @sample highcharts/annotations/label-position/\n         *         Set labels position\n         *\n         * @type {Highcharts.VerticalAlignValue}\n         */\n        verticalAlign: 'bottom',\n        /**\n         * The x position offset of the label relative to the point.\n         * Note that if a `distance` is defined, the distance takes\n         * precedence over `x` and `y` options.\n         *\n         * @sample highcharts/annotations/label-position/\n         *         Set labels position\n         */\n        x: 0,\n        /**\n         * The y position offset of the label relative to the point.\n         * Note that if a `distance` is defined, the distance takes\n         * precedence over `x` and `y` options.\n         *\n         * @sample highcharts/annotations/label-position/\n         *         Set labels position\n         */\n        y: -16\n    },\n    /**\n     * An array of labels for the annotation. For options that apply\n     * to multiple labels, they can be added to the\n     * [labelOptions](annotations.labelOptions.html).\n     *\n     * @type      {Array<*>}\n     * @extends   annotations.labelOptions\n     * @apioption annotations.labels\n     */\n    /**\n     * This option defines the point to which the label will be\n     * connected. It can be either the point which exists in the\n     * series - it is referenced by the point's id - or a new point\n     * with defined x, y properties and optionally axes.\n     *\n     * @sample highcharts/annotations/mock-point/\n     *         Attach annotation to a mock point\n     * @sample highcharts/annotations/mock-points/\n     *         Attach annotation to a mock point with different ways\n     *\n     * @declare   Highcharts.AnnotationMockPointOptionsObject\n     * @type      {\n     *               string|\n     *               Highcharts.AnnotationMockPointOptionsObject|\n     *               Highcharts.AnnotationMockPointFunction\n     *            }\n     * @requires  modules/annotations\n     * @apioption annotations.labels.point\n     */\n    /**\n     * An array of shapes for the annotation. For options that apply\n     * to multiple shapes, then can be added to the\n     * [shapeOptions](annotations.shapeOptions.html).\n     *\n     * @type      {Array<*>}\n     * @extends   annotations.shapeOptions\n     * @apioption annotations.shapes\n     */\n    /**\n     * This option defines the point to which the shape will be\n     * connected. It can be either the point which exists in the\n     * series - it is referenced by the point's id - or a new point\n     * with defined x, y properties and optionally axes.\n     *\n     * @sample highcharts/annotations/mock-points/\n     *         Attach annotation to a mock point with different ways\n     *\n     * @declare   Highcharts.AnnotationMockPointOptionsObject\n     * @type      {\n     *               string|\n     *               Highcharts.AnnotationMockPointOptionsObject|\n     *               Highcharts.AnnotationMockPointFunction\n     *            }\n     * @extends   annotations.labels.point\n     * @requires  modules/annotations\n     * @apioption annotations.shapes.point\n     */\n    /**\n     * An array of points for the shape\n     * or a callback function that returns that shape point.\n     *\n     * This option is available\n     * for shapes which can use multiple points such as path. A\n     * point can be either a point object or a point's id.\n     *\n     * @see [annotations.shapes.point](annotations.shapes.point.html)\n     *\n     * @type      {Array<Highcharts.AnnotationShapePointOptions>}\n     * @extends   annotations.labels.point\n     * @apioption annotations.shapes.points\n     */\n    /**\n     * The URL for an image to use as the annotation shape. Note,\n     * type has to be set to `'image'`.\n     *\n     * @see [annotations.shapes.type](annotations.shapes.type)\n     * @sample highcharts/annotations/shape-src/\n     *         Define a marker image url for annotations\n     *\n     * @type      {string}\n     * @apioption annotations.shapes.src\n     */\n    /**\n     * Id of the marker which will be drawn at the final vertex of\n     * the path. Custom markers can be defined in defs property.\n     *\n     * @see [defs.markers](defs.markers.html)\n     *\n     * @sample highcharts/annotations/custom-markers/\n     *         Define a custom marker for annotations\n     *\n     * @type      {string}\n     * @apioption annotations.shapes.markerEnd\n     */\n    /**\n     * Id of the marker which will be drawn at the first vertex of\n     * the path. Custom markers can be defined in defs property.\n     *\n     * @see [defs.markers](defs.markers.html)\n     *\n     * @sample {highcharts} highcharts/annotations/custom-markers/\n     *         Define a custom marker for annotations\n     *\n     * @type      {string}\n     * @apioption annotations.shapes.markerStart\n     */\n    /**\n     * Options for annotation's shapes. Each shape inherits options\n     * from the shapeOptions object. An option from the shapeOptions\n     * can be overwritten by config for a specific shape.\n     *\n     * @requires  modules/annotations\n     */\n    shapeOptions: {\n        /**\n         *\n         * The radius of the shape in y direction.\n         * Used for the ellipse.\n         *\n         * @sample highcharts/annotations/ellipse/\n         *         Ellipse annotation\n         *\n         * @type      {number}\n         * @apioption annotations.shapeOptions.ry\n         **/\n        /**\n         *\n         * The xAxis index to which the points should be attached.\n         * Used for the ellipse.\n         *\n         * @type      {number}\n         * @apioption annotations.shapeOptions.xAxis\n         **/\n        /**\n         * The yAxis index to which the points should be attached.\n         * Used for the ellipse.\n         *\n         * @type      {number}\n         * @apioption annotations.shapeOptions.yAxis\n         **/\n        /**\n         * The width of the shape.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         *\n         * @type      {number}\n         * @apioption annotations.shapeOptions.width\n         **/\n        /**\n         * The height of the shape.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         *\n         * @type      {number}\n         * @apioption annotations.shapeOptions.height\n         */\n        /**\n         * The type of the shape.\n         * Available options are circle, rect and ellipse.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         *\n         * @sample highcharts/annotations/ellipse/\n         *         Ellipse annotation\n         *\n         * @type      {string}\n         * @default   rect\n         * @apioption annotations.shapeOptions.type\n         */\n        /**\n         * The URL for an image to use as the annotation shape.\n         * Note, type has to be set to `'image'`.\n         *\n         * @see [annotations.shapeOptions.type](annotations.shapeOptions.type)\n         * @sample highcharts/annotations/shape-src/\n         *         Define a marker image url for annotations\n         *\n         * @type      {string}\n         * @apioption annotations.shapeOptions.src\n         */\n        /**\n         * Name of the dash style to use for the shape's stroke.\n         *\n         * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n         *         Possible values demonstrated\n         *\n         * @type      {Highcharts.DashStyleValue}\n         * @apioption annotations.shapeOptions.dashStyle\n         */\n        /**\n         * The color of the shape's stroke.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         *\n         * @type {Highcharts.ColorString}\n         */\n        stroke: 'rgba(0, 0, 0, 0.75)',\n        /**\n         * The pixel stroke width of the shape.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         */\n        strokeWidth: 1,\n        /**\n         * The color of the shape's fill.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         *\n         * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         */\n        fill: 'rgba(0, 0, 0, 0.75)',\n        /**\n         * The radius of the shape.\n         *\n         * @sample highcharts/annotations/shape/\n         *         Basic shape annotation\n         */\n        r: 0,\n        /**\n         * Defines additional snapping area around an annotation\n         * making this annotation to focus. Defined in pixels.\n         */\n        snap: 2\n    },\n    /**\n     * Options for annotation's control points. Each control point\n     * inherits options from controlPointOptions object.\n     * Options from the controlPointOptions can be overwritten\n     * by options in a specific control point.\n     *\n     * @declare  Highcharts.AnnotationControlPointOptionsObject\n     * @requires modules/annotations\n     */\n    controlPointOptions: {\n        /**\n         * @type      {Highcharts.AnnotationControlPointPositionerFunction}\n         * @apioption annotations.controlPointOptions.positioner\n         */\n        /**\n         * @type {Highcharts.Dictionary<Function>}\n         */\n        events: {},\n        /**\n         * @type {Highcharts.SVGAttributes}\n         */\n        style: {\n            cursor: 'pointer',\n            fill: \"#ffffff\" /* Palette.backgroundColor */,\n            stroke: \"#000000\" /* Palette.neutralColor100 */,\n            'stroke-width': 2\n        },\n        height: 10,\n        symbol: 'circle',\n        visible: false,\n        width: 10\n    },\n    /**\n     * Event callback when annotation is added to the chart.\n     *\n     * @type      {Highcharts.EventCallbackFunction<Highcharts.Annotation>}\n     * @since     7.1.0\n     * @apioption annotations.events.add\n     */\n    /**\n     * Event callback when annotation is updated (e.g. drag and\n     * dropped or resized by control points).\n     *\n     * @type      {Highcharts.EventCallbackFunction<Highcharts.Annotation>}\n     * @since     7.1.0\n     * @apioption annotations.events.afterUpdate\n     */\n    /**\n     * Fires when the annotation is clicked.\n     *\n     * @type      {Highcharts.EventCallbackFunction<Highcharts.Annotation>}\n     * @since     7.1.0\n     * @apioption annotations.events.click\n     */\n    /**\n     * Fires when the annotation is dragged.\n     *\n     * @type      {Highcharts.EventCallbackFunction<Highcharts.Annotation>}\n     * @apioption annotations.events.drag\n     */\n    /**\n     * Event callback when annotation is removed from the chart.\n     *\n     * @type      {Highcharts.EventCallbackFunction<Highcharts.Annotation>}\n     * @since     7.1.0\n     * @apioption annotations.events.remove\n     */\n    /**\n     * Events available in annotations.\n     *\n     * @requires modules/annotations\n     */\n    events: {},\n    /**\n     * The Z index of the annotation.\n     */\n    zIndex: 6\n}; // Type options are expected but not set\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_AnnotationDefaults = (AnnotationDefaults);\n\n;// ./code/es-modules/Extensions/Annotations/EventEmitter.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { doc, isTouchDevice } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: EventEmitter_addEvent, fireEvent: EventEmitter_fireEvent, objectEach, pick: EventEmitter_pick, removeEvent } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n */\nclass EventEmitter {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Add emitter events.\n     * @private\n     */\n    addEvents() {\n        const emitter = this, addMouseDownEvent = function (element) {\n            EventEmitter_addEvent(element, isTouchDevice ? 'touchstart' : 'mousedown', (e) => {\n                emitter.onMouseDown(e);\n            }, { passive: false });\n        };\n        addMouseDownEvent(this.graphic.element);\n        (emitter.labels || []).forEach((label) => {\n            if (label.options.useHTML && label.graphic.text) {\n                // Mousedown event bound to HTML element (#13070).\n                addMouseDownEvent(label.graphic.text.element);\n            }\n        });\n        objectEach(emitter.options.events, (event, type) => {\n            const eventHandler = function (e) {\n                if (type !== 'click' || !emitter.cancelClick) {\n                    event.call(emitter, emitter.chart.pointer?.normalize(e), emitter.target);\n                }\n            };\n            if ((emitter.nonDOMEvents || []).indexOf(type) === -1) {\n                EventEmitter_addEvent(emitter.graphic.element, type, eventHandler, { passive: false });\n                if (emitter.graphic.div) {\n                    EventEmitter_addEvent(emitter.graphic.div, type, eventHandler, { passive: false });\n                }\n            }\n            else {\n                EventEmitter_addEvent(emitter, type, eventHandler, { passive: false });\n            }\n        });\n        if (emitter.options.draggable) {\n            EventEmitter_addEvent(emitter, 'drag', emitter.onDrag);\n            if (!emitter.graphic.renderer.styledMode) {\n                const cssPointer = {\n                    cursor: {\n                        x: 'ew-resize',\n                        y: 'ns-resize',\n                        xy: 'move'\n                    }[emitter.options.draggable]\n                };\n                emitter.graphic.css(cssPointer);\n                (emitter.labels || []).forEach((label) => {\n                    if (label.options.useHTML && label.graphic.text) {\n                        label.graphic.text.css(cssPointer);\n                    }\n                });\n            }\n        }\n        if (!emitter.isUpdating) {\n            EventEmitter_fireEvent(emitter, 'add');\n        }\n    }\n    /**\n     * Destroy the event emitter.\n     */\n    destroy() {\n        this.removeDocEvents();\n        removeEvent(this);\n        this.hcEvents = null;\n    }\n    /**\n     * Map mouse move event to the radians.\n     * @private\n     */\n    mouseMoveToRadians(e, cx, cy) {\n        let prevDy = e.prevChartY - cy, prevDx = e.prevChartX - cx, dy = e.chartY - cy, dx = e.chartX - cx, temp;\n        if (this.chart.inverted) {\n            temp = prevDx;\n            prevDx = prevDy;\n            prevDy = temp;\n            temp = dx;\n            dx = dy;\n            dy = temp;\n        }\n        return Math.atan2(dy, dx) - Math.atan2(prevDy, prevDx);\n    }\n    /**\n     * Map mouse move to the scale factors.\n     * @private\n     */\n    mouseMoveToScale(e, cx, cy) {\n        const prevDx = e.prevChartX - cx, prevDy = e.prevChartY - cy, dx = e.chartX - cx, dy = e.chartY - cy;\n        let sx = (dx || 1) / (prevDx || 1), sy = (dy || 1) / (prevDy || 1);\n        if (this.chart.inverted) {\n            const temp = sy;\n            sy = sx;\n            sx = temp;\n        }\n        return {\n            x: sx,\n            y: sy\n        };\n    }\n    /**\n     * Map mouse move event to the distance between two following events.\n     * @private\n     */\n    mouseMoveToTranslation(e) {\n        let dx = e.chartX - e.prevChartX, dy = e.chartY - e.prevChartY, temp;\n        if (this.chart.inverted) {\n            temp = dy;\n            dy = dx;\n            dx = temp;\n        }\n        return {\n            x: dx,\n            y: dy\n        };\n    }\n    /**\n     * Drag and drop event. All basic annotations should share this\n     * capability as well as the extended ones.\n     * @private\n     */\n    onDrag(e) {\n        if (this.chart.isInsidePlot(e.chartX - this.chart.plotLeft, e.chartY - this.chart.plotTop, {\n            visiblePlotOnly: true\n        })) {\n            const translation = this.mouseMoveToTranslation(e);\n            if (this.options.draggable === 'x') {\n                translation.y = 0;\n            }\n            if (this.options.draggable === 'y') {\n                translation.x = 0;\n            }\n            const emitter = this;\n            if (emitter.points.length) {\n                emitter.translate(translation.x, translation.y);\n            }\n            else {\n                emitter.shapes.forEach((shape) => shape.translate(translation.x, translation.y));\n                emitter.labels.forEach((label) => label.translate(translation.x, translation.y));\n            }\n            this.redraw(false);\n        }\n    }\n    /**\n     * Mouse down handler.\n     * @private\n     */\n    onMouseDown(e) {\n        if (e.preventDefault) {\n            e.preventDefault();\n        }\n        // On right click, do nothing:\n        if (e.button === 2) {\n            return;\n        }\n        const emitter = this, pointer = emitter.chart.pointer, \n        // Using experimental property on event object to check if event was\n        // created by touch on screen on hybrid device (#18122)\n        firesTouchEvents = (e?.sourceCapabilities?.firesTouchEvents) || false;\n        e = pointer?.normalize(e) || e;\n        let prevChartX = e.chartX, prevChartY = e.chartY;\n        emitter.cancelClick = false;\n        emitter.chart.hasDraggedAnnotation = true;\n        emitter.removeDrag = EventEmitter_addEvent(doc, isTouchDevice || firesTouchEvents ? 'touchmove' : 'mousemove', function (e) {\n            emitter.hasDragged = true;\n            e = pointer?.normalize(e) || e;\n            e.prevChartX = prevChartX;\n            e.prevChartY = prevChartY;\n            EventEmitter_fireEvent(emitter, 'drag', e);\n            prevChartX = e.chartX;\n            prevChartY = e.chartY;\n        }, isTouchDevice || firesTouchEvents ? { passive: false } : void 0);\n        emitter.removeMouseUp = EventEmitter_addEvent(doc, isTouchDevice || firesTouchEvents ? 'touchend' : 'mouseup', function () {\n            // Sometimes the target is the annotation and sometimes its the\n            // controllable\n            const annotation = EventEmitter_pick(emitter.target && emitter.target.annotation, emitter.target);\n            if (annotation) {\n                // Keep annotation selected after dragging control point\n                annotation.cancelClick = emitter.hasDragged;\n            }\n            emitter.cancelClick = emitter.hasDragged;\n            emitter.chart.hasDraggedAnnotation = false;\n            if (emitter.hasDragged) {\n                // ControlPoints vs Annotation:\n                EventEmitter_fireEvent(EventEmitter_pick(annotation, // #15952\n                emitter), 'afterUpdate');\n            }\n            emitter.hasDragged = false;\n            emitter.onMouseUp();\n        }, isTouchDevice || firesTouchEvents ? { passive: false } : void 0);\n    }\n    /**\n     * Mouse up handler.\n     */\n    onMouseUp() {\n        this.removeDocEvents();\n    }\n    /**\n     * Remove emitter document events.\n     * @private\n     */\n    removeDocEvents() {\n        if (this.removeDrag) {\n            this.removeDrag = this.removeDrag();\n        }\n        if (this.removeMouseUp) {\n            this.removeMouseUp = this.removeMouseUp();\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_EventEmitter = (EventEmitter);\n\n;// ./code/es-modules/Extensions/Annotations/ControlPoint.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { merge, pick: ControlPoint_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * A control point class which is a connection between controllable\n * transform methods and a user actions.\n *\n * @requires modules/annotations\n *\n * @class\n * @name Highcharts.AnnotationControlPoint\n *\n * @hideconstructor\n *\n * @param {Highcharts.Chart} chart\n * A chart instance.\n *\n * @param {Highcharts.AnnotationControllable} target\n * A controllable instance which is a target for a control point.\n *\n * @param {Highcharts.AnnotationControlPointOptionsObject} options\n * An options object.\n *\n * @param {number} [index]\n * Point index.\n */\nclass ControlPoint extends Annotations_EventEmitter {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(chart, target, options, index) {\n        super();\n        /**\n         * List of events for `annotation.options.events` that should not be\n         * added to `annotation.graphic` but to the `annotation`.\n         * @private\n         * @name Highcharts.AnnotationControlPoint#nonDOMEvents\n         * @type {Array<string>}\n         */\n        this.nonDOMEvents = ['drag'];\n        this.chart = chart;\n        this.target = target;\n        this.options = options;\n        this.index = ControlPoint_pick(options.index, index);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Destroy the control point.\n     * @private\n     */\n    destroy() {\n        super.destroy();\n        if (this.graphic) {\n            this.graphic = this.graphic.destroy();\n        }\n        this.chart = null;\n        this.target = null;\n        this.options = null;\n    }\n    /**\n     * Redraw the control point.\n     * @private\n     * @param {boolean} [animation]\n     */\n    redraw(animation) {\n        this.graphic[animation ? 'animate' : 'attr'](this.options.positioner.call(this, this.target));\n    }\n    /**\n     * Render the control point.\n     * @private\n     */\n    render() {\n        const chart = this.chart, options = this.options;\n        this.graphic = chart.renderer\n            .symbol(options.symbol, 0, 0, options.width, options.height)\n            .add(chart.controlPointsGroup)\n            .css(options.style);\n        this.setVisibility(options.visible);\n        // `npm test -- --tests \"highcharts/annotations-advanced/*\"`\n        this.addEvents();\n    }\n    /**\n     * Set the visibility of the control point.\n     *\n     * @function Highcharts.AnnotationControlPoint#setVisibility\n     *\n     * @param {boolean} visible\n     * Visibility of the control point.\n     *\n     */\n    setVisibility(visible) {\n        this.graphic[visible ? 'show' : 'hide']();\n        this.options.visible = visible;\n    }\n    /**\n     * Update the control point.\n     *\n     * @function Highcharts.AnnotationControlPoint#update\n     *\n     * @param {Partial<Highcharts.AnnotationControlPointOptionsObject>} userOptions\n     * New options for the control point.\n     */\n    update(userOptions) {\n        const chart = this.chart, target = this.target, index = this.index, options = merge(true, this.options, userOptions);\n        this.destroy();\n        this.constructor(chart, target, options, index);\n        this.render(chart.controlPointsGroup);\n        this.redraw();\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_ControlPoint = (ControlPoint);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * Callback to modify annotation's positioner controls.\n *\n * @callback Highcharts.AnnotationControlPointPositionerFunction\n * @param {Highcharts.AnnotationControlPoint} this\n * @param {Highcharts.AnnotationControllable} target\n * @return {Highcharts.PositionObject}\n */\n(''); // Keeps doclets above in JS file\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es-modules/Extensions/Annotations/MockPoint.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { series: { prototype: seriesProto } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { defined: MockPoint_defined, fireEvent: MockPoint_fireEvent } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * A trimmed point object which imitates {@link Highchart.Point} class. It is\n * created when there is a need of pointing to some chart's position using axis\n * values or pixel values\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationMockPoint\n *\n * @hideconstructor\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.AnnotationControllable|null} target\n * The related controllable.\n *\n * @param {Highcharts.AnnotationMockPointOptionsObject|Function} options\n * The options object.\n */\nclass MockPoint {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * Create a mock point from a real Highcharts point.\n     *\n     * @private\n     * @static\n     *\n     * @param {Highcharts.Point} point\n     *\n     * @return {Highcharts.AnnotationMockPoint}\n     * A mock point instance.\n     */\n    static fromPoint(point) {\n        return new MockPoint(point.series.chart, null, {\n            x: point.x,\n            y: point.y,\n            xAxis: point.series.xAxis,\n            yAxis: point.series.yAxis\n        });\n    }\n    /**\n     * Get the pixel position from the point like object.\n     *\n     * @private\n     * @static\n     *\n     * @param {Highcharts.AnnotationPointType} point\n     *\n     * @param {boolean} [paneCoordinates]\n     *        Whether the pixel position should be relative\n     *\n     * @return {Highcharts.PositionObject} pixel position\n     */\n    static pointToPixels(point, paneCoordinates) {\n        const series = point.series, chart = series.chart;\n        let x = point.plotX || 0, y = point.plotY || 0, plotBox;\n        if (chart.inverted) {\n            if (point.mock) {\n                x = point.plotY;\n                y = point.plotX;\n            }\n            else {\n                x = chart.plotWidth - (point.plotY || 0);\n                y = chart.plotHeight - (point.plotX || 0);\n            }\n        }\n        if (series && !paneCoordinates) {\n            plotBox = series.getPlotBox();\n            x += plotBox.translateX;\n            y += plotBox.translateY;\n        }\n        return {\n            x: x,\n            y: y\n        };\n    }\n    /**\n     * Get fresh mock point options from the point like object.\n     *\n     * @private\n     * @static\n     *\n     * @param {Highcharts.AnnotationPointType} point\n     *\n     * @return {Highcharts.AnnotationMockPointOptionsObject}\n     * A mock point's options.\n     */\n    static pointToOptions(point) {\n        return {\n            x: point.x,\n            y: point.y,\n            xAxis: point.series.xAxis,\n            yAxis: point.series.yAxis\n        };\n    }\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(chart, target, options) {\n        /* *\n         *\n         * Functions\n         *\n         * */\n        /**\n         * A flag indicating that a point is not the real one.\n         *\n         * @type {boolean}\n         * @default true\n         */\n        this.mock = true;\n        // Circular reference for formats and formatters\n        this.point = this;\n        /**\n         * A mock series instance imitating a real series from a real point.\n         *\n         * @name Annotation.AnnotationMockPoint#series\n         * @type {Highcharts.AnnotationMockSeries}\n         */\n        this.series = {\n            visible: true,\n            chart: chart,\n            getPlotBox: seriesProto.getPlotBox\n        };\n        /**\n         * @name Annotation.AnnotationMockPoint#target\n         * @type {Highcharts.AnnotationControllable|null}\n         */\n        this.target = target || null;\n        /**\n         * Options for the mock point.\n         *\n         * @name Annotation.AnnotationMockPoint#options\n         * @type {Highcharts.AnnotationsMockPointOptionsObject}\n         */\n        this.options = options;\n        /**\n         * If an xAxis is set it represents the point's value in terms of the\n         * xAxis.\n         *\n         * @name Annotation.AnnotationMockPoint#x\n         * @type {number|undefined}\n         */\n        /**\n         * If an yAxis is set it represents the point's value in terms of the\n         * yAxis.\n         *\n         * @name Annotation.AnnotationMockPoint#y\n         * @type {number|undefined}\n         */\n        /**\n         * It represents the point's pixel x coordinate relative to its plot\n         * box.\n         *\n         * @name Annotation.AnnotationMockPoint#plotX\n         * @type {number|undefined}\n         */\n        /**\n         * It represents the point's pixel y position relative to its plot box.\n         *\n         * @name Annotation.AnnotationMockPoint#plotY\n         * @type {number|undefined}\n         */\n        /**\n         * Whether the point is inside the plot box.\n         *\n         * @name Annotation.AnnotationMockPoint#isInside\n         * @type {boolean|undefined}\n         */\n        this.applyOptions(this.getOptions());\n    }\n    /**\n     * Apply options for the point.\n     * @private\n     * @param {Highcharts.AnnotationMockPointOptionsObject} options\n     */\n    applyOptions(options) {\n        this.command = options.command;\n        this.setAxis(options, 'x');\n        this.setAxis(options, 'y');\n        this.refresh();\n    }\n    /**\n     * Get the point's options.\n     * @private\n     * @return {Highcharts.AnnotationMockPointOptionsObject}\n     * The mock point's options.\n     */\n    getOptions() {\n        return this.hasDynamicOptions() ?\n            this.options(this.target) :\n            this.options;\n    }\n    /**\n     * Check if the point has dynamic options.\n     * @private\n     * @return {boolean}\n     * A positive flag if the point has dynamic options.\n     */\n    hasDynamicOptions() {\n        return typeof this.options === 'function';\n    }\n    /**\n     * Check if the point is inside its pane.\n     * @private\n     * @return {boolean} A flag indicating whether the point is inside the pane.\n     */\n    isInsidePlot() {\n        const plotX = this.plotX, plotY = this.plotY, xAxis = this.series.xAxis, yAxis = this.series.yAxis, e = {\n            x: plotX,\n            y: plotY,\n            isInsidePlot: true,\n            options: {}\n        };\n        if (xAxis) {\n            e.isInsidePlot = MockPoint_defined(plotX) && plotX >= 0 && plotX <= xAxis.len;\n        }\n        if (yAxis) {\n            e.isInsidePlot =\n                e.isInsidePlot &&\n                    MockPoint_defined(plotY) &&\n                    plotY >= 0 && plotY <= yAxis.len;\n        }\n        MockPoint_fireEvent(this.series.chart, 'afterIsInsidePlot', e);\n        return e.isInsidePlot;\n    }\n    /**\n     * Refresh point values and coordinates based on its options.\n     * @private\n     */\n    refresh() {\n        const series = this.series, xAxis = series.xAxis, yAxis = series.yAxis, options = this.getOptions();\n        if (xAxis) {\n            this.x = options.x;\n            this.plotX = xAxis.toPixels(options.x, true);\n        }\n        else {\n            this.x = void 0;\n            this.plotX = options.x;\n        }\n        if (yAxis) {\n            this.y = options.y;\n            this.plotY = yAxis.toPixels(options.y, true);\n        }\n        else {\n            this.y = null;\n            this.plotY = options.y;\n        }\n        this.isInside = this.isInsidePlot();\n    }\n    /**\n     * Refresh point options based on its plot coordinates.\n     * @private\n     */\n    refreshOptions() {\n        const series = this.series, xAxis = series.xAxis, yAxis = series.yAxis;\n        this.x = this.options.x = xAxis ?\n            this.options.x = xAxis.toValue(this.plotX, true) :\n            this.plotX;\n        this.y = this.options.y = yAxis ?\n            yAxis.toValue(this.plotY, true) :\n            this.plotY;\n    }\n    /**\n     * Rotate the point.\n     * @private\n     * @param {number} cx origin x rotation\n     * @param {number} cy origin y rotation\n     * @param {number} radians\n     */\n    rotate(cx, cy, radians) {\n        if (!this.hasDynamicOptions()) {\n            const cos = Math.cos(radians), sin = Math.sin(radians), x = this.plotX - cx, y = this.plotY - cy, tx = x * cos - y * sin, ty = x * sin + y * cos;\n            this.plotX = tx + cx;\n            this.plotY = ty + cy;\n            this.refreshOptions();\n        }\n    }\n    /**\n     * Scale the point.\n     *\n     * @private\n     *\n     * @param {number} cx\n     * Origin x transformation.\n     *\n     * @param {number} cy\n     * Origin y transformation.\n     *\n     * @param {number} sx\n     * Scale factor x.\n     *\n     * @param {number} sy\n     * Scale factor y.\n     */\n    scale(cx, cy, sx, sy) {\n        if (!this.hasDynamicOptions()) {\n            const x = this.plotX * sx, y = this.plotY * sy, tx = (1 - sx) * cx, ty = (1 - sy) * cy;\n            this.plotX = tx + x;\n            this.plotY = ty + y;\n            this.refreshOptions();\n        }\n    }\n    /**\n     * Set x or y axis.\n     * @private\n     * @param {Highcharts.AnnotationMockPointOptionsObject} options\n     * @param {string} xOrY\n     * 'x' or 'y' string literal\n     */\n    setAxis(options, xOrY) {\n        const axisName = (xOrY + 'Axis'), axisOptions = options[axisName], chart = this.series.chart;\n        this.series[axisName] =\n            typeof axisOptions === 'object' ?\n                axisOptions :\n                MockPoint_defined(axisOptions) ?\n                    (chart[axisName][axisOptions] ||\n                        // @todo v--- (axisName)[axisOptions] ?\n                        chart.get(axisOptions)) :\n                    null;\n    }\n    /**\n     * Transform the mock point to an anchor (relative position on the chart).\n     * @private\n     * @return {Array<number>}\n     * A quadruple of numbers which denotes x, y, width and height of the box\n     **/\n    toAnchor() {\n        const anchor = [this.plotX, this.plotY, 0, 0];\n        if (this.series.chart.inverted) {\n            anchor[0] = this.plotY;\n            anchor[1] = this.plotX;\n        }\n        return anchor;\n    }\n    /**\n     * Translate the point.\n     *\n     * @private\n     *\n     * @param {number|undefined} cx\n     * Origin x transformation.\n     *\n     * @param {number|undefined} cy\n     * Origin y transformation.\n     *\n     * @param {number} dx\n     * Translation for x coordinate.\n     *\n     * @param {number} dy\n     * Translation for y coordinate.\n     **/\n    translate(_cx, _cy, dx, dy) {\n        if (!this.hasDynamicOptions()) {\n            this.plotX += dx;\n            this.plotY += dy;\n            this.refreshOptions();\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_MockPoint = (MockPoint);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * @private\n * @interface Highcharts.AnnotationMockLabelOptionsObject\n */ /**\n* Point instance of the point.\n* @name Highcharts.AnnotationMockLabelOptionsObject#point\n* @type {Highcharts.AnnotationMockPoint}\n*/ /**\n* X value translated to x axis scale.\n* @name Highcharts.AnnotationMockLabelOptionsObject#x\n* @type {number|null}\n*/ /**\n* Y value translated to y axis scale.\n* @name Highcharts.AnnotationMockLabelOptionsObject#y\n* @type {number|null}\n*/\n/**\n * Object of shape point.\n *\n * @interface Highcharts.AnnotationMockPointOptionsObject\n */ /**\n* The x position of the point. Units can be either in axis\n* or chart pixel coordinates.\n*\n* @type      {number}\n* @name      Highcharts.AnnotationMockPointOptionsObject.x\n*/ /**\n* The y position of the point. Units can be either in axis\n* or chart pixel coordinates.\n*\n* @type      {number}\n* @name      Highcharts.AnnotationMockPointOptionsObject.y\n*/ /**\n* This number defines which xAxis the point is connected to.\n* It refers to either the axis id or the index of the axis in\n* the xAxis array. If the option is not configured or the axis\n* is not found the point's x coordinate refers to the chart\n* pixels.\n*\n* @type      {number|string|null}\n* @name      Highcharts.AnnotationMockPointOptionsObject.xAxis\n*/ /**\n* This number defines which yAxis the point is connected to.\n* It refers to either the axis id or the index of the axis in\n* the yAxis array. If the option is not configured or the axis\n* is not found the point's y coordinate refers to the chart\n* pixels.\n*\n* @type      {number|string|null}\n* @name      Highcharts.AnnotationMockPointOptionsObject.yAxis\n*/\n/**\n * Callback function that returns the annotation shape point.\n *\n * @callback Highcharts.AnnotationMockPointFunction\n *\n * @param  {Highcharts.Annotation} annotation\n *         An annotation instance.\n *\n * @return {Highcharts.AnnotationMockPointOptionsObject}\n *         Annotations shape point.\n */\n/**\n * A mock series instance imitating a real series from a real point.\n * @private\n * @interface Highcharts.AnnotationMockSeries\n */ /**\n* Whether a series is visible.\n* @name Highcharts.AnnotationMockSeries#visible\n* @type {boolean}\n*/ /**\n* A chart instance.\n* @name Highcharts.AnnotationMockSeries#chart\n* @type {Highcharts.Chart}\n*/ /**\n* @name Highcharts.AnnotationMockSeries#getPlotBox\n* @type {Function}\n*/\n/**\n * Indicates if this is a mock point for an annotation.\n * @name Highcharts.Point#mock\n * @type {boolean|undefined}\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es-modules/Extensions/Annotations/ControlTarget.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\n/* *\n *\n *  Composition Namespace\n *\n * */\nvar ControlTarget;\n(function (ControlTarget) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Add control points.\n     * @private\n     */\n    function addControlPoints() {\n        const controlPoints = this.controlPoints, controlPointsOptions = this.options.controlPoints || [];\n        controlPointsOptions.forEach((controlPointOptions, i) => {\n            const options = highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().merge(this.options.controlPointOptions, controlPointOptions);\n            if (!options.index) {\n                options.index = i;\n            }\n            controlPointsOptions[i] = options;\n            controlPoints.push(new Annotations_ControlPoint(this.chart, this, options));\n        });\n    }\n    /**\n     * Returns object which denotes anchor position - relative and absolute.\n     * @private\n     * @param {Highcharts.AnnotationPointType} point\n     * An annotation point.\n     *\n     * @return {Highcharts.AnnotationAnchorObject}\n     * An annotation anchor.\n     */\n    function anchor(point) {\n        const plotBox = point.series.getPlotBox(), chart = point.series.chart, box = point.mock ?\n            point.toAnchor() :\n            chart.tooltip &&\n                chart.tooltip.getAnchor.call({\n                    chart: point.series.chart\n                }, point) ||\n                [0, 0, 0, 0], anchor = {\n            x: box[0] + (this.options.x || 0),\n            y: box[1] + (this.options.y || 0),\n            height: box[2] || 0,\n            width: box[3] || 0\n        };\n        return {\n            relativePosition: anchor,\n            absolutePosition: highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().merge(anchor, {\n                x: anchor.x + (point.mock ? plotBox.translateX : chart.plotLeft),\n                y: anchor.y + (point.mock ? plotBox.translateY : chart.plotTop)\n            })\n        };\n    }\n    /**\n     * Adds shared functions to be used with targets of ControlPoint.\n     * @private\n     */\n    function compose(ControlTargetClass) {\n        const controlProto = ControlTargetClass.prototype;\n        if (!controlProto.addControlPoints) {\n            highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().merge(true, controlProto, {\n                addControlPoints,\n                anchor,\n                destroyControlTarget,\n                getPointsOptions,\n                linkPoints,\n                point,\n                redrawControlPoints,\n                renderControlPoints,\n                transform,\n                transformPoint,\n                translate,\n                translatePoint\n            });\n        }\n    }\n    ControlTarget.compose = compose;\n    /**\n     * Destroy control points.\n     * @private\n     */\n    function destroyControlTarget() {\n        this.controlPoints.forEach((controlPoint) => controlPoint.destroy());\n        this.chart = null;\n        this.controlPoints = null;\n        this.points = null;\n        this.options = null;\n        if (this.annotation) {\n            this.annotation = null;\n        }\n    }\n    /**\n     * Get the points options.\n     * @private\n     * @return {Array<Highcharts.PointOptionsObject>}\n     * An array of points' options.\n     */\n    function getPointsOptions() {\n        const options = this.options;\n        return (options.points ||\n            (options.point && highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().splat(options.point)));\n    }\n    /**\n     * Find point-like objects based on points options.\n     * @private\n     * @return {Array<Annotation.PointLike>}\n     *         An array of point-like objects.\n     */\n    function linkPoints() {\n        const pointsOptions = this.getPointsOptions(), points = this.points, len = (pointsOptions && pointsOptions.length) || 0;\n        let i, point;\n        for (i = 0; i < len; i++) {\n            point = this.point(pointsOptions[i], points[i]);\n            if (!point) {\n                points.length = 0;\n                return;\n            }\n            if (point.mock) {\n                point.refresh();\n            }\n            points[i] = point;\n        }\n        return points;\n    }\n    /**\n     * Map point's options to a point-like object.\n     * @private\n     * @param {string|Function|Highcharts.AnnotationMockPointOptionsObject|Highcharts.AnnotationPointType} pointOptions\n     *        Point's options.\n     * @param {Highcharts.AnnotationPointType} point\n     *        A point-like instance.\n     * @return {Highcharts.AnnotationPointType|null}\n     *         If the point is found/set returns this point, otherwise null\n     */\n    function point(pointOptions, point) {\n        if (pointOptions && pointOptions.series) {\n            return pointOptions;\n        }\n        if (!point || point.series === null) {\n            if (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().isObject(pointOptions)) {\n                point = new Annotations_MockPoint(this.chart, this, pointOptions);\n            }\n            else if (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().isString(pointOptions)) {\n                point = this.chart.get(pointOptions) || null;\n            }\n            else if (typeof pointOptions === 'function') {\n                const pointConfig = pointOptions.call(point, this);\n                point = pointConfig.series ?\n                    pointConfig :\n                    new Annotations_MockPoint(this.chart, this, pointOptions);\n            }\n        }\n        return point;\n    }\n    /**\n     * Redraw control points.\n     * @private\n     */\n    function redrawControlPoints(animation) {\n        this.controlPoints.forEach((controlPoint) => controlPoint.redraw(animation));\n    }\n    /**\n     * Render control points.\n     * @private\n     */\n    function renderControlPoints() {\n        this.controlPoints.forEach((controlPoint) => controlPoint.render());\n    }\n    /**\n     * Transform control points with a specific transformation.\n     * @private\n     * @param {string} transformation\n     *        A transformation name\n     * @param {number|null} cx\n     *        Origin x transformation\n     * @param {number|null} cy\n     *        Origin y transformation\n     * @param {number} p1\n     *        Param for the transformation\n     * @param {number} [p2]\n     *        Param for the transformation\n     */\n    function transform(transformation, cx, cy, p1, p2) {\n        if (this.chart.inverted) {\n            const temp = cx;\n            cx = cy;\n            cy = temp;\n        }\n        this.points.forEach((_point, i) => (this.transformPoint(transformation, cx, cy, p1, p2, i)), this);\n    }\n    /**\n     * Transform a point with a specific transformation\n     * If a transformed point is a real point it is replaced with\n     * the mock point.\n     * @private\n     * @param {string} transformation\n     *        A transformation name\n     * @param {number|null} cx\n     *        Origin x transformation\n     * @param {number|null} cy\n     *        Origin y transformation\n     * @param {number} p1\n     *        Param for the transformation\n     * @param {number|undefined} p2\n     *        Param for the transformation\n     * @param {number} i\n     *        Index of the point\n     */\n    function transformPoint(transformation, cx, cy, p1, p2, i) {\n        let point = this.points[i];\n        if (!point.mock) {\n            point = this.points[i] = Annotations_MockPoint.fromPoint(point);\n        }\n        point[transformation](cx, cy, p1, p2);\n    }\n    /**\n     * Translate control points.\n     * @private\n     * @param {number} dx\n     *        Translation for x coordinate\n     * @param {number} dy\n     *        Translation for y coordinate\n     **/\n    function translate(dx, dy) {\n        this.transform('translate', null, null, dx, dy);\n    }\n    /**\n     * Translate a specific control point.\n     * @private\n     * @param {number} dx\n     *        Translation for x coordinate\n     * @param {number} dy\n     *        Translation for y coordinate\n     * @param {number} i\n     *        Index of the point\n     **/\n    function translatePoint(dx, dy, i) {\n        this.transformPoint('translate', null, null, dx, dy, i);\n    }\n})(ControlTarget || (ControlTarget = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_ControlTarget = (ControlTarget);\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/Controllable.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { merge: Controllable_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * It provides methods for handling points, control points\n * and points transformations.\n * @private\n */\nclass Controllable {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(annotation, options, index, itemType) {\n        this.annotation = annotation;\n        this.chart = annotation.chart;\n        this.collection = (itemType === 'label' ? 'labels' : 'shapes');\n        this.controlPoints = [];\n        this.options = options;\n        this.points = [];\n        this.index = index;\n        this.itemType = itemType;\n        this.init(annotation, options, index);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Redirect attr usage on the controllable graphic element.\n     * @private\n     */\n    attr(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ..._args) {\n        this.graphic.attr.apply(this.graphic, arguments);\n    }\n    /**\n     * Utility function for mapping item's options\n     * to element's attribute\n     * @private\n     * @param {Highcharts.AnnotationsLabelsOptions|Highcharts.AnnotationsShapesOptions} options\n     * @return {Highcharts.SVGAttributes}\n     *         Mapped options.\n     */\n    attrsFromOptions(options) {\n        const map = this.constructor.attrsMap, attrs = {}, styledMode = this.chart.styledMode;\n        let key, mappedKey;\n        for (key in options) { // eslint-disable-line guard-for-in\n            mappedKey = map[key];\n            if (typeof map[key] !== 'undefined' &&\n                (!styledMode ||\n                    ['fill', 'stroke', 'stroke-width']\n                        .indexOf(mappedKey) === -1)) {\n                attrs[mappedKey] = options[key];\n            }\n        }\n        return attrs;\n    }\n    /**\n     * Destroy a controllable.\n     * @private\n     */\n    destroy() {\n        if (this.graphic) {\n            this.graphic = this.graphic.destroy();\n        }\n        if (this.tracker) {\n            this.tracker = this.tracker.destroy();\n        }\n        this.destroyControlTarget();\n    }\n    /**\n     * Init the controllable\n     * @private\n     */\n    init(annotation, options, index) {\n        this.annotation = annotation;\n        this.chart = annotation.chart;\n        this.options = options;\n        this.points = [];\n        this.controlPoints = [];\n        this.index = index;\n        this.linkPoints();\n        this.addControlPoints();\n    }\n    /**\n     * Redraw a controllable.\n     * @private\n     */\n    redraw(animation) {\n        this.redrawControlPoints(animation);\n    }\n    /**\n     * Render a controllable.\n     * @private\n     */\n    render(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _parentGroup) {\n        if (this.options.className && this.graphic) {\n            this.graphic.addClass(this.options.className);\n        }\n        this.renderControlPoints();\n    }\n    /**\n     * Rotate a controllable.\n     * @private\n     * @param {number} cx\n     *        Origin x rotation\n     * @param {number} cy\n     *        Origin y rotation\n     * @param {number} radians\n     **/\n    rotate(cx, cy, radians) {\n        this.transform('rotate', cx, cy, radians);\n    }\n    /**\n     * Scale a controllable.\n     * @private\n     * @param {number} cx\n     *        Origin x rotation\n     * @param {number} cy\n     *        Origin y rotation\n     * @param {number} sx\n     *        Scale factor x\n     * @param {number} sy\n     *        Scale factor y\n     */\n    scale(cx, cy, sx, sy) {\n        this.transform('scale', cx, cy, sx, sy);\n    }\n    /**\n     * Set control points' visibility.\n     * @private\n     */\n    setControlPointsVisibility(visible) {\n        this.controlPoints.forEach((controlPoint) => {\n            controlPoint.setVisibility(visible);\n        });\n    }\n    /**\n     * Check if a controllable should be rendered/redrawn.\n     * @private\n     * @return {boolean}\n     *         Whether a controllable should be drawn.\n     */\n    shouldBeDrawn() {\n        return !!this.points.length;\n    }\n    /**\n     * Translate shape within controllable item.\n     * Replaces `controllable.translate` method.\n     * @private\n     * @param {number} dx\n     *        Translation for x coordinate\n     * @param {number} dy\n     *        Translation for y coordinate\n     * @param {boolean|undefined} translateSecondPoint\n     *        If the shape has two points attached to it, this option allows you\n     *        to translate also the second point.\n     */\n    translateShape(dx, dy, translateSecondPoint) {\n        const chart = this.annotation.chart, \n        // Annotation.options\n        shapeOptions = this.annotation.userOptions, \n        // Chart.options.annotations\n        annotationIndex = chart.annotations.indexOf(this.annotation), chartOptions = chart.options.annotations[annotationIndex];\n        this.translatePoint(dx, dy, 0);\n        if (translateSecondPoint) {\n            this.translatePoint(dx, dy, 1);\n        }\n        // Options stored in:\n        // - chart (for exporting)\n        // - current config (for redraws)\n        chartOptions[this.collection][this.index]\n            .point = this.options.point;\n        shapeOptions[this.collection][this.index]\n            .point = this.options.point;\n    }\n    /**\n     * Update a controllable.\n     * @private\n     */\n    update(newOptions) {\n        const annotation = this.annotation, options = Controllable_merge(true, this.options, newOptions), parentGroup = this.graphic.parentGroup, Constructor = this.constructor;\n        this.destroy();\n        const newControllable = new Constructor(annotation, options, this.index, this.itemType);\n        Controllable_merge(true, this, newControllable);\n        this.render(parentGroup);\n        this.redraw();\n    }\n}\nAnnotations_ControlTarget.compose(Controllable);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_Controllable = (Controllable);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * An object which denotes a controllable's anchor positions - relative and\n * absolute.\n *\n * @private\n * @interface Highcharts.AnnotationAnchorObject\n */ /**\n* Relative to the plot area position\n* @name Highcharts.AnnotationAnchorObject#relativePosition\n* @type {Highcharts.BBoxObject}\n*/ /**\n* Absolute position\n* @name Highcharts.AnnotationAnchorObject#absolutePosition\n* @type {Highcharts.BBoxObject}\n*/\n/**\n * @interface Highcharts.AnnotationControllable\n */ /**\n* @name Highcharts.AnnotationControllable#annotation\n* @type {Highcharts.Annotation}\n*/ /**\n* @name Highcharts.AnnotationControllable#chart\n* @type {Highcharts.Chart}\n*/ /**\n* @name Highcharts.AnnotationControllable#collection\n* @type {string}\n*/ /**\n* @private\n* @name Highcharts.AnnotationControllable#controlPoints\n* @type {Array<Highcharts.AnnotationControlPoint>}\n*/ /**\n* @name Highcharts.AnnotationControllable#points\n* @type {Array<Highcharts.Point>}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllableDefaults.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/**\n * Options for configuring markers for annotations.\n *\n * An example of the arrow marker:\n * <pre>\n * {\n *   arrow: {\n *     id: 'arrow',\n *     tagName: 'marker',\n *     refY: 5,\n *     refX: 5,\n *     markerWidth: 10,\n *     markerHeight: 10,\n *     children: [{\n *       tagName: 'path',\n *       attrs: {\n *         d: 'M 0 0 L 10 5 L 0 10 Z',\n *         'stroke-width': 0\n *       }\n *     }]\n *   }\n * }\n * </pre>\n *\n * @sample highcharts/annotations/custom-markers/\n *         Define a custom marker for annotations\n *\n * @sample highcharts/css/annotations-markers/\n *         Define markers in a styled mode\n *\n * @type         {Highcharts.Dictionary<Highcharts.ASTNode>}\n * @since        6.0.0\n * @optionparent defs\n */\nconst defaultMarkers = {\n    /**\n     * @type {Highcharts.ASTNode}\n     */\n    arrow: {\n        tagName: 'marker',\n        attributes: {\n            id: 'arrow',\n            refY: 5,\n            refX: 9,\n            markerWidth: 10,\n            markerHeight: 10\n        },\n        /**\n         * @type {Array<Highcharts.DefsOptions>}\n         */\n        children: [{\n                tagName: 'path',\n                attributes: {\n                    d: 'M 0 0 L 10 5 L 0 10 Z', // Triangle (used as an arrow)\n                    'stroke-width': 0\n                }\n            }]\n    },\n    /**\n     * @type {Highcharts.ASTNode}\n     */\n    'reverse-arrow': {\n        tagName: 'marker',\n        attributes: {\n            id: 'reverse-arrow',\n            refY: 5,\n            refX: 1,\n            markerWidth: 10,\n            markerHeight: 10\n        },\n        children: [{\n                tagName: 'path',\n                attributes: {\n                    // Reverse triangle (used as an arrow)\n                    d: 'M 0 5 L 10 0 L 10 10 Z',\n                    'stroke-width': 0\n                }\n            }]\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\nconst ControllableDefaults = {\n    defaultMarkers\n};\n/* harmony default export */ const Controllables_ControllableDefaults = (ControllableDefaults);\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllablePath.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { defaultMarkers: ControllablePath_defaultMarkers } = Controllables_ControllableDefaults;\n\n\nconst { addEvent: ControllablePath_addEvent, defined: ControllablePath_defined, extend, merge: ControllablePath_merge, uniqueKey } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Constants\n *\n * */\nconst markerEndSetter = createMarkerSetter('marker-end');\nconst markerStartSetter = createMarkerSetter('marker-start');\n// See TRACKER_FILL in highcharts.src.js\nconst TRACKER_FILL = 'rgba(192,192,192,' + ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).svg ? 0.0001 : 0.002) + ')';\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction createMarkerSetter(markerType) {\n    return function (value) {\n        this.attr(markerType, 'url(#' + value + ')');\n    };\n}\n/**\n * @private\n */\nfunction onChartAfterGetContainer() {\n    this.options.defs = ControllablePath_merge(ControllablePath_defaultMarkers, this.options.defs || {});\n    ///  objectEach(this.options.defs, function (def): void {\n    //     const attributes = def.attributes;\n    //     if (\n    //         def.tagName === 'marker' &&\n    //         attributes &&\n    //         attributes.id &&\n    //         attributes.display !== 'none'\n    //     ) {\n    //         this.renderer.addMarker(attributes.id, def);\n    //     }\n    // }, this);\n}\n/**\n * @private\n */\nfunction svgRendererAddMarker(id, markerOptions) {\n    const options = { attributes: { id } };\n    const attrs = {\n        stroke: markerOptions.color || 'none',\n        fill: markerOptions.color || 'rgba(0, 0, 0, 0.75)'\n    };\n    options.children = (markerOptions.children &&\n        markerOptions.children.map(function (child) {\n            return ControllablePath_merge(attrs, child);\n        }));\n    const ast = ControllablePath_merge(true, {\n        attributes: {\n            markerWidth: 20,\n            markerHeight: 20,\n            refX: 0,\n            refY: 0,\n            orient: 'auto'\n        }\n    }, markerOptions, options);\n    const marker = this.definition(ast);\n    marker.id = id;\n    return marker;\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * A controllable path class.\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationControllablePath\n *\n * @param {Highcharts.Annotation}\n * Related annotation.\n *\n * @param {Highcharts.AnnotationsShapeOptions} options\n * A path's options object.\n *\n * @param {number} index\n * Index of the path.\n */\nclass ControllablePath extends Controllables_Controllable {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    static compose(ChartClass, SVGRendererClass) {\n        const svgRendererProto = SVGRendererClass.prototype;\n        if (!svgRendererProto.addMarker) {\n            ControllablePath_addEvent(ChartClass, 'afterGetContainer', onChartAfterGetContainer);\n            svgRendererProto.addMarker = svgRendererAddMarker;\n        }\n    }\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    constructor(annotation, options, index) {\n        super(annotation, options, index, 'shape');\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.type = 'path';\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Map the controllable path to 'd' path attribute.\n     *\n     * @return {Highcharts.SVGPathArray|null}\n     * A path's d attribute.\n     */\n    toD() {\n        const dOption = this.options.d;\n        if (dOption) {\n            return typeof dOption === 'function' ?\n                dOption.call(this) :\n                dOption;\n        }\n        const points = this.points, len = points.length, d = [];\n        let showPath = len, point = points[0], position = showPath && this.anchor(point).absolutePosition, pointIndex = 0, command;\n        if (position) {\n            d.push(['M', position.x, position.y]);\n            while (++pointIndex < len && showPath) {\n                point = points[pointIndex];\n                command = point.command || 'L';\n                position = this.anchor(point).absolutePosition;\n                if (command === 'M') {\n                    d.push([command, position.x, position.y]);\n                }\n                else if (command === 'L') {\n                    d.push([command, position.x, position.y]);\n                }\n                else if (command === 'Z') {\n                    d.push([command]);\n                }\n                showPath = point.series.visible;\n            }\n        }\n        return (showPath && this.graphic ?\n            this.chart.renderer.crispLine(d, this.graphic.strokeWidth()) :\n            null);\n    }\n    shouldBeDrawn() {\n        return super.shouldBeDrawn() || !!this.options.d;\n    }\n    render(parent) {\n        const options = this.options, attrs = this.attrsFromOptions(options);\n        this.graphic = this.annotation.chart.renderer\n            .path([['M', 0, 0]])\n            .attr(attrs)\n            .add(parent);\n        this.tracker = this.annotation.chart.renderer\n            .path([['M', 0, 0]])\n            .addClass('highcharts-tracker-line')\n            .attr({\n            zIndex: 2\n        })\n            .add(parent);\n        if (!this.annotation.chart.styledMode) {\n            this.tracker.attr({\n                'stroke-linejoin': 'round', // #1225\n                stroke: TRACKER_FILL,\n                fill: TRACKER_FILL,\n                'stroke-width': this.graphic.strokeWidth() +\n                    options.snap * 2\n            });\n        }\n        super.render();\n        extend(this.graphic, { markerStartSetter, markerEndSetter });\n        this.setMarkers(this);\n    }\n    redraw(animation) {\n        if (this.graphic) {\n            const d = this.toD(), action = animation ? 'animate' : 'attr';\n            if (d) {\n                this.graphic[action]({ d: d });\n                this.tracker[action]({ d: d });\n            }\n            else {\n                this.graphic.attr({ d: 'M 0 ' + -9e9 });\n                this.tracker.attr({ d: 'M 0 ' + -9e9 });\n            }\n            this.graphic.placed = this.tracker.placed = !!d;\n        }\n        super.redraw(animation);\n    }\n    /**\n     * Set markers.\n     * @private\n     * @param {Highcharts.AnnotationControllablePath} item\n     */\n    setMarkers(item) {\n        const itemOptions = item.options, chart = item.chart, defs = chart.options.defs, fill = itemOptions.fill, color = ControllablePath_defined(fill) && fill !== 'none' ?\n            fill :\n            itemOptions.stroke;\n        const setMarker = function (markerType) {\n            const markerId = itemOptions[markerType];\n            let def, predefinedMarker, key, marker;\n            if (markerId) {\n                for (key in defs) { // eslint-disable-line guard-for-in\n                    def = defs[key];\n                    if ((markerId === (def.attributes && def.attributes.id) ||\n                        // Legacy, for\n                        // unit-tests/annotations/annotations-shapes\n                        markerId === def.id) &&\n                        def.tagName === 'marker') {\n                        predefinedMarker = def;\n                        break;\n                    }\n                }\n                if (predefinedMarker) {\n                    marker = item[markerType] = chart.renderer\n                        .addMarker((itemOptions.id || uniqueKey()) + '-' + markerId, ControllablePath_merge(predefinedMarker, { color: color }));\n                    item.attr(markerType, marker.getAttribute('id'));\n                }\n            }\n        };\n        ['markerStart', 'markerEnd']\n            .forEach(setMarker);\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * A map object which allows to map options attributes to element attributes\n *\n * @name Highcharts.AnnotationControllablePath.attrsMap\n * @type {Highcharts.Dictionary<string>}\n */\nControllablePath.attrsMap = {\n    dashStyle: 'dashstyle',\n    strokeWidth: 'stroke-width',\n    stroke: 'stroke',\n    fill: 'fill',\n    zIndex: 'zIndex'\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_ControllablePath = (ControllablePath);\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllableRect.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\nconst { merge: ControllableRect_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * A controllable rect class.\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationControllableRect\n *\n * @param {Highcharts.Annotation} annotation\n * An annotation instance.\n *\n * @param {Highcharts.AnnotationsShapeOptions} options\n * A rect's options.\n *\n * @param {number} index\n * Index of the rectangle\n */\nclass ControllableRect extends Controllables_Controllable {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    constructor(annotation, options, index) {\n        super(annotation, options, index, 'shape');\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.type = 'rect';\n        this.translate = super.translateShape;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    render(parent) {\n        const attrs = this.attrsFromOptions(this.options);\n        this.graphic = this.annotation.chart.renderer\n            .rect(0, -9e9, 0, 0)\n            .attr(attrs)\n            .add(parent);\n        super.render();\n    }\n    redraw(animation) {\n        if (this.graphic) {\n            const position = this.anchor(this.points[0]).absolutePosition;\n            if (position) {\n                this.graphic[animation ? 'animate' : 'attr']({\n                    x: position.x,\n                    y: position.y,\n                    width: this.options.width,\n                    height: this.options.height\n                });\n            }\n            else {\n                this.attr({\n                    x: 0,\n                    y: -9e9\n                });\n            }\n            this.graphic.placed = Boolean(position);\n        }\n        super.redraw(animation);\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * A map object which allows to map options attributes to element attributes\n *\n * @type {Annotation.ControllableRect.AttrsMap}\n */\nControllableRect.attrsMap = ControllableRect_merge(Controllables_ControllablePath.attrsMap, {\n    width: 'width',\n    height: 'height'\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_ControllableRect = (ControllableRect);\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\nconst { merge: ControllableCircle_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * A controllable circle class.\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationControllableCircle\n *\n * @param {Highcharts.Annotation} annotation an annotation instance\n * @param {Highcharts.AnnotationsShapeOptions} options a shape's options\n * @param {number} index of the circle\n */\nclass ControllableCircle extends Controllables_Controllable {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    constructor(annotation, options, index) {\n        super(annotation, options, index, 'shape');\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.type = 'circle';\n        this.translate = super.translateShape;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    redraw(animation) {\n        if (this.graphic) {\n            const position = this.anchor(this.points[0]).absolutePosition;\n            if (position) {\n                this.graphic[animation ? 'animate' : 'attr']({\n                    x: position.x,\n                    y: position.y,\n                    r: this.options.r\n                });\n            }\n            else {\n                this.graphic.attr({\n                    x: 0,\n                    y: -9e9\n                });\n            }\n            this.graphic.placed = !!position;\n        }\n        super.redraw.call(this, animation);\n    }\n    /**\n     * @private\n     */\n    render(parent) {\n        const attrs = this.attrsFromOptions(this.options);\n        this.graphic = this.annotation.chart.renderer\n            .circle(0, -9e9, 0)\n            .attr(attrs)\n            .add(parent);\n        super.render();\n    }\n    /**\n     * Set the radius.\n     * @private\n     * @param {number} r\n     *        A radius to be set\n     */\n    setRadius(r) {\n        this.options.r = r;\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * A map object which allows to map options attributes to element\n * attributes.\n *\n * @name Highcharts.AnnotationControllableCircle.attrsMap\n * @type {Highcharts.Dictionary<string>}\n */\nControllableCircle.attrsMap = ControllableCircle_merge(Controllables_ControllablePath.attrsMap, { r: 'r' });\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_ControllableCircle = (ControllableCircle);\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js\n/* *\n *\n * Author: Pawel Lysy\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\nconst { merge: ControllableEllipse_merge, defined: ControllableEllipse_defined } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * A controllable ellipse class.\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationControllableEllipse\n *\n * @param {Highcharts.Annotation} annotation an annotation instance\n * @param {Highcharts.AnnotationsShapeOptions} options a shape's options\n * @param {number} index of the Ellipse\n */\nclass ControllableEllipse extends Controllables_Controllable {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(annotation, options, index) {\n        super(annotation, options, index, 'shape');\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.type = 'ellipse';\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    init(annotation, options, index) {\n        if (ControllableEllipse_defined(options.yAxis)) {\n            options.points.forEach((point) => {\n                point.yAxis = options.yAxis;\n            });\n        }\n        if (ControllableEllipse_defined(options.xAxis)) {\n            options.points.forEach((point) => {\n                point.xAxis = options.xAxis;\n            });\n        }\n        super.init(annotation, options, index);\n    }\n    /**\n     * Render the element\n     * @private\n     * @param parent\n     *        Parent SVG element.\n     */\n    render(parent) {\n        this.graphic = this.annotation.chart.renderer.createElement('ellipse')\n            .attr(this.attrsFromOptions(this.options))\n            .add(parent);\n        super.render();\n    }\n    /**\n     * Translate the points. Mostly used to handle dragging of the ellipse.\n     * @private\n     */\n    translate(dx, dy) {\n        super.translateShape(dx, dy, true);\n    }\n    /**\n     * Get the distance from the line to the point.\n     * @private\n     * @param point1\n     *        First point which is on the line\n     * @param point2\n     *        Second point\n     * @param x0\n     *        Point's x value from which you want to calculate the distance from\n     * @param y0\n     *        Point's y value from which you want to calculate the distance from\n     */\n    getDistanceFromLine(point1, point2, x0, y0) {\n        return Math.abs((point2.y - point1.y) * x0 - (point2.x - point1.x) * y0 +\n            point2.x * point1.y - point2.y * point1.x) / Math.sqrt((point2.y - point1.y) * (point2.y - point1.y) +\n            (point2.x - point1.x) * (point2.x - point1.x));\n    }\n    /**\n     * The function calculates the svg attributes of the ellipse, and returns\n     * all parameters necessary to draw the ellipse.\n     * @private\n     * @param position\n     *        Absolute position of the first point in points array\n     * @param position2\n     *        Absolute position of the second point in points array\n     */\n    getAttrs(position, position2) {\n        const x1 = position.x, y1 = position.y, x2 = position2.x, y2 = position2.y, cx = (x1 + x2) / 2, cy = (y1 + y2) / 2, rx = Math.sqrt((x1 - x2) * (x1 - x2) / 4 + (y1 - y2) * (y1 - y2) / 4), tan = (y2 - y1) / (x2 - x1);\n        let angle = Math.atan(tan) * 180 / Math.PI;\n        if (cx < x1) {\n            angle += 180;\n        }\n        const ry = this.getRY();\n        return { cx, cy, rx, ry, angle };\n    }\n    /**\n     * Get the value of minor radius of the ellipse.\n     * @private\n     */\n    getRY() {\n        const yAxis = this.getYAxis();\n        return ControllableEllipse_defined(yAxis) ?\n            Math.abs(yAxis.toPixels(this.options.ry) - yAxis.toPixels(0)) :\n            this.options.ry;\n    }\n    /**\n     * Get the yAxis object to which the ellipse is pinned.\n     * @private\n     */\n    getYAxis() {\n        const yAxisIndex = this.options.yAxis;\n        return this.chart.yAxis[yAxisIndex];\n    }\n    /**\n     * Get the absolute coordinates of the MockPoint\n     * @private\n     * @param point\n     *        MockPoint that is added through options\n     */\n    getAbsolutePosition(point) {\n        return this.anchor(point).absolutePosition;\n    }\n    /**\n     * Redraw the element\n     * @private\n     * @param animation\n     *        Display an animation\n     */\n    redraw(animation) {\n        if (this.graphic) {\n            const position = this.getAbsolutePosition(this.points[0]), position2 = this.getAbsolutePosition(this.points[1]), attrs = this.getAttrs(position, position2);\n            if (position) {\n                this.graphic[animation ? 'animate' : 'attr']({\n                    cx: attrs.cx,\n                    cy: attrs.cy,\n                    rx: attrs.rx,\n                    ry: attrs.ry,\n                    rotation: attrs.angle,\n                    rotationOriginX: attrs.cx,\n                    rotationOriginY: attrs.cy\n                });\n            }\n            else {\n                this.graphic.attr({\n                    x: 0,\n                    y: -9e9\n                });\n            }\n            this.graphic.placed = Boolean(position);\n        }\n        super.redraw(animation);\n    }\n    /**\n     * Set the radius Y.\n     * @private\n     * @param {number} ry\n     *        A radius in y direction to be set\n     */\n    setYRadius(ry) {\n        const shapes = this.annotation.userOptions.shapes;\n        this.options.ry = ry;\n        if (shapes && shapes[0]) {\n            shapes[0].ry = ry;\n            shapes[0].ry = ry;\n        }\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * A map object which allows to map options attributes to element\n * attributes.\n *\n * @name Highcharts.AnnotationControllableEllipse.attrsMap\n * @type {Highcharts.Dictionary<string>}\n */\nControllableEllipse.attrsMap = ControllableEllipse_merge(Controllables_ControllablePath.attrsMap, {\n    ry: 'ry'\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_ControllableEllipse = (ControllableEllipse);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Templating\"],\"commonjs\":[\"highcharts\",\"Templating\"],\"commonjs2\":[\"highcharts\",\"Templating\"],\"root\":[\"Highcharts\",\"Templating\"]}\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_ = __webpack_require__(984);\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default = /*#__PURE__*/__webpack_require__.n(highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_);\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { format } = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default());\n\n\nconst { extend: ControllableLabel_extend, getAlignFactor, isNumber, pick: ControllableLabel_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * General symbol definition for labels with connector\n * @private\n */\nfunction symbolConnector(x, y, w, h, options) {\n    const anchorX = options && options.anchorX, anchorY = options && options.anchorY;\n    let path, yOffset, lateral = w / 2;\n    if (isNumber(anchorX) && isNumber(anchorY)) {\n        path = [['M', anchorX, anchorY]];\n        // Prefer 45 deg connectors\n        yOffset = y - anchorY;\n        if (yOffset < 0) {\n            yOffset = -h - yOffset;\n        }\n        if (yOffset < w) {\n            lateral = anchorX < x + (w / 2) ? yOffset : w - yOffset;\n        }\n        // Anchor below label\n        if (anchorY > y + h) {\n            path.push(['L', x + lateral, y + h]);\n            // Anchor above label\n        }\n        else if (anchorY < y) {\n            path.push(['L', x + lateral, y]);\n            // Anchor left of label\n        }\n        else if (anchorX < x) {\n            path.push(['L', x, y + h / 2]);\n            // Anchor right of label\n        }\n        else if (anchorX > x + w) {\n            path.push(['L', x + w, y + h / 2]);\n        }\n    }\n    return path || [];\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * A controllable label class.\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationControllableLabel\n *\n * @param {Highcharts.Annotation} annotation\n * An annotation instance.\n * @param {Highcharts.AnnotationsLabelOptions} options\n * A label's options.\n * @param {number} index\n * Index of the label.\n */\nclass ControllableLabel extends Controllables_Controllable {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * Returns new aligned position based alignment options and box to align to.\n     * It is almost a one-to-one copy from SVGElement.prototype.align\n     * except it does not use and mutate an element\n     *\n     * @param {Highcharts.AnnotationAlignObject} alignOptions\n     *\n     * @param {Highcharts.BBoxObject} box\n     *\n     * @return {Highcharts.PositionObject}\n     * Aligned position.\n     */\n    static alignedPosition(alignOptions, box) {\n        return {\n            x: Math.round((box.x || 0) + (alignOptions.x || 0) +\n                (box.width - (alignOptions.width || 0)) *\n                    getAlignFactor(alignOptions.align)),\n            y: Math.round((box.y || 0) + (alignOptions.y || 0) +\n                (box.height - (alignOptions.height || 0)) *\n                    getAlignFactor(alignOptions.verticalAlign))\n        };\n    }\n    static compose(SVGRendererClass) {\n        const symbols = SVGRendererClass.prototype.symbols;\n        symbols.connector = symbolConnector;\n    }\n    /**\n     * Returns new alignment options for a label if the label is outside the\n     * plot area. It is almost a one-to-one copy from\n     * Series.prototype.justifyDataLabel except it does not mutate the label and\n     * it works with absolute instead of relative position.\n     */\n    static justifiedOptions(chart, label, alignOptions, alignAttr) {\n        const align = alignOptions.align, verticalAlign = alignOptions.verticalAlign, padding = label.box ? 0 : (label.padding || 0), bBox = label.getBBox(), \n        //\n        options = {\n            align: align,\n            verticalAlign: verticalAlign,\n            x: alignOptions.x,\n            y: alignOptions.y,\n            width: label.width,\n            height: label.height\n        }, \n        //\n        x = (alignAttr.x || 0) - chart.plotLeft, y = (alignAttr.y || 0) - chart.plotTop;\n        let off;\n        // Off left\n        off = x + padding;\n        if (off < 0) {\n            if (align === 'right') {\n                options.align = 'left';\n            }\n            else {\n                options.x = (options.x || 0) - off;\n            }\n        }\n        // Off right\n        off = x + bBox.width - padding;\n        if (off > chart.plotWidth) {\n            if (align === 'left') {\n                options.align = 'right';\n            }\n            else {\n                options.x = (options.x || 0) + chart.plotWidth - off;\n            }\n        }\n        // Off top\n        off = y + padding;\n        if (off < 0) {\n            if (verticalAlign === 'bottom') {\n                options.verticalAlign = 'top';\n            }\n            else {\n                options.y = (options.y || 0) - off;\n            }\n        }\n        // Off bottom\n        off = y + bBox.height - padding;\n        if (off > chart.plotHeight) {\n            if (verticalAlign === 'top') {\n                options.verticalAlign = 'bottom';\n            }\n            else {\n                options.y = (options.y || 0) + chart.plotHeight - off;\n            }\n        }\n        return options;\n    }\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    constructor(annotation, options, index) {\n        super(annotation, options, index, 'label');\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Translate the point of the label by deltaX and deltaY translations.\n     * The point is the label's anchor.\n     *\n     * @param {number} dx translation for x coordinate\n     * @param {number} dy translation for y coordinate\n     */\n    translatePoint(dx, dy) {\n        super.translatePoint(dx, dy, 0);\n    }\n    /**\n     * Translate x and y position relative to the label's anchor.\n     *\n     * @param {number} dx translation for x coordinate\n     * @param {number} dy translation for y coordinate\n     */\n    translate(dx, dy) {\n        const chart = this.annotation.chart, \n        // Annotation.options\n        labelOptions = this.annotation.userOptions, \n        // Chart.options.annotations\n        annotationIndex = chart.annotations.indexOf(this.annotation), chartAnnotations = chart.options.annotations, chartOptions = chartAnnotations[annotationIndex];\n        if (chart.inverted) {\n            const temp = dx;\n            dx = dy;\n            dy = temp;\n        }\n        // Local options:\n        this.options.x += dx;\n        this.options.y += dy;\n        // Options stored in chart:\n        chartOptions[this.collection][this.index].x = this.options.x;\n        chartOptions[this.collection][this.index].y = this.options.y;\n        labelOptions[this.collection][this.index].x = this.options.x;\n        labelOptions[this.collection][this.index].y = this.options.y;\n    }\n    render(parent) {\n        const options = this.options, attrs = this.attrsFromOptions(options), style = options.style;\n        this.graphic = this.annotation.chart.renderer\n            .label('', 0, -9999, // #10055\n        options.shape, null, null, options.useHTML, null, 'annotation-label')\n            .attr(attrs)\n            .add(parent);\n        if (!this.annotation.chart.styledMode) {\n            if (style.color === 'contrast') {\n                style.color = this.annotation.chart.renderer.getContrast(ControllableLabel.shapesWithoutBackground.indexOf(options.shape) > -1 ? '#FFFFFF' : options.backgroundColor);\n            }\n            this.graphic\n                .css(options.style)\n                .shadow(options.shadow);\n        }\n        this.graphic.labelrank = options.labelrank;\n        super.render();\n    }\n    redraw(animation) {\n        const options = this.options, text = this.text || options.format || options.text, label = this.graphic, point = this.points[0];\n        if (!label) {\n            this.redraw(animation);\n            return;\n        }\n        label.attr({\n            text: text ?\n                format(String(text), point, this.annotation.chart) :\n                options.formatter.call(point, this)\n        });\n        const anchor = this.anchor(point);\n        const attrs = this.position(anchor);\n        if (attrs) {\n            label.alignAttr = attrs;\n            attrs.anchorX = anchor.absolutePosition.x;\n            attrs.anchorY = anchor.absolutePosition.y;\n            label[animation ? 'animate' : 'attr'](attrs);\n        }\n        else {\n            label.attr({\n                x: 0,\n                y: -9999 // #10055\n            });\n        }\n        label.placed = !!attrs;\n        super.redraw(animation);\n    }\n    /**\n     * All basic shapes don't support alignTo() method except label.\n     * For a controllable label, we need to subtract translation from\n     * options.\n     */\n    anchor(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _point) {\n        const anchor = super.anchor.apply(this, arguments), x = this.options.x || 0, y = this.options.y || 0;\n        anchor.absolutePosition.x -= x;\n        anchor.absolutePosition.y -= y;\n        anchor.relativePosition.x -= x;\n        anchor.relativePosition.y -= y;\n        return anchor;\n    }\n    /**\n     * Returns the label position relative to its anchor.\n     */\n    position(anchor) {\n        const item = this.graphic, chart = this.annotation.chart, tooltip = chart.tooltip, point = this.points[0], itemOptions = this.options, anchorAbsolutePosition = anchor.absolutePosition, anchorRelativePosition = anchor.relativePosition;\n        let itemPosition, alignTo, itemPosRelativeX, itemPosRelativeY, showItem = point.series.visible &&\n            Annotations_MockPoint.prototype.isInsidePlot.call(point);\n        if (item && showItem) {\n            const { width = 0, height = 0 } = item;\n            if (itemOptions.distance && tooltip) {\n                itemPosition = tooltip.getPosition.call({\n                    chart,\n                    distance: ControllableLabel_pick(itemOptions.distance, 16),\n                    getPlayingField: tooltip.getPlayingField,\n                    pointer: tooltip.pointer\n                }, width, height, {\n                    plotX: anchorRelativePosition.x,\n                    plotY: anchorRelativePosition.y,\n                    negative: point.negative,\n                    ttBelow: point.ttBelow,\n                    h: (anchorRelativePosition.height ||\n                        anchorRelativePosition.width)\n                });\n            }\n            else if (itemOptions.positioner) {\n                itemPosition = itemOptions.positioner.call(this);\n            }\n            else {\n                alignTo = {\n                    x: anchorAbsolutePosition.x,\n                    y: anchorAbsolutePosition.y,\n                    width: 0,\n                    height: 0\n                };\n                itemPosition = ControllableLabel.alignedPosition(ControllableLabel_extend(itemOptions, {\n                    width,\n                    height\n                }), alignTo);\n                if (this.options.overflow === 'justify') {\n                    itemPosition = ControllableLabel.alignedPosition(ControllableLabel.justifiedOptions(chart, item, itemOptions, itemPosition), alignTo);\n                }\n            }\n            if (itemOptions.crop) {\n                itemPosRelativeX = itemPosition.x - chart.plotLeft;\n                itemPosRelativeY = itemPosition.y - chart.plotTop;\n                showItem =\n                    chart.isInsidePlot(itemPosRelativeX, itemPosRelativeY) &&\n                        chart.isInsidePlot(itemPosRelativeX + width, itemPosRelativeY + height);\n            }\n        }\n        return showItem ? itemPosition : null;\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * A map object which allows to map options attributes to element attributes\n *\n * @type {Highcharts.Dictionary<string>}\n */\nControllableLabel.attrsMap = {\n    backgroundColor: 'fill',\n    borderColor: 'stroke',\n    borderWidth: 'stroke-width',\n    zIndex: 'zIndex',\n    borderRadius: 'r',\n    padding: 'padding'\n};\n/**\n * Shapes which do not have background - the object is used for proper\n * setting of the contrast color.\n *\n * @type {Array<string>}\n */\nControllableLabel.shapesWithoutBackground = ['connector'];\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_ControllableLabel = (ControllableLabel);\n\n;// ./code/es-modules/Extensions/Annotations/Controllables/ControllableImage.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * A controllable image class.\n *\n * @requires modules/annotations\n *\n * @private\n * @class\n * @name Highcharts.AnnotationControllableImage\n *\n * @param {Highcharts.Annotation} annotation\n * An annotation instance.\n *\n * @param {Highcharts.AnnotationsShapeOptions} options\n * A controllable's options.\n *\n * @param {number} index\n * Index of the image.\n */\nclass ControllableImage extends Controllables_Controllable {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    constructor(annotation, options, index) {\n        super(annotation, options, index, 'shape');\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.type = 'image';\n        this.translate = super.translateShape;\n    }\n    render(parent) {\n        const attrs = this.attrsFromOptions(this.options), options = this.options;\n        this.graphic = this.annotation.chart.renderer\n            .image(options.src, 0, -9e9, options.width, options.height)\n            .attr(attrs)\n            .add(parent);\n        this.graphic.width = options.width;\n        this.graphic.height = options.height;\n        super.render();\n    }\n    redraw(animation) {\n        if (this.graphic) {\n            const anchor = this.anchor(this.points[0]), position = Controllables_ControllableLabel.prototype.position.call(this, anchor);\n            if (position) {\n                this.graphic[animation ? 'animate' : 'attr']({\n                    x: position.x,\n                    y: position.y\n                });\n            }\n            else {\n                this.graphic.attr({\n                    x: 0,\n                    y: -9e9\n                });\n            }\n            this.graphic.placed = Boolean(position);\n        }\n        super.redraw(animation);\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * A map object which allows to map options attributes to element attributes\n *\n * @name Highcharts.AnnotationControllableImage.attrsMap\n * @type {Highcharts.Dictionary<string>}\n */\nControllableImage.attrsMap = {\n    width: 'width',\n    height: 'height',\n    zIndex: 'zIndex'\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Controllables_ControllableImage = (ControllableImage);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"AST\"],\"commonjs\":[\"highcharts\",\"AST\"],\"commonjs2\":[\"highcharts\",\"AST\"],\"root\":[\"Highcharts\",\"AST\"]}\nvar highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_ = __webpack_require__(660);\nvar highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default = /*#__PURE__*/__webpack_require__.n(highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_);\n;// ./code/es-modules/Shared/BaseForm.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Imports\n *\n * */\n\n\nconst { addEvent: BaseForm_addEvent, createElement } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\nclass BaseForm {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(parentDiv, iconsURL) {\n        this.iconsURL = iconsURL;\n        this.container = this.createPopupContainer(parentDiv);\n        this.closeButton = this.addCloseButton();\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Create popup div container.\n     *\n     * @param {HTMLElement} parentDiv\n     * Parent div to attach popup.\n     *\n     * @param  {string} className\n     * Class name of the popup.\n     *\n     * @return {HTMLElement}\n     * Popup div.\n     */\n    createPopupContainer(parentDiv, className = 'highcharts-popup highcharts-no-tooltip') {\n        return createElement('div', { className }, void 0, parentDiv);\n    }\n    /**\n     * Create HTML element and attach click event to close popup.\n     *\n     * @param {string} className\n     * Class name of the close button.\n     *\n     * @return {HTMLElement}\n     * Close button.\n     */\n    addCloseButton(className = 'highcharts-popup-close') {\n        const popup = this, iconsURL = this.iconsURL;\n        // Create close popup button.\n        const closeButton = createElement('button', { className }, void 0, this.container);\n        closeButton.style['background-image'] = 'url(' +\n            (iconsURL.match(/png|svg|jpeg|jpg|gif/ig) ?\n                iconsURL : iconsURL + 'close.svg') + ')';\n        ['click', 'touchstart'].forEach((eventName) => {\n            BaseForm_addEvent(closeButton, eventName, popup.closeButtonEvents.bind(popup));\n        });\n        // Close popup when press ESC\n        BaseForm_addEvent(document, 'keydown', function (event) {\n            if (event.code === 'Escape') {\n                popup.closeButtonEvents();\n            }\n        });\n        return closeButton;\n    }\n    /**\n     * Close button events.\n     * @return {void}\n     */\n    closeButtonEvents() {\n        this.closePopup();\n    }\n    /**\n     * Reset content of the current popup and show.\n     *\n     * @param {string} toolbarClass\n     * Class name of the toolbar which styles should be reset.\n     */\n    showPopup(toolbarClass = 'highcharts-annotation-toolbar') {\n        const popupDiv = this.container, popupCloseButton = this.closeButton;\n        this.type = void 0;\n        // Reset content.\n        popupDiv.innerHTML = (highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default()).emptyHTML;\n        // Reset toolbar styles if exists.\n        if (popupDiv.className.indexOf(toolbarClass) >= 0) {\n            popupDiv.classList.remove(toolbarClass);\n            // Reset toolbar inline styles\n            popupDiv.removeAttribute('style');\n        }\n        // Add close button.\n        popupDiv.appendChild(popupCloseButton);\n        popupDiv.style.display = 'block';\n        popupDiv.style.height = '';\n    }\n    /**\n     * Hide popup.\n     */\n    closePopup() {\n        this.container.style.display = 'none';\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Shared_BaseForm = (BaseForm);\n\n;// ./code/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js\n/* *\n *\n *  Popup generator for Stock tools\n *\n *  (c) 2009-2024 Sebastian Bochan\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { doc: PopupAnnotations_doc, isFirefox } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { createElement: PopupAnnotations_createElement, isArray, isObject, objectEach: PopupAnnotations_objectEach, pick: PopupAnnotations_pick, stableSort } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Create annotation simple form.\n * It contains fields with param names.\n * @private\n * @param {Highcharts.Chart} chart\n * Chart\n * @param {Object} options\n * Options\n * @param {Function} callback\n * On click callback\n * @param {boolean} [isInit]\n * If it is a form declared for init annotation\n */\nfunction addForm(chart, options, callback, isInit) {\n    if (!chart) {\n        return;\n    }\n    const popupDiv = this.container, lang = this.lang;\n    // Create title of annotations\n    let lhsCol = PopupAnnotations_createElement('h2', {\n        className: 'highcharts-popup-main-title'\n    }, void 0, popupDiv);\n    lhsCol.appendChild(PopupAnnotations_doc.createTextNode(lang[options.langKey] || options.langKey || ''));\n    // Left column\n    lhsCol = PopupAnnotations_createElement('div', {\n        className: ('highcharts-popup-lhs-col highcharts-popup-lhs-full')\n    }, void 0, popupDiv);\n    const bottomRow = PopupAnnotations_createElement('div', {\n        className: 'highcharts-popup-bottom-row'\n    }, void 0, popupDiv);\n    addFormFields.call(this, lhsCol, chart, '', options, [], true);\n    this.addButton(bottomRow, isInit ?\n        (lang.addButton || 'Add') :\n        (lang.saveButton || 'Save'), isInit ? 'add' : 'save', popupDiv, callback);\n}\n/**\n * Create annotation simple form. It contains two buttons\n * (edit / remove) and text label.\n * @private\n * @param {Highcharts.Chart} - chart\n * @param {Highcharts.AnnotationsOptions} - options\n * @param {Function} - on click callback\n */\nfunction addToolbar(chart, options, callback) {\n    const lang = this.lang, popupDiv = this.container, showForm = this.showForm, toolbarClass = 'highcharts-annotation-toolbar';\n    // Set small size\n    if (popupDiv.className.indexOf(toolbarClass) === -1) {\n        popupDiv.className += ' ' + toolbarClass + ' highcharts-no-mousewheel';\n    }\n    // Set position\n    if (chart) {\n        popupDiv.style.top = chart.plotTop + 10 + 'px';\n    }\n    // Create label\n    const label = PopupAnnotations_createElement('p', {\n        className: 'highcharts-annotation-label'\n    }, void 0, popupDiv);\n    label.setAttribute('aria-label', 'Annotation type');\n    label.appendChild(PopupAnnotations_doc.createTextNode(PopupAnnotations_pick(\n    // Advanced annotations:\n    lang[options.langKey] || options.langKey, \n    // Basic shapes:\n    options.shapes && options.shapes[0].type, '')));\n    // Add buttons\n    let button = this.addButton(popupDiv, lang.editButton || 'Edit', 'edit', popupDiv, () => {\n        showForm.call(this, 'annotation-edit', chart, options, callback);\n    });\n    button.className += ' highcharts-annotation-edit-button';\n    button.style['background-image'] = 'url(' +\n        this.iconsURL + 'edit.svg)';\n    button = this.addButton(popupDiv, lang.removeButton || 'Remove', 'remove', popupDiv, callback);\n    button.className += ' highcharts-annotation-remove-button';\n    button.style['background-image'] = 'url(' +\n        this.iconsURL + 'destroy.svg)';\n}\n/**\n * Create annotation's form fields.\n * @private\n * @param {Highcharts.HTMLDOMElement} parentDiv\n * Div where inputs are placed\n * @param {Highcharts.Chart} chart\n * Chart\n * @param {string} parentNode\n * Name of parent to create chain of names\n * @param {Highcharts.AnnotationsOptions} options\n * Options\n * @param {Array<unknown>} storage\n * Array where all items are stored\n * @param {boolean} [isRoot]\n * Recursive flag for root\n */\nfunction addFormFields(parentDiv, chart, parentNode, options, storage, isRoot) {\n    if (!chart) {\n        return;\n    }\n    const addInput = this.addInput, lang = this.lang;\n    let parentFullName, titleName;\n    PopupAnnotations_objectEach(options, (value, option) => {\n        // Create name like params.styles.fontSize\n        parentFullName = parentNode !== '' ? parentNode + '.' + option : option;\n        if (isObject(value)) {\n            if (\n            // Value is object of options\n            !isArray(value) ||\n                // Array of objects with params. i.e labels in Fibonacci\n                (isArray(value) && isObject(value[0]))) {\n                titleName = lang[option] || option;\n                if (!titleName.match(/\\d/g)) {\n                    storage.push([\n                        true,\n                        titleName,\n                        parentDiv\n                    ]);\n                }\n                addFormFields.call(this, parentDiv, chart, parentFullName, value, storage, false);\n            }\n            else {\n                storage.push([\n                    this,\n                    parentFullName,\n                    'annotation',\n                    parentDiv,\n                    value\n                ]);\n            }\n        }\n    });\n    if (isRoot) {\n        stableSort(storage, (a) => (a[1].match(/format/g) ? -1 : 1));\n        if (isFirefox) {\n            storage.reverse(); // (#14691)\n        }\n        storage.forEach((genInput) => {\n            if (genInput[0] === true) {\n                PopupAnnotations_createElement('span', {\n                    className: 'highcharts-annotation-title'\n                }, void 0, genInput[2]).appendChild(PopupAnnotations_doc.createTextNode(genInput[1]));\n            }\n            else {\n                genInput[4] = {\n                    value: genInput[4][0],\n                    type: genInput[4][1]\n                };\n                addInput.apply(genInput[0], genInput.splice(1));\n            }\n        });\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst PopupAnnotations = {\n    addForm,\n    addToolbar\n};\n/* harmony default export */ const Popup_PopupAnnotations = (PopupAnnotations);\n\n;// ./code/es-modules/Extensions/Annotations/Popup/PopupIndicators.js\n/* *\n *\n *  Popup generator for Stock tools\n *\n *  (c) 2009-2024 Sebastian Bochan\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { doc: PopupIndicators_doc } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { seriesTypes } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default());\n\nconst { addEvent: PopupIndicators_addEvent, createElement: PopupIndicators_createElement, defined: PopupIndicators_defined, isArray: PopupIndicators_isArray, isObject: PopupIndicators_isObject, objectEach: PopupIndicators_objectEach, stableSort: PopupIndicators_stableSort } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Enums\n *\n * */\n/**\n * Enum for properties which should have dropdown list.\n * @private\n */\nvar DropdownProperties;\n(function (DropdownProperties) {\n    DropdownProperties[DropdownProperties[\"params.algorithm\"] = 0] = \"params.algorithm\";\n    DropdownProperties[DropdownProperties[\"params.average\"] = 1] = \"params.average\";\n})(DropdownProperties || (DropdownProperties = {}));\n/**\n * List of available algorithms for the specific indicator.\n * @private\n */\nconst dropdownParameters = {\n    'algorithm-pivotpoints': ['standard', 'fibonacci', 'camarilla'],\n    'average-disparityindex': ['sma', 'ema', 'dema', 'tema', 'wma']\n};\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Create two columns (divs) in HTML.\n * @private\n * @param {Highcharts.HTMLDOMElement} container\n * Container of columns\n * @return {Highcharts.Dictionary<Highcharts.HTMLDOMElement>}\n * Reference to two HTML columns (lhsCol, rhsCol)\n */\nfunction addColsContainer(container) {\n    // Left column\n    const lhsCol = PopupIndicators_createElement('div', {\n        className: 'highcharts-popup-lhs-col'\n    }, void 0, container);\n    // Right column\n    const rhsCol = PopupIndicators_createElement('div', {\n        className: 'highcharts-popup-rhs-col'\n    }, void 0, container);\n    // Wrapper content\n    PopupIndicators_createElement('div', {\n        className: 'highcharts-popup-rhs-col-wrapper'\n    }, void 0, rhsCol);\n    return {\n        lhsCol: lhsCol,\n        rhsCol: rhsCol\n    };\n}\n/**\n * Create indicator's form. It contains two tabs (ADD and EDIT) with\n * content.\n * @private\n */\nfunction PopupIndicators_addForm(chart, _options, callback) {\n    const lang = this.lang;\n    let buttonParentDiv;\n    if (!chart) {\n        return;\n    }\n    // Add tabs\n    this.tabs.init.call(this, chart);\n    // Get all tabs content divs\n    const tabsContainers = this.container\n        .querySelectorAll('.highcharts-tab-item-content');\n    // ADD tab\n    addColsContainer(tabsContainers[0]);\n    addSearchBox.call(this, chart, tabsContainers[0]);\n    addIndicatorList.call(this, chart, tabsContainers[0], 'add');\n    buttonParentDiv = tabsContainers[0]\n        .querySelectorAll('.highcharts-popup-rhs-col')[0];\n    this.addButton(buttonParentDiv, lang.addButton || 'add', 'add', buttonParentDiv, callback);\n    // EDIT tab\n    addColsContainer(tabsContainers[1]);\n    addIndicatorList.call(this, chart, tabsContainers[1], 'edit');\n    buttonParentDiv = tabsContainers[1]\n        .querySelectorAll('.highcharts-popup-rhs-col')[0];\n    this.addButton(buttonParentDiv, lang.saveButton || 'save', 'edit', buttonParentDiv, callback);\n    this.addButton(buttonParentDiv, lang.removeButton || 'remove', 'remove', buttonParentDiv, callback);\n}\n/**\n * Create typical inputs for chosen indicator. Fields are extracted from\n * defaultOptions (ADD mode) or current indicator (ADD mode). Two extra\n * fields are added:\n * - hidden input - contains indicator type (required for callback)\n * - select - list of series which can be linked with indicator\n * @private\n * @param {Highcharts.Chart} chart\n * Chart\n * @param {Highcharts.Series} series\n * Indicator\n * @param {string} seriesType\n * Indicator type like: sma, ema, etc.\n * @param {Highcharts.HTMLDOMElement} rhsColWrapper\n * Element where created HTML list is added\n */\nfunction PopupIndicators_addFormFields(chart, series, seriesType, rhsColWrapper) {\n    const fields = series.params || series.options.params;\n    // Reset current content\n    rhsColWrapper.innerHTML = (highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default()).emptyHTML;\n    // Create title (indicator name in the right column)\n    PopupIndicators_createElement('h3', {\n        className: 'highcharts-indicator-title'\n    }, void 0, rhsColWrapper).appendChild(PopupIndicators_doc.createTextNode(getNameType(series, seriesType).indicatorFullName));\n    // Input type\n    PopupIndicators_createElement('input', {\n        type: 'hidden',\n        name: 'highcharts-type-' + seriesType,\n        value: seriesType\n    }, void 0, rhsColWrapper);\n    // List all series with id\n    listAllSeries.call(this, seriesType, 'series', chart, rhsColWrapper, series, series.linkedParent && series.linkedParent.options.id);\n    if (fields.volumeSeriesID) {\n        listAllSeries.call(this, seriesType, 'volume', chart, rhsColWrapper, series, series.linkedParent && fields.volumeSeriesID);\n    }\n    // Add param fields\n    addParamInputs.call(this, chart, 'params', fields, seriesType, rhsColWrapper);\n}\n/**\n * Create HTML list of all indicators (ADD mode) or added indicators\n * (EDIT mode).\n *\n * @private\n *\n * @param {Highcharts.AnnotationChart} chart\n *        The chart object.\n *\n * @param {string} [optionName]\n *        Name of the option into which selection is being added.\n *\n * @param {HTMLDOMElement} [parentDiv]\n *        HTML parent element.\n *\n * @param {string} listType\n *        Type of list depending on the selected bookmark.\n *        Might be 'add' or 'edit'.\n *\n * @param {string|undefined} filter\n *        Applied filter string from the input.\n *        For the first iteration, it's an empty string.\n */\nfunction addIndicatorList(chart, parentDiv, listType, filter) {\n    /**\n     *\n     */\n    function selectIndicator(series, indicatorType) {\n        const button = rhsColWrapper.parentNode\n            .children[1];\n        PopupIndicators_addFormFields.call(popup, chart, series, indicatorType, rhsColWrapper);\n        if (button) {\n            button.style.display = 'block';\n        }\n        // Add hidden input with series.id\n        if (isEdit && series.options) {\n            PopupIndicators_createElement('input', {\n                type: 'hidden',\n                name: 'highcharts-id-' + indicatorType,\n                value: series.options.id\n            }, void 0, rhsColWrapper).setAttribute('highcharts-data-series-id', series.options.id);\n        }\n    }\n    const popup = this, lang = popup.lang, lhsCol = parentDiv.querySelectorAll('.highcharts-popup-lhs-col')[0], rhsCol = parentDiv.querySelectorAll('.highcharts-popup-rhs-col')[0], isEdit = listType === 'edit', series = (isEdit ?\n        chart.series : // EDIT mode\n        chart.options.plotOptions || {} // ADD mode\n    );\n    if (!chart && series) {\n        return;\n    }\n    let item, filteredSeriesArray = [];\n    // Filter and sort the series.\n    if (!isEdit && !PopupIndicators_isArray(series)) {\n        // Apply filters only for the 'add' indicator list.\n        filteredSeriesArray = filterSeries.call(this, series, filter);\n    }\n    else if (PopupIndicators_isArray(series)) {\n        filteredSeriesArray = filterSeriesArray.call(this, series);\n    }\n    // Sort indicators alphabetically.\n    PopupIndicators_stableSort(filteredSeriesArray, (a, b) => {\n        const seriesAName = a.indicatorFullName.toLowerCase(), seriesBName = b.indicatorFullName.toLowerCase();\n        return (seriesAName < seriesBName) ?\n            -1 : (seriesAName > seriesBName) ? 1 : 0;\n    });\n    // If the list exists remove it from the DOM\n    // in order to create a new one with different filters.\n    if (lhsCol.children[1]) {\n        lhsCol.children[1].remove();\n    }\n    // Create wrapper for list.\n    const indicatorList = PopupIndicators_createElement('ul', {\n        className: 'highcharts-indicator-list'\n    }, void 0, lhsCol);\n    const rhsColWrapper = rhsCol.querySelectorAll('.highcharts-popup-rhs-col-wrapper')[0];\n    filteredSeriesArray.forEach((seriesSet) => {\n        const { indicatorFullName, indicatorType, series } = seriesSet;\n        item = PopupIndicators_createElement('li', {\n            className: 'highcharts-indicator-list'\n        }, void 0, indicatorList);\n        const btn = PopupIndicators_createElement('button', {\n            className: 'highcharts-indicator-list-item',\n            textContent: indicatorFullName\n        }, void 0, item);\n        ['click', 'touchstart'].forEach((eventName) => {\n            PopupIndicators_addEvent(btn, eventName, function () {\n                selectIndicator(series, indicatorType);\n            });\n        });\n    });\n    // Select first item from the list\n    if (filteredSeriesArray.length > 0) {\n        const { series, indicatorType } = filteredSeriesArray[0];\n        selectIndicator(series, indicatorType);\n    }\n    else if (!isEdit) {\n        highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(rhsColWrapper.parentNode.children[0], lang.noFilterMatch || '');\n        rhsColWrapper.parentNode.children[1]\n            .style.display = 'none';\n    }\n}\n/**\n * Recurrent function which lists all fields, from params object and\n * create them as inputs. Each input has unique `data-name` attribute,\n * which keeps chain of fields i.e params.styles.fontSize.\n * @private\n * @param {Highcharts.Chart} chart\n * Chart\n * @param {string} parentNode\n * Name of parent to create chain of names\n * @param {Highcharts.PopupFieldsDictionary<string>} fields\n * Params which are based for input create\n * @param {string} type\n * Indicator type like: sma, ema, etc.\n * @param {Highcharts.HTMLDOMElement} parentDiv\n * Element where created HTML list is added\n */\nfunction addParamInputs(chart, parentNode, fields, type, parentDiv) {\n    if (!chart) {\n        return;\n    }\n    const addInput = this.addInput;\n    PopupIndicators_objectEach(fields, (value, fieldName) => {\n        // Create name like params.styles.fontSize\n        const parentFullName = parentNode + '.' + fieldName;\n        if (PopupIndicators_defined(value) && // Skip if field is unnecessary, #15362\n            parentFullName) {\n            if (PopupIndicators_isObject(value)) {\n                // (15733) 'Periods' has an arrayed value. Label must be\n                // created here.\n                addInput.call(this, parentFullName, type, parentDiv, {});\n                addParamInputs.call(this, chart, parentFullName, value, type, parentDiv);\n            }\n            // If the option is listed in dropdown enum,\n            // add the selection box for it.\n            if (parentFullName in DropdownProperties) {\n                // Add selection boxes.\n                const selectBox = addSelection.call(this, type, parentFullName, parentDiv);\n                // Add possible dropdown options.\n                addSelectionOptions.call(this, chart, parentNode, selectBox, type, fieldName, value);\n            }\n            else if (\n            // Skip volume field which is created by addFormFields.\n            parentFullName !== 'params.volumeSeriesID' &&\n                !PopupIndicators_isArray(value) // Skip params declared in array.\n            ) {\n                addInput.call(this, parentFullName, type, parentDiv, {\n                    value: value,\n                    type: 'number'\n                } // All inputs are text type\n                );\n            }\n        }\n    });\n}\n/**\n * Add searchbox HTML element and its' label.\n *\n * @private\n *\n * @param {Highcharts.AnnotationChart} chart\n *        The chart object.\n *\n * @param {HTMLDOMElement} parentDiv\n *        HTML parent element.\n */\nfunction addSearchBox(chart, parentDiv) {\n    const popup = this, lhsCol = parentDiv.querySelectorAll('.highcharts-popup-lhs-col')[0], options = 'searchIndicators', inputAttributes = {\n        value: '',\n        type: 'text',\n        htmlFor: 'search-indicators',\n        labelClassName: 'highcharts-input-search-indicators-label'\n    }, clearFilterText = this.lang.clearFilter, inputWrapper = PopupIndicators_createElement('div', {\n        className: 'highcharts-input-wrapper'\n    }, void 0, lhsCol);\n    const handleInputChange = function (inputText) {\n        // Apply some filters.\n        addIndicatorList.call(popup, chart, popup.container, 'add', inputText);\n    };\n    // Add input field with the label and button.\n    const input = this.addInput(options, 'input', inputWrapper, inputAttributes), button = PopupIndicators_createElement('a', {\n        textContent: clearFilterText\n    }, void 0, inputWrapper);\n    input.classList.add('highcharts-input-search-indicators');\n    button.classList.add('clear-filter-button');\n    // Add input change events.\n    PopupIndicators_addEvent(input, 'input', function () {\n        handleInputChange(this.value);\n        // Show clear filter button.\n        if (this.value.length) {\n            button.style.display = 'inline-block';\n        }\n        else {\n            button.style.display = 'none';\n        }\n    });\n    // Add clear filter click event.\n    ['click', 'touchstart'].forEach((eventName) => {\n        PopupIndicators_addEvent(button, eventName, function () {\n            // Clear the input.\n            input.value = '';\n            handleInputChange('');\n            // Hide clear filter button- no longer necessary.\n            button.style.display = 'none';\n        });\n    });\n}\n/**\n * Add selection HTML element and its' label.\n *\n * @private\n *\n * @param {string} indicatorType\n * Type of the indicator i.e. sma, ema...\n *\n * @param {string} [optionName]\n * Name of the option into which selection is being added.\n *\n * @param {HTMLDOMElement} [parentDiv]\n * HTML parent element.\n */\nfunction addSelection(indicatorType, optionName, parentDiv) {\n    const optionParamList = optionName.split('.'), labelText = optionParamList[optionParamList.length - 1], selectName = 'highcharts-' + optionName + '-type-' + indicatorType, lang = this.lang;\n    // Add a label for the selection box.\n    PopupIndicators_createElement('label', {\n        htmlFor: selectName\n    }, null, parentDiv).appendChild(PopupIndicators_doc.createTextNode(lang[labelText] || optionName));\n    // Create a selection box.\n    const selectBox = PopupIndicators_createElement('select', {\n        name: selectName,\n        className: 'highcharts-popup-field',\n        id: 'highcharts-select-' + optionName\n    }, null, parentDiv);\n    selectBox.setAttribute('id', 'highcharts-select-' + optionName);\n    return selectBox;\n}\n/**\n * Get and add selection options.\n *\n * @private\n *\n * @param {Highcharts.AnnotationChart} chart\n *        The chart object.\n *\n * @param {string} [optionName]\n *        Name of the option into which selection is being added.\n *\n * @param {HTMLSelectElement} [selectBox]\n *        HTML select box element to which the options are being added.\n *\n * @param {string|undefined} indicatorType\n *        Type of the indicator i.e. sma, ema...\n *\n * @param {string|undefined} parameterName\n *        Name of the parameter which should be applied.\n *\n * @param {string|undefined} selectedOption\n *        Default value in dropdown.\n */\nfunction addSelectionOptions(chart, optionName, selectBox, indicatorType, parameterName, selectedOption, currentSeries) {\n    // Get and apply selection options for the possible series.\n    if (optionName === 'series' || optionName === 'volume') {\n        // List all series which have id - mandatory for indicator.\n        chart.series.forEach((series) => {\n            const seriesOptions = series.options, seriesName = seriesOptions.name ||\n                seriesOptions.params ?\n                series.name :\n                seriesOptions.id || '';\n            if (seriesOptions.id !== 'highcharts-navigator-series' &&\n                seriesOptions.id !== (currentSeries &&\n                    currentSeries.options &&\n                    currentSeries.options.id)) {\n                if (!PopupIndicators_defined(selectedOption) &&\n                    optionName === 'volume' &&\n                    series.type === 'column') {\n                    selectedOption = seriesOptions.id;\n                }\n                PopupIndicators_createElement('option', {\n                    value: seriesOptions.id\n                }, void 0, selectBox).appendChild(PopupIndicators_doc.createTextNode(seriesName));\n            }\n        });\n    }\n    else if (indicatorType && parameterName) {\n        // Get and apply options for the possible parameters.\n        const dropdownKey = parameterName + '-' + indicatorType, parameterOption = dropdownParameters[dropdownKey];\n        parameterOption.forEach((element) => {\n            PopupIndicators_createElement('option', {\n                value: element\n            }, void 0, selectBox).appendChild(PopupIndicators_doc.createTextNode(element));\n        });\n    }\n    // Add the default dropdown value if defined.\n    if (PopupIndicators_defined(selectedOption)) {\n        selectBox.value = selectedOption;\n    }\n}\n/**\n * Filter object of series which are not indicators.\n * If the filter string exists, check against it.\n *\n * @private\n *\n * @param {Highcharts.FilteredSeries} series\n *        All series are available in the plotOptions.\n *\n * @param {string|undefined} filter\n *        Applied filter string from the input.\n *        For the first iteration, it's an empty string.\n *\n * @return {Array<Highcharts.FilteredSeries>} filteredSeriesArray\n *         Returns array of filtered series based on filter string.\n */\nfunction filterSeries(series, filter) {\n    const popup = this, lang = popup.chart && popup.chart.options.lang, indicatorAliases = lang &&\n        lang.navigation &&\n        lang.navigation.popup &&\n        lang.navigation.popup.indicatorAliases, filteredSeriesArray = [];\n    let filteredSeries;\n    PopupIndicators_objectEach(series, (series, value) => {\n        const seriesOptions = series && series.options;\n        // Allow only indicators.\n        if (series.params || seriesOptions &&\n            seriesOptions.params) {\n            const { indicatorFullName, indicatorType } = getNameType(series, value);\n            if (filter) {\n                // Replace invalid characters.\n                const validFilter = filter.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n                const regex = new RegExp(validFilter, 'i'), alias = indicatorAliases &&\n                    indicatorAliases[indicatorType] &&\n                    indicatorAliases[indicatorType].join(' ') || '';\n                if (indicatorFullName.match(regex) ||\n                    alias.match(regex)) {\n                    filteredSeries = {\n                        indicatorFullName,\n                        indicatorType,\n                        series: series\n                    };\n                    filteredSeriesArray.push(filteredSeries);\n                }\n            }\n            else {\n                filteredSeries = {\n                    indicatorFullName,\n                    indicatorType,\n                    series: series\n                };\n                filteredSeriesArray.push(filteredSeries);\n            }\n        }\n    });\n    return filteredSeriesArray;\n}\n/**\n * Filter an array of series and map its names and types.\n *\n * @private\n *\n * @param {Highcharts.FilteredSeries} series\n *        All series that are available in the plotOptions.\n *\n * @return {Array<Highcharts.FilteredSeries>} filteredSeriesArray\n *         Returns array of filtered series based on filter string.\n */\nfunction filterSeriesArray(series) {\n    const filteredSeriesArray = [];\n    // Allow only indicators.\n    series.forEach((series) => {\n        if (series.is('sma')) {\n            filteredSeriesArray.push({\n                indicatorFullName: series.name,\n                indicatorType: series.type,\n                series: series\n            });\n        }\n    });\n    return filteredSeriesArray;\n}\n/**\n * Get amount of indicators added to chart.\n * @private\n * @return {number} - Amount of indicators\n */\nfunction getAmount() {\n    let counter = 0;\n    this.series.forEach((serie) => {\n        if (serie.params ||\n            serie.options.params) {\n            counter++;\n        }\n    });\n    return counter;\n}\n/**\n * Extract full name and type of requested indicator.\n *\n * @private\n *\n * @param {Highcharts.Series} series\n * Series which name is needed(EDITmode - defaultOptions.series,\n * ADDmode - indicator series).\n *\n * @param {string} [indicatorType]\n * Type of the indicator i.e. sma, ema...\n *\n * @return {Highcharts.Dictionary<string>}\n * Full name and series type.\n */\nfunction getNameType(series, indicatorType) {\n    const options = series.options;\n    // Add mode\n    let seriesName = (seriesTypes[indicatorType] &&\n        seriesTypes[indicatorType].prototype.nameBase) ||\n        indicatorType.toUpperCase(), seriesType = indicatorType;\n    // Edit\n    if (options && options.type) {\n        seriesType = series.options.type;\n        seriesName = series.name;\n    }\n    return {\n        indicatorFullName: seriesName,\n        indicatorType: seriesType\n    };\n}\n/**\n * Create the selection box for the series,\n * add options and apply the default one.\n *\n * @private\n *\n * @param {string} indicatorType\n *        Type of the indicator i.e. sma, ema...\n *\n * @param {string} [optionName]\n *        Name of the option into which selection is being added.\n *\n * @param {Highcharts.AnnotationChart} chart\n *        The chart object.\n *\n * @param {HTMLDOMElement} [parentDiv]\n *        HTML parent element.\n *\n * @param {string|undefined} selectedOption\n *        Default value in dropdown.\n */\nfunction listAllSeries(indicatorType, optionName, chart, parentDiv, currentSeries, selectedOption) {\n    const popup = this;\n    // Won't work without the chart.\n    if (!chart) {\n        return;\n    }\n    // Add selection boxes.\n    const selectBox = addSelection.call(popup, indicatorType, optionName, parentDiv);\n    // Add possible dropdown options.\n    addSelectionOptions.call(popup, chart, optionName, selectBox, void 0, void 0, void 0, currentSeries);\n    // Add the default dropdown value if defined.\n    if (PopupIndicators_defined(selectedOption)) {\n        selectBox.value = selectedOption;\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst PopupIndicators = {\n    addForm: PopupIndicators_addForm,\n    getAmount\n};\n/* harmony default export */ const Popup_PopupIndicators = (PopupIndicators);\n\n;// ./code/es-modules/Extensions/Annotations/Popup/PopupTabs.js\n/* *\n *\n *  Popup generator for Stock tools\n *\n *  (c) 2009-2024 Sebastian Bochan\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { doc: PopupTabs_doc } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { addEvent: PopupTabs_addEvent, createElement: PopupTabs_createElement } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Create tab content\n * @private\n * @return {HTMLDOMElement} - created HTML tab-content element\n */\nfunction addContentItem() {\n    const popupDiv = this.container;\n    return PopupTabs_createElement('div', {\n        // #12100\n        className: 'highcharts-tab-item-content highcharts-no-mousewheel'\n    }, void 0, popupDiv);\n}\n/**\n * Create tab menu item\n * @private\n * @param {string} tabName\n * `add` or `edit`\n * @param {number} [disableTab]\n * Disable tab when 0\n * @return {Highcharts.HTMLDOMElement}\n * Created HTML tab-menu element\n */\nfunction addMenuItem(tabName, disableTab) {\n    const popupDiv = this.container, lang = this.lang;\n    let className = 'highcharts-tab-item';\n    if (disableTab === 0) {\n        className += ' highcharts-tab-disabled';\n    }\n    // Tab 1\n    const menuItem = PopupTabs_createElement('button', {\n        className\n    }, void 0, popupDiv);\n    menuItem.appendChild(PopupTabs_doc.createTextNode(lang[tabName + 'Button'] || tabName));\n    menuItem.setAttribute('highcharts-data-tab-type', tabName);\n    return menuItem;\n}\n/**\n * Set all tabs as invisible.\n * @private\n */\nfunction deselectAll() {\n    const popupDiv = this.container, tabs = popupDiv\n        .querySelectorAll('.highcharts-tab-item'), tabsContent = popupDiv\n        .querySelectorAll('.highcharts-tab-item-content');\n    for (let i = 0; i < tabs.length; i++) {\n        tabs[i].classList.remove('highcharts-tab-item-active');\n        tabsContent[i].classList.remove('highcharts-tab-item-show');\n    }\n}\n/**\n * Init tabs. Create tab menu items, tabs containers\n * @private\n * @param {Highcharts.Chart} chart\n * Reference to current chart\n */\nfunction init(chart) {\n    if (!chart) {\n        return;\n    }\n    const indicatorsCount = this.indicators.getAmount.call(chart);\n    // Create menu items\n    const firstTab = addMenuItem.call(this, 'add'); // Run by default\n    addMenuItem.call(this, 'edit', indicatorsCount);\n    // Create tabs containers\n    addContentItem.call(this);\n    addContentItem.call(this);\n    switchTabs.call(this, indicatorsCount);\n    // Activate first tab\n    selectTab.call(this, firstTab, 0);\n}\n/**\n * Set tab as visible\n * @private\n * @param {globals.Element} - current tab\n * @param {number} - Index of tab in menu\n */\nfunction selectTab(tab, index) {\n    const allTabs = this.container\n        .querySelectorAll('.highcharts-tab-item-content');\n    tab.className += ' highcharts-tab-item-active';\n    allTabs[index].className += ' highcharts-tab-item-show';\n}\n/**\n * Add click event to each tab\n * @private\n * @param {number} disableTab\n * Disable tab when 0\n */\nfunction switchTabs(disableTab) {\n    const popup = this, popupDiv = this.container, tabs = popupDiv.querySelectorAll('.highcharts-tab-item');\n    tabs.forEach((tab, i) => {\n        if (disableTab === 0 &&\n            tab.getAttribute('highcharts-data-tab-type') === 'edit') {\n            return;\n        }\n        ['click', 'touchstart'].forEach((eventName) => {\n            PopupTabs_addEvent(tab, eventName, function () {\n                // Reset class on other elements\n                deselectAll.call(popup);\n                selectTab.call(popup, this, i);\n            });\n        });\n    });\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst PopupTabs = {\n    init\n};\n/* harmony default export */ const Popup_PopupTabs = (PopupTabs);\n\n;// ./code/es-modules/Extensions/Annotations/Popup/Popup.js\n/* *\n *\n *  Popup generator for Stock tools\n *\n *  (c) 2009-2024 Sebastian Bochan\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { doc: Popup_doc } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { getOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n\nconst { addEvent: Popup_addEvent, createElement: Popup_createElement, extend: Popup_extend, fireEvent: Popup_fireEvent, pick: Popup_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Get values from all inputs and selections then create JSON.\n *\n * @private\n *\n * @param {Highcharts.HTMLDOMElement} parentDiv\n * The container where inputs and selections are created.\n *\n * @param {string} type\n * Type of the popup bookmark (add|edit|remove).\n */\nfunction getFields(parentDiv, type) {\n    const inputList = Array.prototype.slice.call(parentDiv.querySelectorAll('input')), selectList = Array.prototype.slice.call(parentDiv.querySelectorAll('select')), optionSeries = '#highcharts-select-series > option:checked', optionVolume = '#highcharts-select-volume > option:checked', linkedTo = parentDiv.querySelectorAll(optionSeries)[0], volumeTo = parentDiv.querySelectorAll(optionVolume)[0];\n    const fieldsOutput = {\n        actionType: type,\n        linkedTo: linkedTo && linkedTo.getAttribute('value') || '',\n        fields: {}\n    };\n    inputList.forEach((input) => {\n        const param = input.getAttribute('highcharts-data-name'), seriesId = input.getAttribute('highcharts-data-series-id');\n        // Params\n        if (seriesId) {\n            fieldsOutput.seriesId = input.value;\n        }\n        else if (param) {\n            fieldsOutput.fields[param] = input.value;\n        }\n        else {\n            // Type like sma / ema\n            fieldsOutput.type = input.value;\n        }\n    });\n    selectList.forEach((select) => {\n        const id = select.id;\n        // Get inputs only for the parameters, not for series and volume.\n        if (id !== 'highcharts-select-series' &&\n            id !== 'highcharts-select-volume') {\n            const parameter = id.split('highcharts-select-')[1];\n            fieldsOutput.fields[parameter] = select.value;\n        }\n    });\n    if (volumeTo) {\n        fieldsOutput.fields['params.volumeSeriesID'] = volumeTo\n            .getAttribute('value') || '';\n    }\n    return fieldsOutput;\n}\n/* *\n *\n *  Class\n *\n * */\nclass Popup extends Shared_BaseForm {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(parentDiv, iconsURL, chart) {\n        super(parentDiv, iconsURL);\n        this.chart = chart;\n        this.lang = (getOptions().lang.navigation || {}).popup || {};\n        Popup_addEvent(this.container, 'mousedown', () => {\n            const activeAnnotation = chart &&\n                chart.navigationBindings &&\n                chart.navigationBindings.activeAnnotation;\n            if (activeAnnotation) {\n                activeAnnotation.cancelClick = true;\n                const unbind = Popup_addEvent(Popup_doc, 'click', () => {\n                    setTimeout(() => {\n                        activeAnnotation.cancelClick = false;\n                    }, 0);\n                    unbind();\n                });\n            }\n        });\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Create input with label.\n     *\n     * @private\n     *\n     * @param {string} option\n     *        Chain of fields i.e params.styles.fontSize separated by the dot.\n     *\n     * @param {string} indicatorType\n     *        Type of the indicator i.e. sma, ema...\n     *\n     * @param {HTMLDOMElement} parentDiv\n     *        HTML parent element.\n     *\n     * @param {Highcharts.InputAttributes} inputAttributes\n     *        Attributes of the input.\n     *\n     * @return {HTMLInputElement}\n     *         Return created input element.\n     */\n    addInput(option, indicatorType, parentDiv, inputAttributes) {\n        const optionParamList = option.split('.'), optionName = optionParamList[optionParamList.length - 1], lang = this.lang, inputName = 'highcharts-' + indicatorType + '-' + Popup_pick(inputAttributes.htmlFor, optionName);\n        if (!optionName.match(/^\\d+$/)) {\n            // Add label\n            Popup_createElement('label', {\n                htmlFor: inputName,\n                className: inputAttributes.labelClassName\n            }, void 0, parentDiv).appendChild(Popup_doc.createTextNode(lang[optionName] || optionName));\n        }\n        // Add input\n        const input = Popup_createElement('input', {\n            name: inputName,\n            value: inputAttributes.value,\n            type: inputAttributes.type,\n            className: 'highcharts-popup-field'\n        }, void 0, parentDiv);\n        input.setAttribute('highcharts-data-name', option);\n        return input;\n    }\n    closeButtonEvents() {\n        if (this.chart) {\n            const navigationBindings = this.chart.navigationBindings;\n            Popup_fireEvent(navigationBindings, 'closePopup');\n            if (navigationBindings &&\n                navigationBindings.selectedButtonElement) {\n                Popup_fireEvent(navigationBindings, 'deselectButton', { button: navigationBindings.selectedButtonElement });\n            }\n        }\n        else {\n            super.closeButtonEvents();\n        }\n    }\n    /**\n     * Create button.\n     * @private\n     * @param {Highcharts.HTMLDOMElement} parentDiv\n     * Container where elements should be added\n     * @param {string} label\n     * Text placed as button label\n     * @param {string} type\n     * add | edit | remove\n     * @param {Function} callback\n     * On click callback\n     * @param {Highcharts.HTMLDOMElement} fieldsDiv\n     * Container where inputs are generated\n     * @return {Highcharts.HTMLDOMElement}\n     * HTML button\n     */\n    addButton(parentDiv, label, type, fieldsDiv, callback) {\n        const button = Popup_createElement('button', void 0, void 0, parentDiv);\n        button.appendChild(Popup_doc.createTextNode(label));\n        if (callback) {\n            ['click', 'touchstart'].forEach((eventName) => {\n                Popup_addEvent(button, eventName, () => {\n                    this.closePopup();\n                    return callback(getFields(fieldsDiv, type));\n                });\n            });\n        }\n        return button;\n    }\n    /**\n     * Create content and show popup.\n     * @private\n     * @param {string} - type of popup i.e indicators\n     * @param {Highcharts.Chart} - chart\n     * @param {Highcharts.AnnotationsOptions} - options\n     * @param {Function} - on click callback\n     */\n    showForm(type, chart, options, callback) {\n        if (!chart) {\n            return;\n        }\n        // Show blank popup\n        this.showPopup();\n        // Indicator form\n        if (type === 'indicators') {\n            this.indicators.addForm.call(this, chart, options, callback);\n        }\n        // Annotation small toolbar\n        if (type === 'annotation-toolbar') {\n            this.annotations.addToolbar.call(this, chart, options, callback);\n        }\n        // Annotation edit form\n        if (type === 'annotation-edit') {\n            this.annotations.addForm.call(this, chart, options, callback);\n        }\n        // Flags form - add / edit\n        if (type === 'flag') {\n            this.annotations.addForm.call(this, chart, options, callback, true);\n        }\n        this.type = type;\n        // Explicit height is needed to make inner elements scrollable\n        this.container.style.height = this.container.offsetHeight + 'px';\n    }\n}\nPopup_extend(Popup.prototype, {\n    annotations: Popup_PopupAnnotations,\n    indicators: Popup_PopupIndicators,\n    tabs: Popup_PopupTabs\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Popup_Popup = (Popup);\n\n;// ./code/es-modules/Extensions/Annotations/Popup/PopupComposition.js\n/* *\n *\n *  Popup generator for Stock tools\n *\n *  (c) 2009-2024 Sebastian Bochan\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { composed } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { addEvent: PopupComposition_addEvent, pushUnique, wrap: PopupComposition_wrap } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction compose(NagivationBindingsClass, PointerClass) {\n    if (pushUnique(composed, 'Popup')) {\n        PopupComposition_addEvent(NagivationBindingsClass, 'closePopup', onNavigationBindingsClosePopup);\n        PopupComposition_addEvent(NagivationBindingsClass, 'showPopup', onNavigationBindingsShowPopup);\n        PopupComposition_wrap(PointerClass.prototype, 'onContainerMouseDown', wrapPointerOnContainerMouserDown);\n    }\n}\n/**\n * @private\n */\nfunction onNavigationBindingsClosePopup() {\n    if (this.popup) {\n        this.popup.closePopup();\n    }\n}\n/**\n * @private\n */\nfunction onNavigationBindingsShowPopup(config) {\n    if (!this.popup) {\n        // Add popup to main container\n        this.popup = new Popup_Popup(this.chart.container, (this.chart.options.navigation.iconsURL ||\n            (this.chart.options.stockTools &&\n                this.chart.options.stockTools.gui.iconsURL) ||\n            'https://code.highcharts.com/12.1.2/gfx/stock-icons/'), this.chart);\n    }\n    this.popup.showForm(config.formType, this.chart, config.options, config.onSubmit);\n}\n/**\n * `onContainerMouseDown` blocks internal popup events, due to e.preventDefault.\n * Related issue #4606\n * @private\n */\nfunction wrapPointerOnContainerMouserDown(proceed, e) {\n    // Elements is not in popup\n    if (!this.inClass(e.target, 'highcharts-popup')) {\n        proceed.apply(this, Array.prototype.slice.call(arguments, 1));\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst PopupComposition = {\n    compose\n};\n/* harmony default export */ const Popup_PopupComposition = (PopupComposition);\n\n;// ./code/es-modules/Extensions/Annotations/Annotation.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { getDeferredAnimation } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst { destroyObjectProperties, erase: Annotation_erase, fireEvent: Annotation_fireEvent, merge: Annotation_merge, pick: Annotation_pick, splat } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Hide or show annotation attached to points.\n * @private\n */\nfunction adjustVisibility(item) {\n    const label = item.graphic, hasVisiblePoints = item.points.some((point) => (point.series.visible !== false &&\n        point.visible !== false));\n    if (label) {\n        if (!hasVisiblePoints) {\n            label.hide();\n        }\n        else if (label.visibility === 'hidden') {\n            label.show();\n        }\n    }\n}\n/**\n * @private\n */\nfunction getLabelsAndShapesOptions(baseOptions, newOptions) {\n    const mergedOptions = {};\n    ['labels', 'shapes'].forEach((name) => {\n        const someBaseOptions = baseOptions[name], newOptionsValue = newOptions[name];\n        if (someBaseOptions) {\n            if (newOptionsValue) {\n                mergedOptions[name] = splat(newOptionsValue).map((basicOptions, i) => Annotation_merge(someBaseOptions[i], basicOptions));\n            }\n            else {\n                mergedOptions[name] = baseOptions[name];\n            }\n        }\n    });\n    return mergedOptions;\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * An annotation class which serves as a container for items like labels or\n * shapes. Created items are positioned on the chart either by linking them to\n * existing points or created mock points\n *\n * @requires modules/annotations\n *\n * @class\n * @name Highcharts.Annotation\n *\n * @param {Highcharts.Chart} chart\n *        A chart instance\n * @param {Highcharts.AnnotationsOptions} userOptions\n *        The annotation options\n */\nclass Annotation extends Annotations_EventEmitter {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    static compose(ChartClass, NavigationBindingsClass, PointerClass, SVGRendererClass) {\n        Annotations_AnnotationChart.compose(Annotation, ChartClass, PointerClass);\n        Controllables_ControllableLabel.compose(SVGRendererClass);\n        Controllables_ControllablePath.compose(ChartClass, SVGRendererClass);\n        NavigationBindingsClass.compose(Annotation, ChartClass);\n        Popup_PopupComposition.compose(NavigationBindingsClass, PointerClass);\n    }\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    constructor(chart, userOptions) {\n        super();\n        this.coll = 'annotations';\n        /**\n         * The chart that the annotation belongs to.\n         *\n         * @name Highcharts.Annotation#chart\n         * @type {Highcharts.Chart}\n         */\n        this.chart = chart;\n        /**\n         * The array of points which defines the annotation.\n         * @private\n         * @name Highcharts.Annotation#points\n         * @type {Array<Highcharts.Point>}\n         */\n        this.points = [];\n        /**\n         * The array of control points.\n         * @private\n         * @name Highcharts.Annotation#controlPoints\n         * @type {Array<Annotation.ControlPoint>}\n         */\n        this.controlPoints = [];\n        this.coll = 'annotations';\n        this.index = -1;\n        /**\n         * The array of labels which belong to the annotation.\n         * @private\n         * @name Highcharts.Annotation#labels\n         * @type {Array<Highcharts.AnnotationLabelType>}\n         */\n        this.labels = [];\n        /**\n         * The array of shapes which belong to the annotation.\n         * @private\n         * @name Highcharts.Annotation#shapes\n         * @type {Array<Highcharts.AnnotationShapeType>}\n         */\n        this.shapes = [];\n        /**\n         * The options for the annotations.\n         *\n         * @name Highcharts.Annotation#options\n         * @type {Highcharts.AnnotationsOptions}\n         */\n        this.options = Annotation_merge(this.defaultOptions, userOptions);\n        /**\n         * The user options for the annotations.\n         *\n         * @name Highcharts.Annotation#userOptions\n         * @type {Highcharts.AnnotationsOptions}\n         */\n        this.userOptions = userOptions;\n        // Handle labels and shapes - those are arrays\n        // Merging does not work with arrays (stores reference)\n        const labelsAndShapes = getLabelsAndShapesOptions(this.options, userOptions);\n        this.options.labels = labelsAndShapes.labels;\n        this.options.shapes = labelsAndShapes.shapes;\n        /**\n         * The callback that reports to the overlapping-labels module which\n         * labels it should account for.\n         * @private\n         * @name Highcharts.Annotation#labelCollector\n         * @type {Function}\n         */\n        /**\n         * The group svg element.\n         *\n         * @name Highcharts.Annotation#group\n         * @type {Highcharts.SVGElement}\n         */\n        /**\n         * The group svg element of the annotation's shapes.\n         *\n         * @name Highcharts.Annotation#shapesGroup\n         * @type {Highcharts.SVGElement}\n         */\n        /**\n         * The group svg element of the annotation's labels.\n         *\n         * @name Highcharts.Annotation#labelsGroup\n         * @type {Highcharts.SVGElement}\n         */\n        this.init(chart, this.options);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    addClipPaths() {\n        this.setClipAxes();\n        if (this.clipXAxis &&\n            this.clipYAxis &&\n            this.options.crop // #15399\n        ) {\n            this.clipRect = this.chart.renderer.clipRect(this.getClipBox());\n        }\n    }\n    /**\n     * @private\n     */\n    addLabels() {\n        const labelsOptions = (this.options.labels || []);\n        labelsOptions.forEach((labelOptions, i) => {\n            const label = this.initLabel(labelOptions, i);\n            Annotation_merge(true, labelsOptions[i], label.options);\n        });\n    }\n    /**\n     * @private\n     */\n    addShapes() {\n        const shapes = this.options.shapes || [];\n        shapes.forEach((shapeOptions, i) => {\n            const shape = this.initShape(shapeOptions, i);\n            Annotation_merge(true, shapes[i], shape.options);\n        });\n    }\n    /**\n     * Destroy the annotation. This function does not touch the chart\n     * that the annotation belongs to (all annotations are kept in\n     * the chart.annotations array) - it is recommended to use\n     * {@link Highcharts.Chart#removeAnnotation} instead.\n     * @private\n     */\n    destroy() {\n        const chart = this.chart, destroyItem = function (item) {\n            item.destroy();\n        };\n        this.labels.forEach(destroyItem);\n        this.shapes.forEach(destroyItem);\n        this.clipXAxis = null;\n        this.clipYAxis = null;\n        Annotation_erase(chart.labelCollectors, this.labelCollector);\n        super.destroy();\n        this.destroyControlTarget();\n        destroyObjectProperties(this, chart);\n    }\n    /**\n     * Destroy a single item.\n     * @private\n     */\n    destroyItem(item) {\n        // Erase from shapes or labels array\n        Annotation_erase(this[item.itemType + 's'], item);\n        item.destroy();\n    }\n    /**\n     * @private\n     */\n    getClipBox() {\n        if (this.clipXAxis && this.clipYAxis) {\n            return {\n                x: this.clipXAxis.left,\n                y: this.clipYAxis.top,\n                width: this.clipXAxis.width,\n                height: this.clipYAxis.height\n            };\n        }\n    }\n    /**\n     * Initialize the annotation properties.\n     * @private\n     */\n    initProperties(chart, userOptions) {\n        this.setOptions(userOptions);\n        const labelsAndShapes = getLabelsAndShapesOptions(this.options, userOptions);\n        this.options.labels = labelsAndShapes.labels;\n        this.options.shapes = labelsAndShapes.shapes;\n        this.chart = chart;\n        this.points = [];\n        this.controlPoints = [];\n        this.coll = 'annotations';\n        this.userOptions = userOptions;\n        this.labels = [];\n        this.shapes = [];\n    }\n    /**\n     * Initialize the annotation.\n     * @private\n     */\n    init(_annotationOrChart, _userOptions, index = this.index) {\n        const chart = this.chart, animOptions = this.options.animation;\n        this.index = index;\n        this.linkPoints();\n        this.addControlPoints();\n        this.addShapes();\n        this.addLabels();\n        this.setLabelCollector();\n        this.animationConfig = getDeferredAnimation(chart, animOptions);\n    }\n    /**\n     * Initialisation of a single label\n     * @private\n     */\n    initLabel(labelOptions, index) {\n        const options = Annotation_merge(this.options.labelOptions, {\n            controlPointOptions: this.options.controlPointOptions\n        }, labelOptions), label = new Controllables_ControllableLabel(this, options, index);\n        label.itemType = 'label';\n        this.labels.push(label);\n        return label;\n    }\n    /**\n     * Initialisation of a single shape\n     * @private\n     * @param {Object} shapeOptions\n     * a config object for a single shape\n     * @param {number} index\n     * annotation may have many shapes, this is the shape's index saved in\n     * shapes.index.\n     */\n    initShape(shapeOptions, index) {\n        const options = Annotation_merge(this.options.shapeOptions, {\n            controlPointOptions: this.options.controlPointOptions\n        }, shapeOptions), shape = new (Annotation.shapesMap[options.type])(this, options, index);\n        shape.itemType = 'shape';\n        this.shapes.push(shape);\n        return shape;\n    }\n    /**\n     * @private\n     */\n    redraw(animation) {\n        this.linkPoints();\n        if (!this.graphic) {\n            this.render();\n        }\n        if (this.clipRect) {\n            this.clipRect.animate(this.getClipBox());\n        }\n        this.redrawItems(this.shapes, animation);\n        this.redrawItems(this.labels, animation);\n        this.redrawControlPoints(animation);\n    }\n    /**\n     * Redraw a single item.\n     * @private\n     */\n    redrawItem(item, animation) {\n        item.linkPoints();\n        if (!item.shouldBeDrawn()) {\n            this.destroyItem(item);\n        }\n        else {\n            if (!item.graphic) {\n                this.renderItem(item);\n            }\n            item.redraw(Annotation_pick(animation, true) && item.graphic.placed);\n            if (item.points.length) {\n                adjustVisibility(item);\n            }\n        }\n    }\n    /**\n     * @private\n     */\n    redrawItems(items, animation) {\n        let i = items.length;\n        // Needs a backward loop. Labels/shapes array might be modified due to\n        // destruction of the item\n        while (i--) {\n            this.redrawItem(items[i], animation);\n        }\n    }\n    /**\n     * See {@link Highcharts.Chart#removeAnnotation}.\n     * @private\n     */\n    remove() {\n        // Let chart.update() remove annotations on demand\n        return this.chart.removeAnnotation(this);\n    }\n    /**\n     * @private\n     */\n    render() {\n        const renderer = this.chart.renderer;\n        this.graphic = renderer\n            .g('annotation')\n            .attr({\n            opacity: 0,\n            zIndex: this.options.zIndex,\n            visibility: this.options.visible ?\n                'inherit' :\n                'hidden'\n        })\n            .add();\n        this.shapesGroup = renderer\n            .g('annotation-shapes')\n            .add(this.graphic);\n        if (this.options.crop) { // #15399\n            this.shapesGroup.clip(this.chart.plotBoxClip);\n        }\n        this.labelsGroup = renderer\n            .g('annotation-labels')\n            .attr({\n            // `hideOverlappingLabels` requires translation\n            translateX: 0,\n            translateY: 0\n        })\n            .add(this.graphic);\n        this.addClipPaths();\n        if (this.clipRect) {\n            this.graphic.clip(this.clipRect);\n        }\n        // Render shapes and labels before adding events (#13070).\n        this.renderItems(this.shapes);\n        this.renderItems(this.labels);\n        this.addEvents();\n        this.renderControlPoints();\n    }\n    /**\n     * @private\n     */\n    renderItem(item) {\n        item.render(item.itemType === 'label' ?\n            this.labelsGroup :\n            this.shapesGroup);\n    }\n    /**\n     * @private\n     */\n    renderItems(items) {\n        let i = items.length;\n        while (i--) {\n            this.renderItem(items[i]);\n        }\n    }\n    /**\n     * @private\n     */\n    setClipAxes() {\n        const xAxes = this.chart.xAxis, yAxes = this.chart.yAxis, linkedAxes = (this.options.labels || [])\n            .concat(this.options.shapes || [])\n            .reduce((axes, labelOrShape) => {\n            const point = labelOrShape &&\n                (labelOrShape.point ||\n                    (labelOrShape.points && labelOrShape.points[0]));\n            return [\n                xAxes[point && point.xAxis] || axes[0],\n                yAxes[point && point.yAxis] || axes[1]\n            ];\n        }, []);\n        this.clipXAxis = linkedAxes[0];\n        this.clipYAxis = linkedAxes[1];\n    }\n    /**\n     * @private\n     */\n    setControlPointsVisibility(visible) {\n        const setItemControlPointsVisibility = function (item) {\n            item.setControlPointsVisibility(visible);\n        };\n        this.controlPoints.forEach((controlPoint) => {\n            controlPoint.setVisibility(visible);\n        });\n        this.shapes.forEach(setItemControlPointsVisibility);\n        this.labels.forEach(setItemControlPointsVisibility);\n    }\n    /**\n     * @private\n     */\n    setLabelCollector() {\n        const annotation = this;\n        annotation.labelCollector = function () {\n            return annotation.labels.reduce(function (labels, label) {\n                if (!label.options.allowOverlap) {\n                    labels.push(label.graphic);\n                }\n                return labels;\n            }, []);\n        };\n        annotation.chart.labelCollectors.push(annotation.labelCollector);\n    }\n    /**\n     * Set an annotation options.\n     * @private\n     * @param {Highcharts.AnnotationsOptions} userOptions\n     *        User options for an annotation\n     */\n    setOptions(userOptions) {\n        this.options = Annotation_merge(this.defaultOptions, userOptions);\n    }\n    /**\n     * Set the annotation's visibility.\n     * @private\n     * @param {boolean} [visible]\n     * Whether to show or hide an annotation. If the param is omitted, the\n     * annotation's visibility is toggled.\n     */\n    setVisibility(visible) {\n        const options = this.options, navigation = this.chart.navigationBindings, visibility = Annotation_pick(visible, !options.visible);\n        this.graphic.attr('visibility', visibility ? 'inherit' : 'hidden');\n        if (!visibility) {\n            const setItemControlPointsVisibility = function (item) {\n                item.setControlPointsVisibility(visibility);\n            };\n            this.shapes.forEach(setItemControlPointsVisibility);\n            this.labels.forEach(setItemControlPointsVisibility);\n            if (navigation.activeAnnotation === this &&\n                navigation.popup &&\n                navigation.popup.type === 'annotation-toolbar') {\n                Annotation_fireEvent(navigation, 'closePopup');\n            }\n        }\n        options.visible = visibility;\n    }\n    /**\n     * Updates an annotation.\n     *\n     * @function Highcharts.Annotation#update\n     *\n     * @param {Partial<Highcharts.AnnotationsOptions>} userOptions\n     *        New user options for the annotation.\n     *\n     */\n    update(userOptions, redraw) {\n        const chart = this.chart, labelsAndShapes = getLabelsAndShapesOptions(this.userOptions, userOptions), userOptionsIndex = chart.annotations.indexOf(this), options = Annotation_merge(true, this.userOptions, userOptions);\n        options.labels = labelsAndShapes.labels;\n        options.shapes = labelsAndShapes.shapes;\n        this.destroy();\n        this.initProperties(chart, options);\n        this.init(chart, options);\n        // Update options in chart options, used in exporting (#9767, #21507):\n        chart.options.annotations[userOptionsIndex] = this.options;\n        this.isUpdating = true;\n        if (Annotation_pick(redraw, true)) {\n            chart.drawAnnotations();\n        }\n        Annotation_fireEvent(this, 'afterUpdate');\n        this.isUpdating = false;\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n/**\n * @private\n */\nAnnotation.ControlPoint = Annotations_ControlPoint;\n/**\n * @private\n */\nAnnotation.MockPoint = Annotations_MockPoint;\n/**\n * An object uses for mapping between a shape type and a constructor.\n * To add a new shape type extend this object with type name as a key\n * and a constructor as its value.\n *\n * @private\n */\nAnnotation.shapesMap = {\n    'rect': Controllables_ControllableRect,\n    'circle': Controllables_ControllableCircle,\n    'ellipse': Controllables_ControllableEllipse,\n    'path': Controllables_ControllablePath,\n    'image': Controllables_ControllableImage\n};\n/**\n * @private\n */\nAnnotation.types = {};\nAnnotation.prototype.defaultOptions = Annotations_AnnotationDefaults;\n/**\n * List of events for `annotation.options.events` that should not be\n * added to `annotation.graphic` but to the `annotation`.\n *\n * @private\n * @type {Array<string>}\n */\nAnnotation.prototype.nonDOMEvents = ['add', 'afterUpdate', 'drag', 'remove'];\nAnnotations_ControlTarget.compose(Annotation);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_Annotation = (Annotation);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * Possible directions for draggable annotations. An empty string (`''`)\n * makes the annotation undraggable.\n *\n * @typedef {''|'x'|'xy'|'y'} Highcharts.AnnotationDraggableValue\n * @requires modules/annotations\n */\n/**\n * @private\n * @typedef {\n *          Highcharts.AnnotationControllableCircle|\n *          Highcharts.AnnotationControllableImage|\n *          Highcharts.AnnotationControllablePath|\n *          Highcharts.AnnotationControllableRect\n *     } Highcharts.AnnotationShapeType\n * @requires modules/annotations\n */\n/**\n * @private\n * @typedef {\n *          Highcharts.AnnotationControllableLabel\n *     } Highcharts.AnnotationLabelType\n * @requires modules/annotations\n */\n/**\n * A point-like object, a mock point or a point used in series.\n * @private\n * @typedef {\n *          Highcharts.AnnotationMockPoint|\n *          Highcharts.Point\n *     } Highcharts.AnnotationPointType\n * @requires modules/annotations\n */\n/**\n * Shape point as string, object or function.\n *\n * @typedef {\n *          string|\n *          Highcharts.AnnotationMockPointOptionsObject|\n *          Highcharts.AnnotationMockPointFunction\n *     } Highcharts.AnnotationShapePointOptions\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es-modules/Core/Chart/ChartNavigationComposition.js\n/**\n *\n *  (c) 2010-2024 Paweł Fus\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Composition\n *\n * */\nvar ChartNavigationComposition;\n(function (ChartNavigationComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * @private\n     */\n    function compose(chart) {\n        if (!chart.navigation) {\n            chart.navigation = new Additions(chart);\n        }\n        return chart;\n    }\n    ChartNavigationComposition.compose = compose;\n    /* *\n     *\n     *  Class\n     *\n     * */\n    /**\n     * Initializes `chart.navigation` object which delegates `update()` methods\n     * to all other common classes (used in exporting and navigationBindings).\n     * @private\n     */\n    class Additions {\n        /* *\n         *\n         *  Constructor\n         *\n         * */\n        constructor(chart) {\n            this.updates = [];\n            this.chart = chart;\n        }\n        /* *\n         *\n         *  Functions\n         *\n         * */\n        /**\n         * Registers an `update()` method in the `chart.navigation` object.\n         *\n         * @private\n         * @param {UpdateFunction} updateFn\n         * The `update()` method that will be called in `chart.update()`.\n         */\n        addUpdate(updateFn) {\n            this.chart.navigation.updates.push(updateFn);\n        }\n        /**\n         * @private\n         */\n        update(options, redraw) {\n            this.updates.forEach((updateFn) => {\n                updateFn.call(this.chart, options, redraw);\n            });\n        }\n    }\n    ChartNavigationComposition.Additions = Additions;\n})(ChartNavigationComposition || (ChartNavigationComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Chart_ChartNavigationComposition = (ChartNavigationComposition);\n\n;// ./code/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { defined: NavigationBindingsUtilities_defined, isNumber: NavigationBindingsUtilities_isNumber, pick: NavigationBindingsUtilities_pick } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Define types for editable fields per annotation. There is no need to define\n * numbers, because they won't change their type to string.\n * @private\n */\nconst annotationsFieldsTypes = {\n    backgroundColor: 'string',\n    borderColor: 'string',\n    borderRadius: 'string',\n    color: 'string',\n    fill: 'string',\n    fontSize: 'string',\n    labels: 'string',\n    name: 'string',\n    stroke: 'string',\n    title: 'string'\n};\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Returns the first xAxis or yAxis that was clicked with its value.\n *\n * @private\n *\n * @param {Array<Highcharts.PointerAxisCoordinateObject>} coords\n *        All the chart's x or y axes with a current pointer's axis value.\n *\n * @return {Highcharts.PointerAxisCoordinateObject}\n *         Object with a first found axis and its value that pointer\n *         is currently pointing.\n */\nfunction getAssignedAxis(coords) {\n    return coords.filter((coord) => {\n        const extremes = coord.axis.getExtremes(), axisMin = extremes.min, axisMax = extremes.max, \n        // Correct axis edges when axis has series\n        // with pointRange (like column)\n        minPointOffset = NavigationBindingsUtilities_pick(coord.axis.minPointOffset, 0);\n        return NavigationBindingsUtilities_isNumber(axisMin) && NavigationBindingsUtilities_isNumber(axisMax) &&\n            coord.value >= (axisMin - minPointOffset) &&\n            coord.value <= (axisMax + minPointOffset) &&\n            // Don't count navigator axis\n            !coord.axis.options.isInternal;\n    })[0]; // If the axes overlap, return the first axis that was found.\n}\n/**\n * Get field type according to value\n *\n * @private\n *\n * @param {'boolean'|'number'|'string'} value\n * Atomic type (one of: string, number, boolean)\n *\n * @return {'checkbox'|'number'|'text'}\n * Field type (one of: text, number, checkbox)\n */\nfunction getFieldType(key, value) {\n    const predefinedType = annotationsFieldsTypes[key];\n    let fieldType = typeof value;\n    if (NavigationBindingsUtilities_defined(predefinedType)) {\n        fieldType = predefinedType;\n    }\n    return {\n        'string': 'text',\n        'number': 'number',\n        'boolean': 'checkbox'\n    }[fieldType];\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst NavigationBindingUtilities = {\n    annotationsFieldsTypes,\n    getAssignedAxis,\n    getFieldType\n};\n/* harmony default export */ const NavigationBindingsUtilities = (NavigationBindingUtilities);\n\n;// ./code/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { getAssignedAxis: NavigationBindingsDefaults_getAssignedAxis } = NavigationBindingsUtilities;\n\nconst { isNumber: NavigationBindingsDefaults_isNumber, merge: NavigationBindingsDefaults_merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Constants\n *\n * */\n/**\n * @optionparent lang\n */\nconst lang = {\n    /**\n     * Configure the Popup strings in the chart. Requires the\n     * `annotations.js` or `annotations-advanced.src.js` module to be\n     * loaded.\n     * @since   7.0.0\n     * @product highcharts highstock\n     */\n    navigation: {\n        /**\n         * Translations for all field names used in popup.\n         *\n         * @product highcharts highstock\n         */\n        popup: {\n            simpleShapes: 'Simple shapes',\n            lines: 'Lines',\n            circle: 'Circle',\n            ellipse: 'Ellipse',\n            rectangle: 'Rectangle',\n            label: 'Label',\n            shapeOptions: 'Shape options',\n            typeOptions: 'Details',\n            fill: 'Fill',\n            format: 'Text',\n            strokeWidth: 'Line width',\n            stroke: 'Line color',\n            title: 'Title',\n            name: 'Name',\n            labelOptions: 'Label options',\n            labels: 'Labels',\n            backgroundColor: 'Background color',\n            backgroundColors: 'Background colors',\n            borderColor: 'Border color',\n            borderRadius: 'Border radius',\n            borderWidth: 'Border width',\n            style: 'Style',\n            padding: 'Padding',\n            fontSize: 'Font size',\n            color: 'Color',\n            height: 'Height',\n            shapes: 'Shape options'\n        }\n    }\n};\n/**\n * @optionparent navigation\n * @product      highcharts highstock\n */\nconst navigation = {\n    /**\n     * A CSS class name where all bindings will be attached to. Multiple\n     * charts on the same page should have separate class names to prevent\n     * duplicating events.\n     *\n     * Default value of versions < 7.0.4 `highcharts-bindings-wrapper`\n     *\n     * @since     7.0.0\n     * @type      {string}\n     */\n    bindingsClassName: 'highcharts-bindings-container',\n    /**\n     * Bindings definitions for custom HTML buttons. Each binding implements\n     * simple event-driven interface:\n     *\n     * - `className`: classname used to bind event to\n     *\n     * - `init`: initial event, fired on button click\n     *\n     * - `start`: fired on first click on a chart\n     *\n     * - `steps`: array of sequential events fired one after another on each\n     *   of users clicks\n     *\n     * - `end`: last event to be called after last step event\n     *\n     * @type         {Highcharts.Dictionary<Highcharts.NavigationBindingsOptionsObject>|*}\n     *\n     * @sample {highstock} stock/stocktools/stocktools-thresholds\n     *               Custom bindings\n     * @sample {highcharts} highcharts/annotations/bindings/\n     *               Simple binding\n     * @sample {highcharts} highcharts/annotations/bindings-custom-annotation/\n     *               Custom annotation binding\n     *\n     * @since        7.0.0\n     * @requires     modules/annotations\n     * @product      highcharts highstock\n     */\n    bindings: {\n        /**\n         * A circle annotation bindings. Includes `start` and one event in\n         * `steps` array.\n         *\n         * @type    {Highcharts.NavigationBindingsOptionsObject}\n         * @default {\"className\": \"highcharts-circle-annotation\", \"start\": function() {}, \"steps\": [function() {}], \"annotationsOptions\": {}}\n         */\n        circleAnnotation: {\n            /** @ignore-option */\n            className: 'highcharts-circle-annotation',\n            /** @ignore-option */\n            start: function (e) {\n                const coords = this.chart.pointer?.getCoordinates(e), coordsX = coords && NavigationBindingsDefaults_getAssignedAxis(coords.xAxis), coordsY = coords && NavigationBindingsDefaults_getAssignedAxis(coords.yAxis), navigation = this.chart.options.navigation;\n                // Exit if clicked out of axes area\n                if (!coordsX || !coordsY) {\n                    return;\n                }\n                return this.chart.addAnnotation(NavigationBindingsDefaults_merge({\n                    langKey: 'circle',\n                    type: 'basicAnnotation',\n                    shapes: [{\n                            type: 'circle',\n                            point: {\n                                x: coordsX.value,\n                                y: coordsY.value,\n                                xAxis: coordsX.axis.index,\n                                yAxis: coordsY.axis.index\n                            },\n                            r: 5\n                        }]\n                }, navigation.annotationsOptions, navigation.bindings.circleAnnotation\n                    .annotationsOptions));\n            },\n            /** @ignore-option */\n            steps: [\n                function (e, annotation) {\n                    const shapes = annotation.options.shapes, mockPointOpts = ((shapes && shapes[0] && shapes[0].point) ||\n                        {});\n                    let distance;\n                    if (NavigationBindingsDefaults_isNumber(mockPointOpts.xAxis) &&\n                        NavigationBindingsDefaults_isNumber(mockPointOpts.yAxis)) {\n                        const inverted = this.chart.inverted, x = this.chart.xAxis[mockPointOpts.xAxis]\n                            .toPixels(mockPointOpts.x), y = this.chart.yAxis[mockPointOpts.yAxis]\n                            .toPixels(mockPointOpts.y);\n                        distance = Math.max(Math.sqrt(Math.pow(inverted ? y - e.chartX : x - e.chartX, 2) +\n                            Math.pow(inverted ? x - e.chartY : y - e.chartY, 2)), 5);\n                    }\n                    annotation.update({\n                        shapes: [{\n                                r: distance\n                            }]\n                    });\n                }\n            ]\n        },\n        /**\n         * A ellipse annotation bindings. Includes `start` and two events in\n         * `steps` array. First updates the second point, responsible for a\n         * rx width, and second updates the ry width.\n         *\n         * @type    {Highcharts.NavigationBindingsOptionsObject}\n         * @default {\"className\": \"highcharts-ellipse-annotation\", \"start\": function() {}, \"steps\": [function() {}], \"annotationsOptions\": {}}\n         */\n        ellipseAnnotation: {\n            className: 'highcharts-ellipse-annotation',\n            start: function (e) {\n                const coords = this.chart.pointer?.getCoordinates(e), coordsX = coords && NavigationBindingsDefaults_getAssignedAxis(coords.xAxis), coordsY = coords && NavigationBindingsDefaults_getAssignedAxis(coords.yAxis), navigation = this.chart.options.navigation;\n                if (!coordsX || !coordsY) {\n                    return;\n                }\n                return this.chart.addAnnotation(NavigationBindingsDefaults_merge({\n                    langKey: 'ellipse',\n                    type: 'basicAnnotation',\n                    shapes: [\n                        {\n                            type: 'ellipse',\n                            xAxis: coordsX.axis.index,\n                            yAxis: coordsY.axis.index,\n                            points: [{\n                                    x: coordsX.value,\n                                    y: coordsY.value\n                                }, {\n                                    x: coordsX.value,\n                                    y: coordsY.value\n                                }],\n                            ry: 1\n                        }\n                    ]\n                }, navigation.annotationsOptions, navigation.bindings.ellipseAnnotation\n                    .annotationOptions));\n            },\n            steps: [\n                function (e, annotation) {\n                    const target = annotation.shapes[0], position = target.getAbsolutePosition(target.points[1]);\n                    target.translatePoint(e.chartX - position.x, e.chartY - position.y, 1);\n                    target.redraw(false);\n                },\n                function (e, annotation) {\n                    const target = annotation.shapes[0], position = target.getAbsolutePosition(target.points[0]), position2 = target.getAbsolutePosition(target.points[1]), newR = target.getDistanceFromLine(position, position2, e.chartX, e.chartY), yAxis = target.getYAxis(), newRY = Math.abs(yAxis.toValue(0) - yAxis.toValue(newR));\n                    target.setYRadius(newRY);\n                    target.redraw(false);\n                }\n            ]\n        },\n        /**\n         * A rectangle annotation bindings. Includes `start` and one event\n         * in `steps` array.\n         *\n         * @type    {Highcharts.NavigationBindingsOptionsObject}\n         * @default {\"className\": \"highcharts-rectangle-annotation\", \"start\": function() {}, \"steps\": [function() {}], \"annotationsOptions\": {}}\n         */\n        rectangleAnnotation: {\n            /** @ignore-option */\n            className: 'highcharts-rectangle-annotation',\n            /** @ignore-option */\n            start: function (e) {\n                const coords = this.chart.pointer?.getCoordinates(e), coordsX = coords && NavigationBindingsDefaults_getAssignedAxis(coords.xAxis), coordsY = coords && NavigationBindingsDefaults_getAssignedAxis(coords.yAxis);\n                // Exit if clicked out of axes area\n                if (!coordsX || !coordsY) {\n                    return;\n                }\n                const x = coordsX.value, y = coordsY.value, xAxis = coordsX.axis.index, yAxis = coordsY.axis.index, navigation = this.chart.options.navigation;\n                return this.chart.addAnnotation(NavigationBindingsDefaults_merge({\n                    langKey: 'rectangle',\n                    type: 'basicAnnotation',\n                    shapes: [{\n                            type: 'path',\n                            points: [\n                                { xAxis, yAxis, x, y },\n                                { xAxis, yAxis, x, y },\n                                { xAxis, yAxis, x, y },\n                                { xAxis, yAxis, x, y },\n                                { command: 'Z' }\n                            ]\n                        }]\n                }, navigation\n                    .annotationsOptions, navigation\n                    .bindings\n                    .rectangleAnnotation\n                    .annotationsOptions));\n            },\n            /** @ignore-option */\n            steps: [\n                function (e, annotation) {\n                    const shapes = annotation.options.shapes, points = ((shapes && shapes[0] && shapes[0].points) ||\n                        []), coords = this.chart.pointer?.getCoordinates(e), coordsX = coords && NavigationBindingsDefaults_getAssignedAxis(coords.xAxis), coordsY = coords && NavigationBindingsDefaults_getAssignedAxis(coords.yAxis);\n                    if (coordsX && coordsY) {\n                        const x = coordsX.value, y = coordsY.value;\n                        // Top right point\n                        points[1].x = x;\n                        // Bottom right point (cursor position)\n                        points[2].x = x;\n                        points[2].y = y;\n                        // Bottom left\n                        points[3].y = y;\n                        annotation.update({\n                            shapes: [{\n                                    points: points\n                                }]\n                        });\n                    }\n                }\n            ]\n        },\n        /**\n         * A label annotation bindings. Includes `start` event only.\n         *\n         * @type    {Highcharts.NavigationBindingsOptionsObject}\n         * @default {\"className\": \"highcharts-label-annotation\", \"start\": function() {}, \"steps\": [function() {}], \"annotationsOptions\": {}}\n         */\n        labelAnnotation: {\n            /** @ignore-option */\n            className: 'highcharts-label-annotation',\n            /** @ignore-option */\n            start: function (e) {\n                const coords = this.chart.pointer?.getCoordinates(e), coordsX = coords && NavigationBindingsDefaults_getAssignedAxis(coords.xAxis), coordsY = coords && NavigationBindingsDefaults_getAssignedAxis(coords.yAxis), navigation = this.chart.options.navigation;\n                // Exit if clicked out of axes area\n                if (!coordsX || !coordsY) {\n                    return;\n                }\n                return this.chart.addAnnotation(NavigationBindingsDefaults_merge({\n                    langKey: 'label',\n                    type: 'basicAnnotation',\n                    labelOptions: {\n                        format: '{y:.2f}',\n                        overflow: 'none',\n                        crop: true\n                    },\n                    labels: [{\n                            point: {\n                                xAxis: coordsX.axis.index,\n                                yAxis: coordsY.axis.index,\n                                x: coordsX.value,\n                                y: coordsY.value\n                            }\n                        }]\n                }, navigation\n                    .annotationsOptions, navigation\n                    .bindings\n                    .labelAnnotation\n                    .annotationsOptions));\n            }\n        }\n    },\n    /**\n     * Path where Highcharts will look for icons. Change this to use icons\n     * from a different server.\n     *\n     * @type      {string}\n     * @default   https://code.highcharts.com/12.1.2/gfx/stock-icons/\n     * @since     7.1.3\n     * @apioption navigation.iconsURL\n     */\n    /**\n     * A `showPopup` event. Fired when selecting for example an annotation.\n     *\n     * @type      {Function}\n     * @apioption navigation.events.showPopup\n     */\n    /**\n     * A `closePopup` event. Fired when Popup should be hidden, for example\n     * when clicking on an annotation again.\n     *\n     * @type      {Function}\n     * @apioption navigation.events.closePopup\n     */\n    /**\n     * Event fired on a button click.\n     *\n     * @type      {Function}\n     * @sample    highcharts/annotations/gui/\n     *            Change icon in a dropddown on event\n     * @sample    highcharts/annotations/gui-buttons/\n     *            Change button class on event\n     * @apioption navigation.events.selectButton\n     */\n    /**\n     * Event fired when button state should change, for example after\n     * adding an annotation.\n     *\n     * @type      {Function}\n     * @sample    highcharts/annotations/gui/\n     *            Change icon in a dropddown on event\n     * @sample    highcharts/annotations/gui-buttons/\n     *            Change button class on event\n     * @apioption navigation.events.deselectButton\n     */\n    /**\n     * Events to communicate between Stock Tools and custom GUI.\n     *\n     * @since        7.0.0\n     * @product      highcharts highstock\n     * @optionparent navigation.events\n     */\n    events: {},\n    /**\n     * Additional options to be merged into all annotations.\n     *\n     * @sample stock/stocktools/navigation-annotation-options\n     *         Set red color of all line annotations\n     *\n     * @type      {Highcharts.AnnotationsOptions}\n     * @extends   annotations\n     * @exclude   crookedLine, elliottWave, fibonacci, infinityLine,\n     *            measure, pitchfork, tunnel, verticalLine, basicAnnotation\n     * @requires     modules/annotations\n     * @apioption navigation.annotationsOptions\n     */\n    annotationsOptions: {\n        animation: {\n            defer: 0\n        }\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\nconst NavigationBindingDefaults = {\n    lang,\n    navigation\n};\n/* harmony default export */ const NavigationBindingsDefaults = (NavigationBindingDefaults);\n\n;// ./code/es-modules/Extensions/Annotations/NavigationBindings.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nconst { setOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { format: NavigationBindings_format } = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default());\n\nconst { composed: NavigationBindings_composed, doc: NavigationBindings_doc, win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\n\nconst { getAssignedAxis: NavigationBindings_getAssignedAxis, getFieldType: NavigationBindings_getFieldType } = NavigationBindingsUtilities;\n\nconst { addEvent: NavigationBindings_addEvent, attr, defined: NavigationBindings_defined, fireEvent: NavigationBindings_fireEvent, isArray: NavigationBindings_isArray, isFunction, isNumber: NavigationBindings_isNumber, isObject: NavigationBindings_isObject, merge: NavigationBindings_merge, objectEach: NavigationBindings_objectEach, pick: NavigationBindings_pick, pushUnique: NavigationBindings_pushUnique } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * IE 9-11 polyfill for Element.closest():\n * @private\n */\nfunction closestPolyfill(el, s) {\n    const ElementProto = win.Element.prototype, elementMatches = ElementProto.matches ||\n        ElementProto.msMatchesSelector ||\n        ElementProto.webkitMatchesSelector;\n    let ret = null;\n    if (ElementProto.closest) {\n        ret = ElementProto.closest.call(el, s);\n    }\n    else {\n        do {\n            if (elementMatches.call(el, s)) {\n                return el;\n            }\n            el = el.parentElement || el.parentNode;\n        } while (el !== null && el.nodeType === 1);\n    }\n    return ret;\n}\n/**\n * @private\n */\nfunction onAnnotationRemove() {\n    if (this.chart.navigationBindings) {\n        this.chart.navigationBindings.deselectAnnotation();\n    }\n}\n/**\n * @private\n */\nfunction onChartDestroy() {\n    if (this.navigationBindings) {\n        this.navigationBindings.destroy();\n    }\n}\n/**\n * @private\n */\nfunction onChartLoad() {\n    const options = this.options;\n    if (options && options.navigation && options.navigation.bindings) {\n        this.navigationBindings = new NavigationBindings(this, options.navigation);\n        this.navigationBindings.initEvents();\n        this.navigationBindings.initUpdate();\n    }\n}\n/**\n * @private\n */\nfunction onChartRender() {\n    const navigationBindings = this.navigationBindings, disabledClassName = 'highcharts-disabled-btn';\n    if (this && navigationBindings) {\n        // Check if the buttons should be enabled/disabled based on\n        // visible series.\n        let buttonsEnabled = false;\n        this.series.forEach((series) => {\n            if (!series.options.isInternal && series.visible) {\n                buttonsEnabled = true;\n            }\n        });\n        if (this.navigationBindings &&\n            this.navigationBindings.container &&\n            this.navigationBindings.container[0]) {\n            const container = this.navigationBindings.container[0];\n            NavigationBindings_objectEach(navigationBindings.boundClassNames, (value, key) => {\n                // Get the HTML element corresponding to the className taken\n                // from StockToolsBindings.\n                const buttonNode = container.querySelectorAll('.' + key);\n                if (buttonNode) {\n                    for (let i = 0; i < buttonNode.length; i++) {\n                        const button = buttonNode[i], cls = button.className;\n                        if (value.noDataState === 'normal') {\n                            // If button has noDataState: 'normal', and has\n                            // disabledClassName, remove this className.\n                            if (cls.indexOf(disabledClassName) !== -1) {\n                                button.classList.remove(disabledClassName);\n                            }\n                        }\n                        else if (!buttonsEnabled) {\n                            if (cls.indexOf(disabledClassName) === -1) {\n                                button.className += ' ' + disabledClassName;\n                            }\n                        }\n                        else {\n                            // Enable all buttons by deleting the className.\n                            if (cls.indexOf(disabledClassName) !== -1) {\n                                button.classList.remove(disabledClassName);\n                            }\n                        }\n                    }\n                }\n            });\n        }\n    }\n}\n/**\n * @private\n */\nfunction NavigationBindings_onNavigationBindingsClosePopup() {\n    this.deselectAnnotation();\n}\n/**\n * @private\n */\nfunction onNavigationBindingsDeselectButton() {\n    this.selectedButtonElement = null;\n}\n/**\n * Show edit-annotation form:\n * @private\n */\nfunction selectableAnnotation(annotationType) {\n    const originalClick = annotationType.prototype.defaultOptions.events &&\n        annotationType.prototype.defaultOptions.events.click;\n    /**\n     * Select and show popup\n     * @private\n     */\n    function selectAndShowPopup(eventArguments) {\n        const annotation = this, navigation = annotation.chart.navigationBindings, prevAnnotation = navigation.activeAnnotation;\n        if (originalClick) {\n            originalClick.call(annotation, eventArguments);\n        }\n        if (prevAnnotation !== annotation) {\n            // Select current:\n            navigation.deselectAnnotation();\n            navigation.activeAnnotation = annotation;\n            annotation.setControlPointsVisibility(true);\n            NavigationBindings_fireEvent(navigation, 'showPopup', {\n                annotation: annotation,\n                formType: 'annotation-toolbar',\n                options: navigation.annotationToFields(annotation),\n                onSubmit: function (data) {\n                    if (data.actionType === 'remove') {\n                        navigation.activeAnnotation = false;\n                        navigation.chart.removeAnnotation(annotation);\n                    }\n                    else {\n                        const config = {};\n                        navigation.fieldsToOptions(data.fields, config);\n                        navigation.deselectAnnotation();\n                        const typeOptions = config.typeOptions;\n                        if (annotation.options.type === 'measure') {\n                            // Manually disable crooshars according to\n                            // stroke width of the shape:\n                            typeOptions.crosshairY.enabled = (typeOptions.crosshairY\n                                .strokeWidth !== 0);\n                            typeOptions.crosshairX.enabled = (typeOptions.crosshairX\n                                .strokeWidth !== 0);\n                        }\n                        annotation.update(config);\n                    }\n                }\n            });\n        }\n        else {\n            // Deselect current:\n            NavigationBindings_fireEvent(navigation, 'closePopup');\n        }\n        // Let bubble event to chart.click:\n        eventArguments.activeAnnotation = true;\n    }\n    // #18276, show popup on touchend, but not on touchmove\n    let touchStartX, touchStartY;\n    /**\n     *\n     */\n    function saveCoords(e) {\n        touchStartX = e.touches[0].clientX;\n        touchStartY = e.touches[0].clientY;\n    }\n    /**\n     *\n     */\n    function checkForTouchmove(e) {\n        const hasMoved = touchStartX ? Math.sqrt(Math.pow(touchStartX - e.changedTouches[0].clientX, 2) +\n            Math.pow(touchStartY - e.changedTouches[0].clientY, 2)) >= 4 : false;\n        if (!hasMoved) {\n            selectAndShowPopup.call(this, e);\n        }\n    }\n    NavigationBindings_merge(true, annotationType.prototype.defaultOptions.events, {\n        click: selectAndShowPopup,\n        touchstart: saveCoords,\n        touchend: checkForTouchmove\n    });\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n */\nclass NavigationBindings {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    static compose(AnnotationClass, ChartClass) {\n        if (NavigationBindings_pushUnique(NavigationBindings_composed, 'NavigationBindings')) {\n            NavigationBindings_addEvent(AnnotationClass, 'remove', onAnnotationRemove);\n            // Basic shapes:\n            selectableAnnotation(AnnotationClass);\n            // Advanced annotations:\n            NavigationBindings_objectEach(AnnotationClass.types, (annotationType) => {\n                selectableAnnotation(annotationType);\n            });\n            NavigationBindings_addEvent(ChartClass, 'destroy', onChartDestroy);\n            NavigationBindings_addEvent(ChartClass, 'load', onChartLoad);\n            NavigationBindings_addEvent(ChartClass, 'render', onChartRender);\n            NavigationBindings_addEvent(NavigationBindings, 'closePopup', NavigationBindings_onNavigationBindingsClosePopup);\n            NavigationBindings_addEvent(NavigationBindings, 'deselectButton', onNavigationBindingsDeselectButton);\n            setOptions(NavigationBindingsDefaults);\n        }\n    }\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    constructor(chart, options) {\n        this.boundClassNames = void 0;\n        this.chart = chart;\n        this.options = options;\n        this.eventsToUnbind = [];\n        this.container =\n            this.chart.container.getElementsByClassName(this.options.bindingsClassName || '');\n        if (!this.container.length) {\n            this.container = NavigationBindings_doc.getElementsByClassName(this.options.bindingsClassName || '');\n        }\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    getCoords(e) {\n        const coords = this.chart.pointer?.getCoordinates(e);\n        return [\n            coords && NavigationBindings_getAssignedAxis(coords.xAxis),\n            coords && NavigationBindings_getAssignedAxis(coords.yAxis)\n        ];\n    }\n    /**\n     * Init all events connected to NavigationBindings.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#initEvents\n     */\n    initEvents() {\n        const navigation = this, chart = navigation.chart, bindingsContainer = navigation.container, options = navigation.options;\n        // Shorthand object for getting events for buttons:\n        navigation.boundClassNames = {};\n        NavigationBindings_objectEach((options.bindings || {}), (value) => {\n            navigation.boundClassNames[value.className] = value;\n        });\n        // Handle multiple containers with the same class names:\n        [].forEach.call(bindingsContainer, (subContainer) => {\n            navigation.eventsToUnbind.push(NavigationBindings_addEvent(subContainer, 'click', (event) => {\n                const bindings = navigation.getButtonEvents(subContainer, event);\n                if (bindings &&\n                    (!bindings.button.classList\n                        .contains('highcharts-disabled-btn'))) {\n                    navigation.bindingsButtonClick(bindings.button, bindings.events, event);\n                }\n            }));\n        });\n        NavigationBindings_objectEach((options.events || {}), (callback, eventName) => {\n            if (isFunction(callback)) {\n                navigation.eventsToUnbind.push(NavigationBindings_addEvent(navigation, eventName, callback, { passive: false }));\n            }\n        });\n        navigation.eventsToUnbind.push(NavigationBindings_addEvent(chart.container, 'click', function (e) {\n            if (!chart.cancelClick &&\n                chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n                    visiblePlotOnly: true\n                })) {\n                navigation.bindingsChartClick(this, e);\n            }\n        }));\n        navigation.eventsToUnbind.push(NavigationBindings_addEvent(chart.container, (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice ? 'touchmove' : 'mousemove', function (e) {\n            navigation.bindingsContainerMouseMove(this, e);\n        }, (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice ? { passive: false } : void 0));\n    }\n    /**\n     * Common chart.update() delegation, shared between bindings and exporting.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#initUpdate\n     */\n    initUpdate() {\n        const navigation = this;\n        Chart_ChartNavigationComposition\n            .compose(this.chart).navigation\n            .addUpdate((options) => {\n            navigation.update(options);\n        });\n    }\n    /**\n     * Hook for click on a button, method selects/unselects buttons,\n     * then calls `bindings.init` callback.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#bindingsButtonClick\n     *\n     * @param {Highcharts.HTMLDOMElement} [button]\n     *        Clicked button\n     *\n     * @param {Object} events\n     *        Events passed down from bindings (`init`, `start`, `step`, `end`)\n     *\n     * @param {Highcharts.PointerEventObject} clickEvent\n     *        Browser's click event\n     */\n    bindingsButtonClick(button, events, clickEvent) {\n        const navigation = this, chart = navigation.chart, svgContainer = chart.renderer.boxWrapper;\n        let shouldEventBeFired = true;\n        if (navigation.selectedButtonElement) {\n            if (navigation.selectedButtonElement.classList === button.classList) {\n                shouldEventBeFired = false;\n            }\n            NavigationBindings_fireEvent(navigation, 'deselectButton', { button: navigation.selectedButtonElement });\n            if (navigation.nextEvent) {\n                // Remove in-progress annotations adders:\n                if (navigation.currentUserDetails &&\n                    navigation.currentUserDetails.coll === 'annotations') {\n                    chart.removeAnnotation(navigation.currentUserDetails);\n                }\n                navigation.mouseMoveEvent = navigation.nextEvent = false;\n            }\n        }\n        if (shouldEventBeFired) {\n            navigation.selectedButton = events;\n            navigation.selectedButtonElement = button;\n            NavigationBindings_fireEvent(navigation, 'selectButton', { button: button });\n            // Call \"init\" event, for example to open modal window\n            if (events.init) {\n                events.init.call(navigation, button, clickEvent);\n            }\n            if (events.start || events.steps) {\n                chart.renderer.boxWrapper.addClass('highcharts-draw-mode');\n            }\n        }\n        else {\n            chart.stockTools && button.classList.remove('highcharts-active');\n            svgContainer.removeClass('highcharts-draw-mode');\n            navigation.nextEvent = false;\n            navigation.mouseMoveEvent = false;\n            navigation.selectedButton = null;\n        }\n    }\n    /**\n     * Hook for click on a chart, first click on a chart calls `start` event,\n     * then on all subsequent clicks iterate over `steps` array.\n     * When finished, calls `end` event.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#bindingsChartClick\n     *\n     * @param {Highcharts.Chart} chart\n     *        Chart that click was performed on.\n     *\n     * @param {Highcharts.PointerEventObject} clickEvent\n     *        Browser's click event.\n     */\n    bindingsChartClick(chart, clickEvent) {\n        chart = this.chart;\n        const navigation = this, activeAnnotation = navigation.activeAnnotation, selectedButton = navigation.selectedButton, svgContainer = chart.renderer.boxWrapper;\n        if (activeAnnotation) {\n            // Click outside popups, should close them and deselect the\n            // annotation\n            if (!activeAnnotation.cancelClick && // #15729\n                !clickEvent.activeAnnotation &&\n                // Element could be removed in the child action, e.g. button\n                clickEvent.target.parentNode &&\n                // TO DO: Polyfill for IE11?\n                !closestPolyfill(clickEvent.target, '.highcharts-popup')) {\n                NavigationBindings_fireEvent(navigation, 'closePopup');\n            }\n            else if (activeAnnotation.cancelClick) {\n                // Reset cancelClick after the other event handlers have run\n                setTimeout(() => {\n                    activeAnnotation.cancelClick = false;\n                }, 0);\n            }\n        }\n        if (!selectedButton || !selectedButton.start) {\n            return;\n        }\n        if (!navigation.nextEvent) {\n            // Call init method:\n            navigation.currentUserDetails = selectedButton.start.call(navigation, clickEvent);\n            // If steps exists (e.g. Annotations), bind them:\n            if (navigation.currentUserDetails && selectedButton.steps) {\n                navigation.stepIndex = 0;\n                navigation.steps = true;\n                navigation.mouseMoveEvent = navigation.nextEvent =\n                    selectedButton.steps[navigation.stepIndex];\n            }\n            else {\n                NavigationBindings_fireEvent(navigation, 'deselectButton', { button: navigation.selectedButtonElement });\n                svgContainer.removeClass('highcharts-draw-mode');\n                navigation.steps = false;\n                navigation.selectedButton = null;\n                // First click is also the last one:\n                if (selectedButton.end) {\n                    selectedButton.end.call(navigation, clickEvent, navigation.currentUserDetails);\n                }\n            }\n        }\n        else {\n            navigation.nextEvent(clickEvent, navigation.currentUserDetails);\n            if (navigation.steps) {\n                navigation.stepIndex++;\n                if (selectedButton.steps[navigation.stepIndex]) {\n                    // If we have more steps, bind them one by one:\n                    navigation.mouseMoveEvent = navigation.nextEvent = selectedButton.steps[navigation.stepIndex];\n                }\n                else {\n                    NavigationBindings_fireEvent(navigation, 'deselectButton', { button: navigation.selectedButtonElement });\n                    svgContainer.removeClass('highcharts-draw-mode');\n                    // That was the last step, call end():\n                    if (selectedButton.end) {\n                        selectedButton.end.call(navigation, clickEvent, navigation.currentUserDetails);\n                    }\n                    navigation.nextEvent = false;\n                    navigation.mouseMoveEvent = false;\n                    navigation.selectedButton = null;\n                }\n            }\n        }\n    }\n    /**\n     * Hook for mouse move on a chart's container. It calls current step.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#bindingsContainerMouseMove\n     *\n     * @param {Highcharts.HTMLDOMElement} container\n     *        Chart's container.\n     *\n     * @param {global.Event} moveEvent\n     *        Browser's move event.\n     */\n    bindingsContainerMouseMove(_container, moveEvent) {\n        if (this.mouseMoveEvent) {\n            this.mouseMoveEvent(moveEvent, this.currentUserDetails);\n        }\n    }\n    /**\n     * Translate fields (e.g. `params.period` or `marker.styles.color`) to\n     * Highcharts options object (e.g. `{ params: { period } }`).\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#fieldsToOptions<T>\n     *\n     * @param {Highcharts.Dictionary<string>} fields\n     *        Fields from popup form.\n     *\n     * @param {T} config\n     *        Default config to be modified.\n     *\n     * @return {T}\n     *         Modified config\n     */\n    fieldsToOptions(fields, config) {\n        NavigationBindings_objectEach(fields, (value, field) => {\n            const parsedValue = parseFloat(value), path = field.split('.'), pathLength = path.length - 1;\n            // If it's a number (not \"format\" options), parse it:\n            if (NavigationBindings_isNumber(parsedValue) &&\n                !value.match(/px|em/g) &&\n                !field.match(/format/g)) {\n                value = parsedValue;\n            }\n            // Remove values like 0\n            if (value !== 'undefined') {\n                let parent = config;\n                path.forEach((name, index) => {\n                    if (name !== '__proto__' && name !== 'constructor') {\n                        const nextName = NavigationBindings_pick(path[index + 1], '');\n                        if (pathLength === index) {\n                            // Last index, put value:\n                            parent[name] = value;\n                        }\n                        else if (!parent[name]) {\n                            // Create middle property:\n                            parent[name] = nextName.match(/\\d/g) ?\n                                [] :\n                                {};\n                            parent = parent[name];\n                        }\n                        else {\n                            // Jump into next property\n                            parent = parent[name];\n                        }\n                    }\n                });\n            }\n        });\n        return config;\n    }\n    /**\n     * Shorthand method to deselect an annotation.\n     *\n     * @function Highcharts.NavigationBindings#deselectAnnotation\n     */\n    deselectAnnotation() {\n        if (this.activeAnnotation) {\n            this.activeAnnotation.setControlPointsVisibility(false);\n            this.activeAnnotation = false;\n        }\n    }\n    /**\n     * Generates API config for popup in the same format as options for\n     * Annotation object.\n     *\n     * @function Highcharts.NavigationBindings#annotationToFields\n     *\n     * @param {Highcharts.Annotation} annotation\n     *        Annotations object\n     *\n     * @return {Highcharts.Dictionary<string>}\n     *         Annotation options to be displayed in popup box\n     */\n    annotationToFields(annotation) {\n        const options = annotation.options, editables = NavigationBindings.annotationsEditable, nestedEditables = editables.nestedOptions, type = NavigationBindings_pick(options.type, options.shapes && options.shapes[0] &&\n            options.shapes[0].type, options.labels && options.labels[0] &&\n            options.labels[0].type, 'label'), nonEditables = NavigationBindings.annotationsNonEditable[options.langKey] || [], visualOptions = {\n            langKey: options.langKey,\n            type: type\n        };\n        /**\n         * Nested options traversing. Method goes down to the options and copies\n         * allowed options (with values) to new object, which is last parameter:\n         * \"parent\".\n         *\n         * @private\n         *\n         * @param {*} option\n         *        Atomic type or object/array\n         *\n         * @param {string} key\n         *        Option name, for example \"visible\" or \"x\", \"y\"\n         *\n         * @param {Object} parentEditables\n         *        Editables from NavigationBindings.annotationsEditable\n         *\n         * @param {Object} parent\n         *        Where new options will be assigned\n         */\n        function traverse(option, key, parentEditables, parent, parentKey) {\n            let nextParent;\n            if (parentEditables &&\n                NavigationBindings_defined(option) &&\n                nonEditables.indexOf(key) === -1 &&\n                ((parentEditables.indexOf &&\n                    parentEditables.indexOf(key)) >= 0 ||\n                    parentEditables[key] || // Nested array\n                    parentEditables === true // Simple array\n                )) {\n                // Roots:\n                if (NavigationBindings_isArray(option)) {\n                    parent[key] = [];\n                    option.forEach((arrayOption, i) => {\n                        if (!NavigationBindings_isObject(arrayOption)) {\n                            // Simple arrays, e.g. [String, Number, Boolean]\n                            traverse(arrayOption, 0, nestedEditables[key], parent[key], key);\n                        }\n                        else {\n                            // Advanced arrays, e.g. [Object, Object]\n                            parent[key][i] = {};\n                            NavigationBindings_objectEach(arrayOption, (nestedOption, nestedKey) => {\n                                traverse(nestedOption, nestedKey, nestedEditables[key], parent[key][i], key);\n                            });\n                        }\n                    });\n                }\n                else if (NavigationBindings_isObject(option)) {\n                    nextParent = {};\n                    if (NavigationBindings_isArray(parent)) {\n                        parent.push(nextParent);\n                        nextParent[key] = {};\n                        nextParent = nextParent[key];\n                    }\n                    else {\n                        parent[key] = nextParent;\n                    }\n                    NavigationBindings_objectEach(option, (nestedOption, nestedKey) => {\n                        traverse(nestedOption, nestedKey, key === 0 ?\n                            parentEditables :\n                            nestedEditables[key], nextParent, key);\n                    });\n                }\n                else {\n                    // Leaf:\n                    if (key === 'format') {\n                        parent[key] = [\n                            NavigationBindings_format(option, annotation.labels[0].points[0]).toString(),\n                            'text'\n                        ];\n                    }\n                    else if (NavigationBindings_isArray(parent)) {\n                        parent.push([option, NavigationBindings_getFieldType(parentKey, option)]);\n                    }\n                    else {\n                        parent[key] = [option, NavigationBindings_getFieldType(key, option)];\n                    }\n                }\n            }\n        }\n        NavigationBindings_objectEach(options, (option, key) => {\n            if (key === 'typeOptions') {\n                visualOptions[key] = {};\n                NavigationBindings_objectEach(options[key], (typeOption, typeKey) => {\n                    traverse(typeOption, typeKey, nestedEditables, visualOptions[key], typeKey);\n                });\n            }\n            else {\n                traverse(option, key, editables[type], visualOptions, key);\n            }\n        });\n        return visualOptions;\n    }\n    /**\n     * Get all class names for all parents in the element. Iterates until finds\n     * main container.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#getClickedClassNames\n     *\n     * @param {Highcharts.HTMLDOMElement} container\n     * Container that event is bound to.\n     *\n     * @param {global.Event} event\n     * Browser's event.\n     *\n     * @return {Array<Array<string, Highcharts.HTMLDOMElement>>}\n     * Array of class names with corresponding elements\n     */\n    getClickedClassNames(container, event) {\n        let element = event.target, classNames = [], elemClassName;\n        while (element && element.tagName) {\n            elemClassName = attr(element, 'class');\n            if (elemClassName) {\n                classNames = classNames.concat(elemClassName\n                    .split(' ')\n                    // eslint-disable-next-line no-loop-func\n                    .map((name) => ([name, element])));\n            }\n            element = element.parentNode;\n            if (element === container) {\n                return classNames;\n            }\n        }\n        return classNames;\n    }\n    /**\n     * Get events bound to a button. It's a custom event delegation to find all\n     * events connected to the element.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#getButtonEvents\n     *\n     * @param {Highcharts.HTMLDOMElement} container\n     *        Container that event is bound to.\n     *\n     * @param {global.Event} event\n     *        Browser's event.\n     *\n     * @return {Object}\n     *         Object with events (init, start, steps, and end)\n     */\n    getButtonEvents(container, event) {\n        const navigation = this, classNames = this.getClickedClassNames(container, event);\n        let bindings;\n        classNames.forEach((className) => {\n            if (navigation.boundClassNames[className[0]] && !bindings) {\n                bindings = {\n                    events: navigation.boundClassNames[className[0]],\n                    button: className[1]\n                };\n            }\n        });\n        return bindings;\n    }\n    /**\n     * Bindings are just events, so the whole update process is simply\n     * removing old events and adding new ones.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#update\n     */\n    update(options) {\n        this.options = NavigationBindings_merge(true, this.options, options);\n        this.removeEvents();\n        this.initEvents();\n    }\n    /**\n     * Remove all events created in the navigation.\n     *\n     * @private\n     * @function Highcharts.NavigationBindings#removeEvents\n     */\n    removeEvents() {\n        this.eventsToUnbind.forEach((unbinder) => unbinder());\n    }\n    /**\n     * @private\n     * @function Highcharts.NavigationBindings#destroy\n     */\n    destroy() {\n        this.removeEvents();\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\n// Define which options from annotations should show up in edit box:\nNavigationBindings.annotationsEditable = {\n    // `typeOptions` are always available\n    // Nested and shared options:\n    nestedOptions: {\n        labelOptions: ['style', 'format', 'backgroundColor'],\n        labels: ['style'],\n        label: ['style'],\n        style: ['fontSize', 'color'],\n        background: ['fill', 'strokeWidth', 'stroke'],\n        innerBackground: ['fill', 'strokeWidth', 'stroke'],\n        outerBackground: ['fill', 'strokeWidth', 'stroke'],\n        shapeOptions: ['fill', 'strokeWidth', 'stroke'],\n        shapes: ['fill', 'strokeWidth', 'stroke'],\n        line: ['strokeWidth', 'stroke'],\n        backgroundColors: [true],\n        connector: ['fill', 'strokeWidth', 'stroke'],\n        crosshairX: ['strokeWidth', 'stroke'],\n        crosshairY: ['strokeWidth', 'stroke']\n    },\n    // Simple shapes:\n    circle: ['shapes'],\n    ellipse: ['shapes'],\n    verticalLine: [],\n    label: ['labelOptions'],\n    // Measure\n    measure: ['background', 'crosshairY', 'crosshairX'],\n    // Others:\n    fibonacci: [],\n    tunnel: ['background', 'line', 'height'],\n    pitchfork: ['innerBackground', 'outerBackground'],\n    rect: ['shapes'],\n    // Crooked lines, elliots, arrows etc:\n    crookedLine: [],\n    basicAnnotation: ['shapes', 'labelOptions']\n};\n// Define non editable fields per annotation, for example Rectangle inherits\n// options from Measure, but crosshairs are not available\nNavigationBindings.annotationsNonEditable = {\n    rectangle: ['crosshairX', 'crosshairY', 'labelOptions'],\n    ellipse: ['labelOptions'],\n    circle: ['labelOptions']\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Annotations_NavigationBindings = (NavigationBindings);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * A config object for navigation bindings in annotations.\n *\n * @interface Highcharts.NavigationBindingsOptionsObject\n */ /**\n* ClassName of the element for a binding.\n* @name Highcharts.NavigationBindingsOptionsObject#className\n* @type {string|undefined}\n*/ /**\n* Last event to be fired after last step event.\n* @name Highcharts.NavigationBindingsOptionsObject#end\n* @type {Function|undefined}\n*/ /**\n* Initial event, fired on a button click.\n* @name Highcharts.NavigationBindingsOptionsObject#init\n* @type {Function|undefined}\n*/ /**\n* Event fired on first click on a chart.\n* @name Highcharts.NavigationBindingsOptionsObject#start\n* @type {Function|undefined}\n*/ /**\n* Last event to be fired after last step event. Array of step events to be\n* called sequentially after each user click.\n* @name Highcharts.NavigationBindingsOptionsObject#steps\n* @type {Array<Function>|undefined}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es-modules/masters/modules/annotations.src.js\n\n\n\n\n\nconst G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.Annotation = G.Annotation || Annotations_Annotation;\nG.NavigationBindings = G.NavigationBindings || Annotations_NavigationBindings;\nG.Annotation.compose(G.Chart, G.NavigationBindings, G.Pointer, G.SVGRenderer);\n/* harmony default export */ const annotations_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","define","amd","amd1","window","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__660__","AnnotationChart","ControlTarget","DropdownProperties","ChartNavigationComposition","__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__","annotations_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","addEvent","erase","find","fireEvent","pick","wrap","chartAddAnnotation","userOptions","redraw","annotation","initAnnotation","options","annotations","push","graphic","attr","opacity","chartCallback","chart","plotBoxClip","renderer","clipRect","plotBox","controlPointsGroup","g","zIndex","clip","add","forEach","annotationOptions","i","some","drawAnnotations","destroy","event","csvColumnHeaderFormatter","exporting","csv","columnHeaderFormatter","multiLevelHeaders","dataRows","xValues","annotationHeader","lang","exportData","startRowLength","length","annotationSeparator","itemDelimiter","joinAnnotations","join","labelOptions","includeInDataExport","labels","label","text","annotationText","points","annotationX","x","xAxisIndex","series","xAxis","index","wasAdded","newRow","Array","row","maxRowLen","Math","max","newRows","header","s","columnTitle","topLevelColumnTitle","chartDrawAnnotations","animate","animationConfig","chartRemoveAnnotation","idOrAnnotation","coll","id","onChartAfterInit","wrapPointerOnContainerMouseDown","proceed","hasDraggedAnnotation","apply","slice","arguments","compose","AnnotationClass","ChartClass","PointerClass","chartProto","addAnnotation","pointerProto","callbacks","collectionsWithInit","collectionsWithUpdate","removeAnnotation","types","type","Annotations_AnnotationChart","defined","doc","isTouchDevice","EventEmitter_addEvent","EventEmitter_fireEvent","objectEach","EventEmitter_pick","removeEvent","Annotations_EventEmitter","addEvents","emitter","addMouseDownEvent","element","e","onMouseDown","passive","useHTML","events","eventHandler","cancelClick","pointer","normalize","target","nonDOMEvents","indexOf","div","draggable","onDrag","styledMode","cssPointer","cursor","y","xy","css","isUpdating","removeDocEvents","hcEvents","mouseMoveToRadians","cx","cy","prevDy","prevChartY","prevDx","prevChartX","dy","chartY","dx","chartX","temp","inverted","atan2","mouseMoveToScale","sx","sy","mouseMoveToTranslation","isInsidePlot","plotLeft","plotTop","visiblePlotOnly","translation","translate","shapes","shape","preventDefault","button","firesTouchEvents","sourceCapabilities","removeDrag","hasDragged","removeMouseUp","onMouseUp","merge","ControlPoint_pick","Annotations_ControlPoint","constructor","animation","positioner","render","symbol","width","height","style","setVisibility","visible","update","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","seriesProto","MockPoint_defined","MockPoint_fireEvent","MockPoint","fromPoint","point","yAxis","pointToPixels","paneCoordinates","plotX","plotY","mock","plotWidth","plotHeight","getPlotBox","translateX","translateY","pointToOptions","applyOptions","getOptions","command","setAxis","refresh","hasDynamicOptions","len","toPixels","isInside","refreshOptions","toValue","rotate","radians","cos","sin","tx","ty","scale","xOrY","axisName","axisOptions","toAnchor","anchor","_cx","_cy","addControlPoints","controlPoints","controlPointsOptions","controlPointOptions","box","tooltip","getAnchor","relativePosition","absolutePosition","destroyControlTarget","controlPoint","getPointsOptions","splat","linkPoints","pointsOptions","pointOptions","isObject","isString","pointConfig","redrawControlPoints","renderControlPoints","transform","transformation","p1","p2","_point","transformPoint","Annotations_MockPoint","translatePoint","ControlTargetClass","controlProto","Annotations_ControlTarget","Controllable_merge","Controllable","itemType","collection","init","_args","attrsFromOptions","mappedKey","map","attrsMap","attrs","tracker","_parentGroup","className","addClass","setControlPointsVisibility","shouldBeDrawn","translateShape","translateSecondPoint","shapeOptions","annotationIndex","chartOptions","newOptions","parentGroup","Constructor","Controllables_Controllable","defaultMarkers","ControllablePath_defaultMarkers","arrow","tagName","attributes","refY","refX","markerWidth","markerHeight","children","ControllablePath_addEvent","ControllablePath_defined","extend","ControllablePath_merge","uniqueKey","markerEndSetter","createMarkerSetter","markerStartSetter","TRACKER_FILL","svg","markerType","value","onChartAfterGetContainer","defs","svgRendererAddMarker","markerOptions","stroke","color","fill","child","ast","orient","marker","ControllablePath","SVGRendererClass","svgRendererProto","addMarker","toD","dOption","showPath","position","pointIndex","crispLine","strokeWidth","parent","path","snap","setMarkers","action","placed","item","itemOptions","def","predefinedMarker","markerId","getAttribute","dashStyle","ControllableRect_merge","ControllableRect","rect","Boolean","Controllables_ControllablePath","ControllableCircle_merge","ControllableCircle","r","circle","setRadius","ControllableEllipse_merge","ControllableEllipse_defined","ControllableEllipse","createElement","getDistanceFromLine","point1","point2","x0","y0","abs","sqrt","getAttrs","position2","x1","y1","x2","y2","rx","angle","atan","PI","ry","getRY","getYAxis","yAxisIndex","getAbsolutePosition","rotation","rotationOriginX","rotationOriginY","setYRadius","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","format","ControllableLabel_extend","getAlignFactor","isNumber","ControllableLabel_pick","symbolConnector","w","h","anchorX","anchorY","yOffset","lateral","ControllableLabel","alignedPosition","alignOptions","round","align","verticalAlign","symbols","connector","justifiedOptions","alignAttr","off","padding","bBox","getBBox","chartAnnotations","getContrast","shapesWithoutBackground","backgroundColor","shadow","labelrank","String","formatter","anchorAbsolutePosition","anchorRelativePosition","itemPosition","alignTo","itemPosRelativeX","itemPosRelativeY","showItem","distance","getPosition","getPlayingField","negative","ttBelow","overflow","crop","borderColor","borderWidth","borderRadius","ControllableImage","image","src","Controllables_ControllableLabel","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default","BaseForm_addEvent","Shared_BaseForm","parentDiv","iconsURL","container","createPopupContainer","closeButton","addCloseButton","popup","match","eventName","closeButtonEvents","bind","document","code","closePopup","showPopup","toolbarClass","popupDiv","popupCloseButton","innerHTML","emptyHTML","classList","remove","removeAttribute","appendChild","display","PopupAnnotations_doc","isFirefox","PopupAnnotations_createElement","isArray","PopupAnnotations_objectEach","PopupAnnotations_pick","stableSort","addFormFields","parentNode","storage","isRoot","parentFullName","titleName","addInput","option","reverse","genInput","createTextNode","splice","PopupIndicators_doc","seriesTypes","PopupIndicators_addEvent","PopupIndicators_createElement","PopupIndicators_defined","PopupIndicators_isArray","PopupIndicators_isObject","PopupIndicators_objectEach","PopupIndicators_stableSort","dropdownParameters","addColsContainer","lhsCol","rhsCol","PopupIndicators_addFormFields","seriesType","rhsColWrapper","fields","params","getNameType","indicatorFullName","name","listAllSeries","linkedParent","volumeSeriesID","addParamInputs","addIndicatorList","listType","filter","selectIndicator","indicatorType","isEdit","setAttribute","querySelectorAll","plotOptions","filteredSeriesArray","filterSeriesArray","filterSeries","b","seriesAName","toLowerCase","seriesBName","indicatorList","seriesSet","btn","textContent","setElementHTML","noFilterMatch","fieldName","selectBox","addSelection","addSelectionOptions","addSearchBox","clearFilterText","clearFilter","inputWrapper","handleInputChange","inputText","input","htmlFor","labelClassName","optionName","optionParamList","split","labelText","selectName","parameterName","selectedOption","currentSeries","seriesOptions","seriesName","parameterOption","filteredSeries","indicatorAliases","navigation","regex","RegExp","replace","alias","is","nameBase","toUpperCase","PopupTabs_doc","PopupTabs_addEvent","PopupTabs_createElement","addContentItem","addMenuItem","tabName","disableTab","menuItem","deselectAll","tabs","tabsContent","selectTab","tab","allTabs","switchTabs","Popup_doc","Popup_addEvent","Popup_createElement","Popup_extend","Popup_fireEvent","Popup_pick","Popup","activeAnnotation","navigationBindings","unbind","setTimeout","inputAttributes","inputName","selectedButtonElement","addButton","fieldsDiv","callback","getFields","inputList","selectList","linkedTo","volumeTo","fieldsOutput","actionType","param","seriesId","select","parameter","showForm","indicators","addForm","addToolbar","offsetHeight","isInit","langKey","bottomRow","saveButton","top","editButton","removeButton","_options","buttonParentDiv","tabsContainers","getAmount","counter","serie","indicatorsCount","firstTab","composed","PopupComposition_addEvent","pushUnique","PopupComposition_wrap","onNavigationBindingsClosePopup","onNavigationBindingsShowPopup","config","stockTools","gui","formType","onSubmit","wrapPointerOnContainerMouserDown","inClass","Popup_PopupComposition","NagivationBindingsClass","getDeferredAnimation","destroyObjectProperties","Annotation_erase","Annotation_fireEvent","Annotation_merge","Annotation_pick","getLabelsAndShapesOptions","baseOptions","mergedOptions","someBaseOptions","newOptionsValue","basicOptions","Annotation","NavigationBindingsClass","defaultOptions","labelsAndShapes","addClipPaths","setClipAxes","clipXAxis","clipYAxis","getClipBox","addLabels","labelsOptions","initLabel","addShapes","initShape","destroyItem","labelCollectors","labelCollector","left","initProperties","setOptions","_annotationOrChart","_userOptions","animOptions","setLabelCollector","shapesMap","redrawItems","redrawItem","renderItem","adjustVisibility","hasVisiblePoints","visibility","show","hide","items","shapesGroup","labelsGroup","renderItems","xAxes","yAxes","linkedAxes","concat","reduce","axes","labelOrShape","setItemControlPointsVisibility","allowOverlap","userOptionsIndex","ControlPoint","fontSize","fontWeight","Additions","updates","addUpdate","updateFn","Chart_ChartNavigationComposition","NavigationBindingsUtilities_defined","NavigationBindingsUtilities_isNumber","NavigationBindingsUtilities_pick","annotationsFieldsTypes","title","NavigationBindingsUtilities","getAssignedAxis","coords","coord","extremes","axis","getExtremes","axisMin","min","axisMax","minPointOffset","isInternal","getFieldType","predefinedType","fieldType","NavigationBindingsDefaults_getAssignedAxis","NavigationBindingsDefaults_isNumber","NavigationBindingsDefaults_merge","NavigationBindingsDefaults","simpleShapes","lines","ellipse","rectangle","typeOptions","backgroundColors","bindingsClassName","bindings","circleAnnotation","start","getCoordinates","coordsX","coordsY","annotationsOptions","steps","mockPointOpts","pow","ellipseAnnotation","newR","newRY","rectangleAnnotation","labelAnnotation","defer","NavigationBindings_format","NavigationBindings_composed","NavigationBindings_doc","win","NavigationBindings_getAssignedAxis","NavigationBindings_getFieldType","NavigationBindings_addEvent","NavigationBindings_defined","NavigationBindings_fireEvent","NavigationBindings_isArray","isFunction","NavigationBindings_isNumber","NavigationBindings_isObject","NavigationBindings_merge","NavigationBindings_objectEach","NavigationBindings_pick","NavigationBindings_pushUnique","onAnnotationRemove","deselectAnnotation","onChartDestroy","onChartLoad","NavigationBindings","initEvents","initUpdate","onChartRender","disabledClassName","buttonsEnabled","boundClassNames","buttonNode","cls","noDataState","NavigationBindings_onNavigationBindingsClosePopup","onNavigationBindingsDeselectButton","selectableAnnotation","annotationType","touchStartX","touchStartY","originalClick","click","selectAndShowPopup","eventArguments","prevAnnotation","annotationToFields","data","fieldsToOptions","crosshairY","enabled","crosshairX","touchstart","touches","clientX","clientY","touchend","changedTouches","eventsToUnbind","getElementsByClassName","getCoords","bindingsContainer","subContainer","getButtonEvents","contains","bindingsButtonClick","bindingsChartClick","bindingsContainerMouseMove","clickEvent","svgContainer","boxWrapper","shouldEventBeFired","nextEvent","currentUserDetails","mouseMoveEvent","selectedButton","removeClass","closestPolyfill","el","ElementProto","Element","elementMatches","matches","msMatchesSelector","webkitMatchesSelector","ret","closest","parentElement","nodeType","stepIndex","end","_container","moveEvent","field","parsedValue","parseFloat","pathLength","nextName","editables","annotationsEditable","nestedEditables","nestedOptions","nonEditables","annotationsNonEditable","visualOptions","traverse","parentEditables","parentKey","nextParent","arrayOption","nestedOption","nestedKey","toString","typeOption","typeKey","getClickedClassNames","classNames","elemClassName","removeEvents","unbinder","background","innerBackground","outerBackground","line","verticalLine","measure","fibonacci","tunnel","pitchfork","crookedLine","basicAnnotation","G","Chart","Pointer","SVGRenderer"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox