Hacked By AnonymousFox

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

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/accessibility\n * @requires highcharts\n *\n * Accessibility module\n *\n * (c) 2010-2024 Highsoft AS\n * Author: Oystein Moseng\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"), require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"AST\"], require(\"highcharts\")[\"Legend\"], require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"RendererRegistry\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"Series\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/accessibility\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Templating\"], [\"highcharts/highcharts\",\"AST\"], [\"highcharts/highcharts\",\"Legend\"], [\"highcharts/highcharts\",\"Axis\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"SeriesRegistry\"], [\"highcharts/highcharts\",\"RendererRegistry\"], [\"highcharts/highcharts\",\"SVGRenderer\"], [\"highcharts/highcharts\",\"Point\"], [\"highcharts/highcharts\",\"Series\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/accessibility\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"AST\"], require(\"highcharts\")[\"Legend\"], require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"RendererRegistry\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"Series\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"AST\"], root[\"Highcharts\"][\"Legend\"], root[\"Highcharts\"][\"Axis\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"RendererRegistry\"], root[\"Highcharts\"][\"SVGRenderer\"], root[\"Highcharts\"][\"Point\"], root[\"Highcharts\"][\"Series\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__660__, __WEBPACK_EXTERNAL_MODULE__632__, __WEBPACK_EXTERNAL_MODULE__532__, __WEBPACK_EXTERNAL_MODULE__239__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__608__, __WEBPACK_EXTERNAL_MODULE__540__, __WEBPACK_EXTERNAL_MODULE__260__, __WEBPACK_EXTERNAL_MODULE__820__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 660:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__660__;\n\n/***/ }),\n\n/***/ 532:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__532__;\n\n/***/ }),\n\n/***/ 239:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__239__;\n\n/***/ }),\n\n/***/ 632:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__632__;\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 608:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__608__;\n\n/***/ }),\n\n/***/ 540:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__540__;\n\n/***/ }),\n\n/***/ 820:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__820__;\n\n/***/ }),\n\n/***/ 512:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 984:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\n\n/***/ }),\n\n/***/ 944:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ accessibility_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es5/es-modules/Accessibility/Utils/HTMLUtilities.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Utility functions for accessibility module.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc, win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\nvar css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css;\n/* *\n *\n *  Constants\n *\n * */\nvar simulatedEventTarget = win.EventTarget && new win.EventTarget() || 'none';\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n * @param {Highcharts.HTMLDOMElement} el\n * @param {string} className\n * @return {void}\n */\nfunction addClass(el, className) {\n    if (el.classList) {\n        el.classList.add(className);\n    }\n    else if (el.className.indexOf(className) < 0) {\n        // Note: Dumb check for class name exists, should be fine for practical\n        // use cases, but will return false positives if the element has a class\n        // that contains the className.\n        el.className += ' ' + className;\n    }\n}\n/**\n * @private\n * @param {Highcharts.HTMLDOMElement} el\n * @param {string} className\n * @return {void}\n */\nfunction removeClass(el, className) {\n    if (el.classList) {\n        el.classList.remove(className);\n    }\n    else {\n        // Note: Dumb logic that will break if the element has a class name that\n        // consists of className plus something else.\n        el.className = el.className.replace(new RegExp(className, 'g'), '');\n    }\n}\n/**\n * Utility function to clone a mouse event for re-dispatching.\n * @private\n */\nfunction cloneMouseEvent(e) {\n    if (typeof win.MouseEvent === 'function') {\n        return new win.MouseEvent(e.type, e);\n    }\n    // No MouseEvent support, try using initMouseEvent\n    if (doc.createEvent) {\n        var evt = doc.createEvent('MouseEvent');\n        if (evt.initMouseEvent) {\n            evt.initMouseEvent(e.type, e.bubbles, // #10561, #12161\n            e.cancelable, e.view || win, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n            return evt;\n        }\n    }\n    return getFakeMouseEvent(e.type);\n}\n/**\n * Utility function to clone a touch event for re-dispatching.\n * @private\n */\nfunction cloneTouchEvent(e) {\n    var touchListToTouchArray = function (l) {\n            var touchArray = [];\n        for (var i = 0; i < l.length; ++i) {\n            var item = l.item(i);\n            if (item) {\n                touchArray.push(item);\n            }\n        }\n        return touchArray;\n    };\n    if (typeof win.TouchEvent === 'function') {\n        var newEvent = new win.TouchEvent(e.type, {\n                touches: touchListToTouchArray(e.touches),\n                targetTouches: touchListToTouchArray(e.targetTouches),\n                changedTouches: touchListToTouchArray(e.changedTouches),\n                ctrlKey: e.ctrlKey,\n                shiftKey: e.shiftKey,\n                altKey: e.altKey,\n                metaKey: e.metaKey,\n                bubbles: e.bubbles,\n                cancelable: e.cancelable,\n                composed: e.composed,\n                detail: e.detail,\n                view: e.view\n            });\n        if (e.defaultPrevented) {\n            newEvent.preventDefault();\n        }\n        return newEvent;\n    }\n    var fakeEvt = cloneMouseEvent(e);\n    fakeEvt.touches = e.touches;\n    fakeEvt.changedTouches = e.changedTouches;\n    fakeEvt.targetTouches = e.targetTouches;\n    return fakeEvt;\n}\n/**\n * @private\n */\nfunction escapeStringForHTML(str) {\n    return str\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#x27;')\n        .replace(/\\//g, '&#x2F;');\n}\n/**\n * Get an element by ID\n * @private\n */\nfunction getElement(id) {\n    return doc.getElementById(id);\n}\n/**\n * Get a fake mouse event of a given type. If relatedTarget is not given,\n * it will point to simulatedEventTarget, as an indicator that the event\n * is fake.\n * @private\n */\nfunction getFakeMouseEvent(type, position, relatedTarget) {\n    var pos = position || {\n            x: 0,\n            y: 0\n        };\n    if (typeof win.MouseEvent === 'function') {\n        return new win.MouseEvent(type, {\n            bubbles: true,\n            cancelable: true,\n            composed: true,\n            button: 0,\n            buttons: 1,\n            relatedTarget: relatedTarget || simulatedEventTarget,\n            view: win,\n            detail: type === 'click' ? 1 : 0,\n            screenX: pos.x,\n            screenY: pos.y,\n            clientX: pos.x,\n            clientY: pos.y\n        });\n    }\n    // No MouseEvent support, try using initMouseEvent\n    if (doc.createEvent) {\n        var evt = doc.createEvent('MouseEvent');\n        if (evt.initMouseEvent) {\n            evt.initMouseEvent(type, true, // Bubble\n            true, // Cancel\n            win, // View\n            type === 'click' ? 1 : 0, // Detail\n            // Coords\n            pos.x, pos.y, pos.x, pos.y, \n            // Pressed keys\n            false, false, false, false, 0, // Button\n            null // Related target\n            );\n            return evt;\n        }\n    }\n    return { type: type };\n}\n/**\n * Get an appropriate heading level for an element. Corresponds to the\n * heading level below the previous heading in the DOM.\n *\n * Note: Only detects previous headings in the DOM that are siblings,\n * ancestors, or previous siblings of ancestors. Headings that are nested below\n * siblings of ancestors (cousins et.al) are not picked up. This is because it\n * is ambiguous whether or not the nesting is for layout purposes or indicates a\n * separate section.\n *\n * @private\n * @param {Highcharts.HTMLDOMElement} [element]\n * @return {string} The heading tag name (h1, h2 etc).\n * If no nearest heading is found, \"p\" is returned.\n */\nfunction getHeadingTagNameForElement(element) {\n    var getIncreasedHeadingLevel = function (tagName) {\n            var headingLevel = parseInt(tagName.slice(1), 10),\n        newLevel = Math.min(6,\n        headingLevel + 1);\n        return 'h' + newLevel;\n    };\n    var isHeading = function (tagName) { return /^H[1-6]$/i.test(tagName); };\n    var getPreviousSiblingsHeading = function (el) {\n            var sibling = el;\n        while (sibling = sibling.previousSibling) { // eslint-disable-line\n            var tagName = sibling.tagName || '';\n            if (isHeading(tagName)) {\n                return tagName;\n            }\n        }\n        return '';\n    };\n    var getHeadingRecursive = function (el) {\n            var prevSiblingsHeading = getPreviousSiblingsHeading(el);\n        if (prevSiblingsHeading) {\n            return getIncreasedHeadingLevel(prevSiblingsHeading);\n        }\n        // No previous siblings are headings, try parent node\n        var parent = el.parentElement;\n        if (!parent) {\n            return 'h6';\n        }\n        var parentTagName = parent.tagName;\n        if (isHeading(parentTagName)) {\n            return getIncreasedHeadingLevel(parentTagName);\n        }\n        return getHeadingRecursive(parent);\n    };\n    return getHeadingRecursive(element);\n}\n/**\n * Remove an element from the DOM.\n * @private\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} [element]\n * @return {void}\n */\nfunction removeElement(element) {\n    if (element && element.parentNode) {\n        element.parentNode.removeChild(element);\n    }\n}\n/**\n * Remove all child nodes from an element.\n * @private\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} [element]\n * @return {void}\n */\nfunction removeChildNodes(element) {\n    while (element.lastChild) {\n        element.removeChild(element.lastChild);\n    }\n}\n/**\n * Utility function. Reverses child nodes of a DOM element.\n * @private\n */\nfunction reverseChildNodes(node) {\n    var i = node.childNodes.length;\n    while (i--) {\n        node.appendChild(node.childNodes[i]);\n    }\n}\n/**\n * Used for aria-label attributes, painting on a canvas will fail if the\n * text contains tags.\n * @private\n */\nfunction stripHTMLTagsFromString(str, isForExport) {\n    if (isForExport === void 0) { isForExport = false; }\n    return (typeof str === 'string') ?\n        (isForExport ?\n            str.replace(/<\\/?[^>]+(>|$)/g, '') :\n            str.replace(/<\\/?(?!\\s)[^>]+(>|$)/g, '')) : str;\n}\n/**\n * Utility function for hiding an element visually, but still keeping it\n * available to screen reader users.\n * @private\n */\nfunction visuallyHideElement(element) {\n    css(element, {\n        position: 'absolute',\n        width: '1px',\n        height: '1px',\n        overflow: 'hidden',\n        whiteSpace: 'nowrap',\n        clip: 'rect(1px, 1px, 1px, 1px)',\n        marginTop: '-3px',\n        '-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=1)',\n        filter: 'alpha(opacity=1)',\n        opacity: 0.01\n    });\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar HTMLUtilities = {\n    addClass: addClass,\n    cloneMouseEvent: cloneMouseEvent,\n    cloneTouchEvent: cloneTouchEvent,\n    escapeStringForHTML: escapeStringForHTML,\n    getElement: getElement,\n    getFakeMouseEvent: getFakeMouseEvent,\n    getHeadingTagNameForElement: getHeadingTagNameForElement,\n    removeChildNodes: removeChildNodes,\n    removeClass: removeClass,\n    removeElement: removeElement,\n    reverseChildNodes: reverseChildNodes,\n    simulatedEventTarget: simulatedEventTarget,\n    stripHTMLTagsFromString: stripHTMLTagsFromString,\n    visuallyHideElement: visuallyHideElement\n};\n/* harmony default export */ var Utils_HTMLUtilities = (HTMLUtilities);\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/es5/es-modules/Accessibility/A11yI18n.js\n/* *\n *\n *  Accessibility module - internationalization support\n *\n *  (c) 2010-2024 Highsoft AS\n *  Author: Øystein Moseng\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar getNestedProperty = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getNestedProperty, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Composition\n *\n * */\nvar A11yI18nComposition;\n(function (A11yI18nComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(ChartClass) {\n        var chartProto = ChartClass.prototype;\n        if (!chartProto.langFormat) {\n            chartProto.langFormat = langFormat;\n        }\n    }\n    A11yI18nComposition.compose = compose;\n    /**\n     * I18n utility function.  Format a single array or plural statement in a\n     * format string.  If the statement is not an array or plural statement,\n     * returns the statement within brackets.  Invalid array statements return\n     * an empty string.\n     *\n     * @private\n     * @function formatExtendedStatement\n     * @param {string} statement\n     * @param {Highcharts.Dictionary<*>} ctx\n     * Context to apply to the format string.\n     */\n    function formatExtendedStatement(statement, ctx) {\n        var eachStart = statement.indexOf('#each('), pluralStart = statement.indexOf('#plural('), indexStart = statement.indexOf('['), indexEnd = statement.indexOf(']');\n        var arr,\n            result;\n        // Dealing with an each-function?\n        if (eachStart > -1) {\n            var eachEnd = statement.slice(eachStart).indexOf(')') + eachStart, preEach = statement.substring(0, eachStart), postEach = statement.substring(eachEnd + 1), eachStatement = statement.substring(eachStart + 6, eachEnd), eachArguments = eachStatement.split(',');\n            var lenArg = Number(eachArguments[1]),\n                len = void 0;\n            result = '';\n            arr = getNestedProperty(eachArguments[0], ctx);\n            if (arr) {\n                lenArg = isNaN(lenArg) ? arr.length : lenArg;\n                len = lenArg < 0 ?\n                    arr.length + lenArg :\n                    Math.min(lenArg, arr.length); // Overshoot\n                // Run through the array for the specified length\n                for (var i = 0; i < len; ++i) {\n                    result += preEach + arr[i] + postEach;\n                }\n            }\n            return result.length ? result : '';\n        }\n        // Dealing with a plural-function?\n        if (pluralStart > -1) {\n            var pluralEnd = (statement.slice(pluralStart).indexOf(')') + pluralStart), pluralStatement = statement.substring(pluralStart + 8, pluralEnd), pluralArguments = pluralStatement.split(','), num = Number(getNestedProperty(pluralArguments[0], ctx));\n            switch (num) {\n                case 0:\n                    result = pick(pluralArguments[4], pluralArguments[1]);\n                    break;\n                case 1:\n                    result = pick(pluralArguments[2], pluralArguments[1]);\n                    break;\n                case 2:\n                    result = pick(pluralArguments[3], pluralArguments[1]);\n                    break;\n                default:\n                    result = pluralArguments[1];\n            }\n            return result ? stringTrim(result) : '';\n        }\n        // Array index\n        if (indexStart > -1) {\n            var arrayName = statement.substring(0,\n                indexStart),\n                ix = Number(statement.substring(indexStart + 1,\n                indexEnd));\n            var val = void 0;\n            arr = getNestedProperty(arrayName, ctx);\n            if (!isNaN(ix) && arr) {\n                if (ix < 0) {\n                    val = arr[arr.length + ix];\n                    // Handle negative overshoot\n                    if (typeof val === 'undefined') {\n                        val = arr[0];\n                    }\n                }\n                else {\n                    val = arr[ix];\n                    // Handle positive overshoot\n                    if (typeof val === 'undefined') {\n                        val = arr[arr.length - 1];\n                    }\n                }\n            }\n            return typeof val !== 'undefined' ? val : '';\n        }\n        // Standard substitution, delegate to format or similar\n        return '{' + statement + '}';\n    }\n    /* eslint-disable max-len */\n    /**\n     * i18n formatting function.  Extends Highcharts.format() functionality by\n     * also handling arrays and plural conditionals.  Arrays can be indexed as\n     * follows:\n     *\n     * - Format: 'This is the first index: {myArray[0]}. The last: {myArray[-1]}.'\n     *\n     * - Context: { myArray: [0, 1, 2, 3, 4, 5] }\n     *\n     * - Result: 'This is the first index: 0. The last: 5.'\n     *\n     *\n     * They can also be iterated using the #each() function.  This will repeat\n     * the contents of the bracket expression for each element.  Example:\n     *\n     * - Format: 'List contains: {#each(myArray)cm }'\n     *\n     * - Context: { myArray: [0, 1, 2] }\n     *\n     * - Result: 'List contains: 0cm 1cm 2cm '\n     *\n     *\n     * The #each() function optionally takes a length parameter.  If positive,\n     * this parameter specifies the max number of elements to iterate through.\n     * If negative, the function will subtract the number from the length of the\n     * array.  Use this to stop iterating before the array ends.  Example:\n     *\n     * - Format: 'List contains: {#each(myArray, -1), }and {myArray[-1]}.'\n     *\n     * - Context: { myArray: [0, 1, 2, 3] }\n     *\n     * - Result: 'List contains: 0, 1, 2, and 3.'\n     *\n     *\n     * Use the #plural() function to pick a string depending on whether or not a\n     * context object is 1.  Arguments are #plural(obj, plural, singular).\n     * Example:\n     *\n     * - Format: 'Has {numPoints} {#plural(numPoints, points, point}.'\n     *\n     * - Context: { numPoints: 5 }\n     *\n     * - Result: 'Has 5 points.'\n     *\n     *\n     * Optionally there are additional parameters for dual and none:\n     * #plural(obj, plural, singular, dual, none).  Example:\n     *\n     * - Format: 'Has {#plural(numPoints, many points, one point, two points,\n     *   none}.'\n     *\n     * - Context: { numPoints: 2 }\n     *\n     * - Result: 'Has two points.'\n     *\n     *\n     * The dual or none parameters will take precedence if they are supplied.\n     *\n     * @requires modules/accessibility\n     *\n     * @function Highcharts.i18nFormat\n     *\n     * @param {string} formatString\n     * The string to format.\n     *\n     * @param {Highcharts.Dictionary<*>} context\n     * Context to apply to the format string.\n     *\n     * @param {Highcharts.Chart} chart\n     * A `Chart` instance with a time object and numberFormatter, passed on to\n     * format().\n     *\n     * @deprecated\n     *\n     * @return {string}\n     * The formatted string.\n     */\n    function i18nFormat(formatString, context, chart) {\n        var getFirstBracketStatement = function (sourceStr, offset) {\n                var str = sourceStr.slice(offset || 0), startBracket = str.indexOf('{'), endBracket = str.indexOf('}');\n            if (startBracket > -1 && endBracket > startBracket) {\n                return {\n                    statement: str.substring(startBracket + 1, endBracket),\n                    begin: offset + startBracket + 1,\n                    end: offset + endBracket\n                };\n            }\n        }, tokens = [];\n        var bracketRes,\n            constRes,\n            cursor = 0;\n        // Tokenize format string into bracket statements and constants\n        do {\n            bracketRes = getFirstBracketStatement(formatString, cursor);\n            constRes = formatString.substring(cursor, bracketRes && bracketRes.begin - 1);\n            // If we have constant content before this bracket statement, add it\n            if (constRes.length) {\n                tokens.push({\n                    value: constRes,\n                    type: 'constant'\n                });\n            }\n            // Add the bracket statement\n            if (bracketRes) {\n                tokens.push({\n                    value: bracketRes.statement,\n                    type: 'statement'\n                });\n            }\n            cursor = bracketRes ? bracketRes.end + 1 : cursor + 1;\n        } while (bracketRes);\n        // Perform the formatting.  The formatArrayStatement function returns\n        // the statement in brackets if it is not an array statement, which\n        // means it gets picked up by format below.\n        tokens.forEach(function (token) {\n            if (token.type === 'statement') {\n                token.value = formatExtendedStatement(token.value, context);\n            }\n        });\n        // Join string back together and pass to format to pick up non-array\n        // statements.\n        return format(tokens.reduce(function (acc, cur) { return acc + cur.value; }, ''), context, chart);\n    }\n    A11yI18nComposition.i18nFormat = i18nFormat;\n    /* eslint-enable max-len */\n    /**\n     * Apply context to a format string from lang options of the chart.\n     *\n     * @requires modules/accessibility\n     *\n     * @function Highcharts.Chart#langFormat\n     *\n     * @param {string} langKey\n     * Key (using dot notation) into lang option structure.\n     *\n     * @param {Highcharts.Dictionary<*>} context\n     * Context to apply to the format string.\n     *\n     * @return {string}\n     * The formatted string.\n     */\n    function langFormat(langKey, context) {\n        var keys = langKey.split('.');\n        var formatString = this.options.lang,\n            i = 0;\n        for (; i < keys.length; ++i) {\n            formatString = formatString && formatString[keys[i]];\n        }\n        return typeof formatString === 'string' ?\n            i18nFormat(formatString, context, this) : '';\n    }\n    /**\n     * @private\n     * @function stringTrim\n     *\n     * @param {string} str\n     * The input string\n     *\n     * @return {string}\n     * The trimmed string\n     */\n    function stringTrim(str) {\n        return str.trim && str.trim() || str.replace(/^\\s+|\\s+$/g, '');\n    }\n})(A11yI18nComposition || (A11yI18nComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var A11yI18n = (A11yI18nComposition);\n\n;// ./code/es5/es-modules/Accessibility/Utils/ChartUtilities.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Utils for dealing with charts.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ChartUtilities_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar stripHTMLTags = Utils_HTMLUtilities.stripHTMLTagsFromString;\n\nvar defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * Fire an event on an element that is either wrapped by Highcharts,\n * or a DOM element.\n * @private\n */\nfunction fireEventOnWrappedOrUnwrappedElement(el, eventObject) {\n    var type = eventObject.type;\n    var hcEvents = el.hcEvents;\n    if (!!ChartUtilities_doc.createEvent &&\n        (el.dispatchEvent || el.fireEvent)) {\n        if (el.dispatchEvent) {\n            el.dispatchEvent(eventObject);\n        }\n        else {\n            el.fireEvent(type, eventObject);\n        }\n    }\n    else if (hcEvents && hcEvents[type]) {\n        fireEvent(el, type, eventObject);\n    }\n    else if (el.element) {\n        fireEventOnWrappedOrUnwrappedElement(el.element, eventObject);\n    }\n}\n/**\n * @private\n */\nfunction getChartTitle(chart) {\n    return stripHTMLTags(chart.options.title.text ||\n        chart.langFormat('accessibility.defaultChartTitle', { chart: chart }), chart.renderer.forExport);\n}\n/**\n * Return string with the axis name/title.\n * @private\n */\nfunction getAxisDescription(axis) {\n    var _a,\n        _b;\n    return axis && (((_a = axis.options.accessibility) === null || _a === void 0 ? void 0 : _a.description) ||\n        ((_b = axis.axisTitle) === null || _b === void 0 ? void 0 : _b.textStr) ||\n        axis.options.id ||\n        axis.categories && 'categories' ||\n        axis.dateTime && 'Time' ||\n        'values');\n}\n/**\n * Return string with text description of the axis range.\n * @private\n * @param {Highcharts.Axis} axis\n * The axis to get range desc of.\n * @return {string}\n * A string with the range description for the axis.\n */\nfunction getAxisRangeDescription(axis) {\n    var axisOptions = axis.options || {};\n    // Handle overridden range description\n    if (axisOptions.accessibility &&\n        typeof axisOptions.accessibility.rangeDescription !== 'undefined') {\n        return axisOptions.accessibility.rangeDescription;\n    }\n    // Handle category axes\n    if (axis.categories) {\n        return getCategoryAxisRangeDesc(axis);\n    }\n    // Use time range, not from-to?\n    if (axis.dateTime && (axis.min === 0 || axis.dataMin === 0)) {\n        return getAxisTimeLengthDesc(axis);\n    }\n    // Just use from and to.\n    // We have the range and the unit to use, find the desc format\n    return getAxisFromToDescription(axis);\n}\n/**\n * Describe the range of a category axis.\n * @private\n */\nfunction getCategoryAxisRangeDesc(axis) {\n    var chart = axis.chart;\n    if (axis.dataMax && axis.dataMin) {\n        return chart.langFormat('accessibility.axis.rangeCategories', {\n            chart: chart,\n            axis: axis,\n            numCategories: axis.dataMax - axis.dataMin + 1\n        });\n    }\n    return '';\n}\n/**\n * Describe the length of the time window shown on an axis.\n * @private\n */\nfunction getAxisTimeLengthDesc(axis) {\n    var chart = axis.chart,\n        range = {},\n        min = axis.dataMin || axis.min || 0,\n        max = axis.dataMax || axis.max || 0;\n    var rangeUnit = 'Seconds';\n    range.Seconds = (max - min) / 1000;\n    range.Minutes = range.Seconds / 60;\n    range.Hours = range.Minutes / 60;\n    range.Days = range.Hours / 24;\n    ['Minutes', 'Hours', 'Days'].forEach(function (unit) {\n        if (range[unit] > 2) {\n            rangeUnit = unit;\n        }\n    });\n    var rangeValue = range[rangeUnit].toFixed(rangeUnit !== 'Seconds' &&\n            rangeUnit !== 'Minutes' ? 1 : 0 // Use decimals for days/hours\n        );\n    // We have the range and the unit to use, find the desc format\n    return chart.langFormat('accessibility.axis.timeRange' + rangeUnit, {\n        chart: chart,\n        axis: axis,\n        range: rangeValue.replace('.0', '')\n    });\n}\n/**\n * Describe an axis from-to range.\n * @private\n */\nfunction getAxisFromToDescription(axis) {\n    var chart = axis.chart,\n        options = chart.options,\n        dateRangeFormat = (options &&\n            options.accessibility &&\n            options.accessibility.screenReaderSection.axisRangeDateFormat ||\n            ''),\n        extremes = {\n            min: axis.dataMin || axis.min || 0,\n            max: axis.dataMax || axis.max || 0\n        },\n        format = function (key) {\n            return axis.dateTime ?\n                chart.time.dateFormat(dateRangeFormat,\n        extremes[key]) :\n                extremes[key].toString();\n    };\n    return chart.langFormat('accessibility.axis.rangeFromTo', {\n        chart: chart,\n        axis: axis,\n        rangeFrom: format('min'),\n        rangeTo: format('max')\n    });\n}\n/**\n * Get the DOM element for the first point in the series.\n * @private\n * @param {Highcharts.Series} series\n * The series to get element for.\n * @return {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement|undefined}\n * The DOM element for the point.\n */\nfunction getSeriesFirstPointElement(series) {\n    if (series.points && series.points.length) {\n        var firstPointWithGraphic = find(series.points,\n            function (p) { return !!p.graphic; });\n        return (firstPointWithGraphic &&\n            firstPointWithGraphic.graphic &&\n            firstPointWithGraphic.graphic.element);\n    }\n}\n/**\n * Get the DOM element for the series that we put accessibility info on.\n * @private\n * @param {Highcharts.Series} series\n * The series to get element for.\n * @return {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement|undefined}\n * The DOM element for the series\n */\nfunction getSeriesA11yElement(series) {\n    var firstPointEl = getSeriesFirstPointElement(series);\n    return (firstPointEl &&\n        firstPointEl.parentNode || series.graph &&\n        series.graph.element || series.group &&\n        series.group.element); // Could be tracker series depending on series type\n}\n/**\n * Remove aria-hidden from element. Also unhides parents of the element, and\n * hides siblings that are not explicitly unhidden.\n * @private\n */\nfunction unhideChartElementFromAT(chart, element) {\n    element.setAttribute('aria-hidden', false);\n    if (element === chart.renderTo ||\n        !element.parentNode ||\n        element.parentNode === ChartUtilities_doc.body // #16126: Full screen printing\n    ) {\n        return;\n    }\n    // Hide siblings unless their hidden state is already explicitly set\n    Array.prototype.forEach.call(element.parentNode.childNodes, function (node) {\n        if (!node.hasAttribute('aria-hidden')) {\n            node.setAttribute('aria-hidden', true);\n        }\n    });\n    // Repeat for parent\n    unhideChartElementFromAT(chart, element.parentNode);\n}\n/**\n * Hide series from screen readers.\n * @private\n */\nfunction hideSeriesFromAT(series) {\n    var seriesEl = getSeriesA11yElement(series);\n    if (seriesEl) {\n        seriesEl.setAttribute('aria-hidden', true);\n    }\n}\n/**\n * Get series objects by series name.\n * @private\n */\nfunction getSeriesFromName(chart, name) {\n    if (!name) {\n        return chart.series;\n    }\n    return (chart.series || []).filter(function (s) {\n        return s.name === name;\n    });\n}\n/**\n * Get point in a series from x/y values.\n * @private\n */\nfunction getPointFromXY(series, x, y) {\n    var i = series.length,\n        res;\n    while (i--) {\n        res = find(series[i].points || [], function (p) {\n            return p.x === x && p.y === y;\n        });\n        if (res) {\n            return res;\n        }\n    }\n}\n/**\n * Get relative position of point on an x/y axis from 0 to 1.\n * @private\n */\nfunction getRelativePointAxisPosition(axis, point) {\n    if (!defined(axis.dataMin) || !defined(axis.dataMax)) {\n        return 0;\n    }\n    var axisStart = axis.toPixels(axis.dataMin),\n        axisEnd = axis.toPixels(axis.dataMax), \n        // We have to use pixel position because of axis breaks, log axis etc.\n        positionProp = axis.coll === 'xAxis' ? 'x' : 'y',\n        pointPos = axis.toPixels(point[positionProp] || 0);\n    return (pointPos - axisStart) / (axisEnd - axisStart);\n}\n/**\n * Get relative position of point on an x/y axis from 0 to 1.\n * @private\n */\nfunction scrollAxisToPoint(point) {\n    var xAxis = point.series.xAxis,\n        yAxis = point.series.yAxis,\n        axis = (xAxis && xAxis.scrollbar ? xAxis : yAxis),\n        scrollbar = (axis && axis.scrollbar);\n    if (scrollbar && defined(scrollbar.to) && defined(scrollbar.from)) {\n        var range = scrollbar.to - scrollbar.from;\n        var pos = getRelativePointAxisPosition(axis,\n            point);\n        scrollbar.updatePosition(pos - range / 2, pos + range / 2);\n        fireEvent(scrollbar, 'changed', {\n            from: scrollbar.from,\n            to: scrollbar.to,\n            trigger: 'scrollbar',\n            DOMEvent: null\n        });\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar ChartUtilities = {\n    fireEventOnWrappedOrUnwrappedElement: fireEventOnWrappedOrUnwrappedElement,\n    getChartTitle: getChartTitle,\n    getAxisDescription: getAxisDescription,\n    getAxisRangeDescription: getAxisRangeDescription,\n    getPointFromXY: getPointFromXY,\n    getSeriesFirstPointElement: getSeriesFirstPointElement,\n    getSeriesFromName: getSeriesFromName,\n    getSeriesA11yElement: getSeriesA11yElement,\n    unhideChartElementFromAT: unhideChartElementFromAT,\n    hideSeriesFromAT: hideSeriesFromAT,\n    scrollAxisToPoint: scrollAxisToPoint\n};\n/* harmony default export */ var Utils_ChartUtilities = (ChartUtilities);\n\n;// ./code/es5/es-modules/Accessibility/Utils/DOMElementProvider.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Class that can keep track of elements added to DOM and clean them up on\n *  destroy.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar DOMElementProvider_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar DOMElementProvider_removeElement = Utils_HTMLUtilities.removeElement;\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n */\nvar DOMElementProvider = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function DOMElementProvider() {\n        this.elements = [];\n    }\n    /**\n     * Create an element and keep track of it for later removal.\n     * Same args as document.createElement\n     * @private\n     */\n    DOMElementProvider.prototype.createElement = function () {\n        var el = DOMElementProvider_doc.createElement.apply(DOMElementProvider_doc,\n            arguments);\n        this.elements.push(el);\n        return el;\n    };\n    /**\n     * Destroy created element, removing it from the DOM.\n     * @private\n     */\n    DOMElementProvider.prototype.removeElement = function (element) {\n        DOMElementProvider_removeElement(element);\n        this.elements.splice(this.elements.indexOf(element), 1);\n    };\n    /**\n     * Destroy all created elements, removing them from the DOM.\n     * @private\n     */\n    DOMElementProvider.prototype.destroyCreatedElements = function () {\n        this.elements.forEach(function (element) {\n            DOMElementProvider_removeElement(element);\n        });\n        this.elements = [];\n    };\n    return DOMElementProvider;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Utils_DOMElementProvider = (DOMElementProvider);\n\n;// ./code/es5/es-modules/Accessibility/Utils/EventProvider.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Class that can keep track of events added, and clean them up on destroy.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent;\n/**\n * @private\n */\nvar EventProvider = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function EventProvider() {\n        this.eventRemovers = [];\n    }\n    /**\n     * Add an event to an element and keep track of it for later removal.\n     * Same args as Highcharts.addEvent.\n     * @private\n     */\n    EventProvider.prototype.addEvent = function () {\n        var remover = addEvent.apply((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()),\n            arguments);\n        this.eventRemovers.push({\n            element: arguments[0], // HTML element\n            remover: remover\n        });\n        return remover;\n    };\n    /**\n     * Remove added event.\n     * @private\n     */\n    EventProvider.prototype.removeEvent = function (event) {\n        var pos = this.eventRemovers.map(function (e) { return e.remover; }).indexOf(event);\n        this.eventRemovers[pos].remover();\n        this.eventRemovers.splice(pos, 1);\n    };\n    /**\n     * Remove all added events.\n     * @private\n     */\n    EventProvider.prototype.removeAddedEvents = function () {\n        this.eventRemovers.map(function (e) { return e.remover; })\n            .forEach(function (remover) { return remover(); });\n        this.eventRemovers = [];\n    };\n    return EventProvider;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Utils_EventProvider = (EventProvider);\n\n;// ./code/es5/es-modules/Accessibility/AccessibilityComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component class definition\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar AccessibilityComponent_fireEventOnWrappedOrUnwrappedElement = Utils_ChartUtilities.fireEventOnWrappedOrUnwrappedElement;\n\n\n\nvar AccessibilityComponent_getFakeMouseEvent = Utils_HTMLUtilities.getFakeMouseEvent;\n/* *\n *\n *  Class\n *\n * */\n/**\n * The AccessibilityComponent base class, representing a part of the chart that\n * has accessibility logic connected to it. This class can be inherited from to\n * create a custom accessibility component for a chart.\n *\n * Components should take care to destroy added elements and unregister event\n * handlers on destroy. This is handled automatically if using `this.addEvent`\n * and `this.createElement`.\n *\n * @sample highcharts/accessibility/custom-component\n *         Custom accessibility component\n *\n * @requires modules/accessibility\n * @class\n * @name Highcharts.AccessibilityComponent\n */\nvar AccessibilityComponent = /** @class */ (function () {\n    function AccessibilityComponent() {\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Called when accessibility is disabled or chart is destroyed.\n     *\n     * @function Highcharts.AccessibilityComponent#destroy\n     */\n    AccessibilityComponent.prototype.destroy = function () { };\n    /**\n     * Get keyboard navigation handler for this component.\n     *\n     * @function Highcharts.AccessibilityComponent#getKeyboardNavigation\n     * @return   {Highcharts.KeyboardNavigationHandler|Array<Highcharts.KeyboardNavigationHandler>}\n     *           The keyboard navigation handler(s) for this component.\n     */\n    AccessibilityComponent.prototype.getKeyboardNavigation = function () {\n        return [];\n    };\n    /**\n     * Called on component initialization.\n     *\n     * @function Highcharts.AccessibilityComponent#init\n     */\n    AccessibilityComponent.prototype.init = function () { };\n    /**\n     * Called on every chart render.\n     *\n     * @function Highcharts.AccessibilityComponent#onChartRender\n     */\n    AccessibilityComponent.prototype.onChartRender = function () { };\n    /**\n     * Called on updates to the chart, including options changes.\n     * Note that this is also called on first render of chart.\n     *\n     * @function Highcharts.AccessibilityComponent#onChartUpdate\n     */\n    AccessibilityComponent.prototype.onChartUpdate = function () { };\n    /**\n     * Initialize the class\n     * @private\n     * @param {Highcharts.Chart} chart The chart object\n     * @param {Highcharts.ProxyProvider} proxyProvider The proxy provider of the accessibility module\n     */\n    AccessibilityComponent.prototype.initBase = function (chart, proxyProvider) {\n        this.chart = chart;\n        this.eventProvider = new Utils_EventProvider();\n        this.domElementProvider = new Utils_DOMElementProvider();\n        this.proxyProvider = proxyProvider;\n        // Key code enum for common keys\n        this.keyCodes = {\n            left: 37,\n            right: 39,\n            up: 38,\n            down: 40,\n            enter: 13,\n            space: 32,\n            esc: 27,\n            tab: 9,\n            pageUp: 33,\n            pageDown: 34,\n            end: 35,\n            home: 36\n        };\n    };\n    /**\n     * Add an event to an element and keep track of it for later removal.\n     * See EventProvider for details.\n     * @private\n     */\n    AccessibilityComponent.prototype.addEvent = function (el, type, fn, options) {\n        return this.eventProvider.addEvent(el, type, fn, options);\n    };\n    /**\n     * Create an element and keep track of it for later removal.\n     * See DOMElementProvider for details.\n     * @private\n     */\n    AccessibilityComponent.prototype.createElement = function (tagName, options) {\n        return this.domElementProvider.createElement(tagName, options);\n    };\n    /**\n     * Fire a fake click event on an element. It is useful to have this on\n     * AccessibilityComponent for users of custom components.\n     * @private\n     */\n    AccessibilityComponent.prototype.fakeClickEvent = function (el) {\n        var fakeEvent = AccessibilityComponent_getFakeMouseEvent('click');\n        AccessibilityComponent_fireEventOnWrappedOrUnwrappedElement(el, fakeEvent);\n    };\n    /**\n     * Remove traces of the component.\n     * @private\n     */\n    AccessibilityComponent.prototype.destroyBase = function () {\n        this.domElementProvider.destroyCreatedElements();\n        this.eventProvider.removeAddedEvents();\n    };\n    return AccessibilityComponent;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Accessibility_AccessibilityComponent = (AccessibilityComponent);\n\n;// ./code/es5/es-modules/Accessibility/KeyboardNavigationHandler.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Keyboard navigation handler base class definition\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar KeyboardNavigationHandler_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Define a keyboard navigation handler for use with a\n * Highcharts.AccessibilityComponent instance. This functions as an abstraction\n * layer for keyboard navigation, and defines a map of keyCodes to handler\n * functions.\n *\n * @requires modules/accessibility\n *\n * @sample highcharts/accessibility/custom-component\n *         Custom accessibility component\n *\n * @class\n * @name Highcharts.KeyboardNavigationHandler\n *\n * @param {Highcharts.Chart} chart\n * The chart this module should act on.\n *\n * @param {Highcharts.KeyboardNavigationHandlerOptionsObject} options\n * Options for the keyboard navigation handler.\n */\nvar KeyboardNavigationHandler = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function KeyboardNavigationHandler(chart, options) {\n        this.chart = chart;\n        this.keyCodeMap = options.keyCodeMap || [];\n        this.validate = options.validate;\n        this.init = options.init;\n        this.terminate = options.terminate;\n        // Response enum\n        this.response = {\n            success: 1, // Keycode was handled\n            prev: 2, // Move to prev module\n            next: 3, // Move to next module\n            noHandler: 4, // There is no handler for this keycode\n            fail: 5 // Handler failed\n        };\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Find handler function(s) for key code in the keyCodeMap and run it.\n     *\n     * @function KeyboardNavigationHandler#run\n     * @param {global.KeyboardEvent} e\n     * @return {number} Returns a response code indicating whether the run was\n     *      a success/fail/unhandled, or if we should move to next/prev module.\n     */\n    KeyboardNavigationHandler.prototype.run = function (e) {\n        var keyCode = e.which || e.keyCode;\n        var response = this.response.noHandler;\n        var handlerCodeSet = KeyboardNavigationHandler_find(this.keyCodeMap,\n            function (codeSet) {\n                return codeSet[0].indexOf(keyCode) > -1;\n        });\n        if (handlerCodeSet) {\n            response = handlerCodeSet[1].call(this, keyCode, e);\n        }\n        else if (keyCode === 9) {\n            // Default tab handler, move to next/prev module\n            response = this.response[e.shiftKey ? 'prev' : 'next'];\n        }\n        return response;\n    };\n    return KeyboardNavigationHandler;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Accessibility_KeyboardNavigationHandler = (KeyboardNavigationHandler);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * Options for the keyboard navigation handler.\n *\n * @interface Highcharts.KeyboardNavigationHandlerOptionsObject\n */ /**\n* An array containing pairs of an array of keycodes, mapped to a handler\n* function. When the keycode is received, the handler is called with the\n* keycode as parameter.\n* @name Highcharts.KeyboardNavigationHandlerOptionsObject#keyCodeMap\n* @type {Array<Array<Array<number>, Function>>}\n*/ /**\n* Function to run on initialization of module.\n* @name Highcharts.KeyboardNavigationHandlerOptionsObject#init\n* @type {Function}\n*/ /**\n* Function to run before moving to next/prev module. Receives moving direction\n* as parameter: +1 for next, -1 for previous.\n* @name Highcharts.KeyboardNavigationHandlerOptionsObject#terminate\n* @type {Function|undefined}\n*/ /**\n* Function to run to validate module. Should return false if module should not\n* run, true otherwise. Receives chart as parameter.\n* @name Highcharts.KeyboardNavigationHandlerOptionsObject#validate\n* @type {Function|undefined}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Accessibility/Components/ContainerComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for chart container.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar ContainerComponent_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT, ContainerComponent_getChartTitle = Utils_ChartUtilities.getChartTitle;\n\nvar ContainerComponent_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar ContainerComponent_stripHTMLTags = Utils_HTMLUtilities.stripHTMLTagsFromString;\n/**\n * The ContainerComponent class\n *\n * @private\n * @class\n * @name Highcharts.ContainerComponent\n */\nvar ContainerComponent = /** @class */ (function (_super) {\n    __extends(ContainerComponent, _super);\n    function ContainerComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * Called on first render/updates to the chart, including options changes.\n     */\n    ContainerComponent.prototype.onChartUpdate = function () {\n        this.handleSVGTitleElement();\n        this.setSVGContainerLabel();\n        this.setGraphicContainerAttrs();\n        this.setRenderToAttrs();\n        this.makeCreditsAccessible();\n    };\n    /**\n     * @private\n     */\n    ContainerComponent.prototype.handleSVGTitleElement = function () {\n        var chart = this.chart, titleId = 'highcharts-title-' + chart.index, titleContents = ContainerComponent_stripHTMLTags(chart.langFormat('accessibility.svgContainerTitle', {\n                chartTitle: ContainerComponent_getChartTitle(chart)\n            }));\n        if (titleContents.length) {\n            var titleElement = this.svgTitleElement =\n                    this.svgTitleElement || ContainerComponent_doc.createElementNS('http://www.w3.org/2000/svg', 'title');\n            titleElement.textContent = titleContents;\n            titleElement.id = titleId;\n            chart.renderTo.insertBefore(titleElement, chart.renderTo.firstChild);\n        }\n    };\n    /**\n     * @private\n     */\n    ContainerComponent.prototype.setSVGContainerLabel = function () {\n        var chart = this.chart,\n            svgContainerLabel = chart.langFormat('accessibility.svgContainerLabel', {\n                chartTitle: ContainerComponent_getChartTitle(chart)\n            });\n        if (chart.renderer.box && svgContainerLabel.length) {\n            chart.renderer.box.setAttribute('aria-label', svgContainerLabel);\n        }\n    };\n    /**\n     * @private\n     */\n    ContainerComponent.prototype.setGraphicContainerAttrs = function () {\n        var chart = this.chart,\n            label = chart.langFormat('accessibility.graphicContainerLabel', {\n                chartTitle: ContainerComponent_getChartTitle(chart)\n            });\n        if (label.length) {\n            chart.container.setAttribute('aria-label', label);\n        }\n    };\n    /**\n     * Set attributes on the chart container element.\n     * @private\n     */\n    ContainerComponent.prototype.setRenderToAttrs = function () {\n        var chart = this.chart, shouldHaveLandmark = chart.options.accessibility\n                .landmarkVerbosity !== 'disabled', containerLabel = chart.langFormat('accessibility.chartContainerLabel', {\n                title: ContainerComponent_getChartTitle(chart),\n                chart: chart\n            });\n        if (containerLabel) {\n            chart.renderTo.setAttribute('role', shouldHaveLandmark ? 'region' : 'group');\n            chart.renderTo.setAttribute('aria-label', containerLabel);\n        }\n    };\n    /**\n     * @private\n     */\n    ContainerComponent.prototype.makeCreditsAccessible = function () {\n        var chart = this.chart,\n            credits = chart.credits;\n        if (credits) {\n            if (credits.textStr) {\n                credits.element.setAttribute('aria-label', chart.langFormat('accessibility.credits', {\n                    creditsStr: ContainerComponent_stripHTMLTags(credits.textStr, chart.renderer.forExport)\n                }));\n            }\n            ContainerComponent_unhideChartElementFromAT(chart, credits.element);\n        }\n    };\n    /**\n     * Empty handler to just set focus on chart\n     * @private\n     */\n    ContainerComponent.prototype.getKeyboardNavigation = function () {\n        var chart = this.chart;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [],\n            validate: function () {\n                return true;\n            },\n            init: function () {\n                var a11y = chart.accessibility;\n                if (a11y) {\n                    a11y.keyboardNavigation.tabindexContainer.focus();\n                }\n            }\n        });\n    };\n    /**\n     * Accessibility disabled/chart destroyed.\n     */\n    ContainerComponent.prototype.destroy = function () {\n        this.chart.renderTo.setAttribute('aria-hidden', true);\n    };\n    return ContainerComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Components_ContainerComponent = (ContainerComponent);\n\n;// ./code/es5/es-modules/Accessibility/FocusBorder.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Extend SVG and Chart classes with focus border capabilities.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar FocusBorder_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, FocusBorder_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Composition\n *\n * */\nvar FocusBorderComposition;\n(function (FocusBorderComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    // Attributes that trigger a focus border update\n    var svgElementBorderUpdateTriggers = [\n            'x', 'y', 'transform', 'width', 'height', 'r', 'd', 'stroke-width'\n        ];\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(ChartClass, SVGElementClass) {\n        var chartProto = ChartClass.prototype,\n            svgElementProto = SVGElementClass.prototype;\n        if (!chartProto.renderFocusBorder) {\n            chartProto.renderFocusBorder = chartRenderFocusBorder;\n            chartProto.setFocusToElement = chartSetFocusToElement;\n        }\n        if (!svgElementProto.addFocusBorder) {\n            svgElementProto.addFocusBorder = svgElementAddFocusBorder;\n            svgElementProto.removeFocusBorder = svgElementRemoveFocusBorder;\n        }\n    }\n    FocusBorderComposition.compose = compose;\n    /**\n     * Redraws the focus border on the currently focused element.\n     *\n     * @private\n     * @function Highcharts.Chart#renderFocusBorder\n     */\n    function chartRenderFocusBorder() {\n        var focusElement = this.focusElement,\n            focusBorderOptions = this.options.accessibility.keyboardNavigation.focusBorder;\n        if (focusElement) {\n            focusElement.removeFocusBorder();\n            if (focusBorderOptions.enabled) {\n                focusElement.addFocusBorder(focusBorderOptions.margin, {\n                    stroke: focusBorderOptions.style.color,\n                    strokeWidth: focusBorderOptions.style.lineWidth,\n                    r: focusBorderOptions.style.borderRadius\n                });\n            }\n        }\n    }\n    /**\n     * Set chart's focus to an SVGElement. Calls focus() on it, and draws the\n     * focus border. This is used by multiple components.\n     *\n     * @private\n     * @function Highcharts.Chart#setFocusToElement\n     *\n     * @param {Highcharts.SVGElement} svgElement\n     * Element to draw the border around.\n     *\n     * @param {SVGDOMElement|HTMLDOMElement} [focusElement]\n     * If supplied, it draws the border around svgElement and sets the focus to\n     * focusElement.\n     */\n    function chartSetFocusToElement(svgElement, focusElement) {\n        var focusBorderOptions = this.options.accessibility.keyboardNavigation.focusBorder,\n            browserFocusElement = focusElement || svgElement.element;\n        // Set browser focus if possible\n        if (browserFocusElement &&\n            browserFocusElement.focus) {\n            // If there is no focusin-listener, add one to work around Edge\n            // where Narrator is not reading out points despite calling focus().\n            if (!(browserFocusElement.hcEvents &&\n                browserFocusElement.hcEvents.focusin)) {\n                FocusBorder_addEvent(browserFocusElement, 'focusin', function () { });\n            }\n            browserFocusElement.focus();\n            // Hide default focus ring\n            if (focusBorderOptions.hideBrowserFocusOutline) {\n                browserFocusElement.style.outline = 'none';\n            }\n        }\n        if (this.focusElement) {\n            this.focusElement.removeFocusBorder();\n        }\n        this.focusElement = svgElement;\n        this.renderFocusBorder();\n    }\n    /**\n     * Add hook to destroy focus border if SVG element is destroyed, unless\n     * hook already exists.\n     * @private\n     * @param el Element to add destroy hook to\n     */\n    function svgElementAddDestroyFocusBorderHook(el) {\n        if (el.focusBorderDestroyHook) {\n            return;\n        }\n        var origDestroy = el.destroy;\n        el.destroy = function () {\n            if (el.focusBorder && el.focusBorder.destroy) {\n                el.focusBorder.destroy();\n            }\n            return origDestroy.apply(el, arguments);\n        };\n        el.focusBorderDestroyHook = origDestroy;\n    }\n    /**\n     * Add focus border functionality to SVGElements. Draws a new rect on top of\n     * element around its bounding box. This is used by multiple components.\n     *\n     * @private\n     * @function Highcharts.SVGElement#addFocusBorder\n     *\n     * @param {number} margin\n     *\n     * @param {SVGAttributes} attribs\n     */\n    function svgElementAddFocusBorder(margin, attribs) {\n        // Allow updating by just adding new border\n        if (this.focusBorder) {\n            this.removeFocusBorder();\n        }\n        // Add the border rect\n        var bb = this.getBBox(),\n            pad = FocusBorder_pick(margin, 3),\n            parent = this.parentGroup,\n            scaleX = this.scaleX || parent && parent.scaleX,\n            scaleY = this.scaleY || parent && parent.scaleY,\n            oneDefined = scaleX ? !scaleY : scaleY,\n            scaleBoth = oneDefined ? Math.abs(scaleX || scaleY || 1) :\n                (Math.abs(scaleX || 1) + Math.abs(scaleY || 1)) / 2,\n            lineHeight = this.renderer.fontMetrics(this).h;\n        bb.x += this.translateX ? this.translateX : 0;\n        bb.y += this.translateY ? this.translateY : 0;\n        var borderPosX = bb.x - pad,\n            borderPosY = bb.y - pad,\n            borderWidth = bb.width + 2 * pad,\n            borderHeight = bb.height + 2 * pad;\n        /**\n         * For text elements, apply x and y offset, #11397.\n         * @private\n         */\n        function getTextAnchorCorrection(text) {\n            var posXCorrection = 0,\n                posYCorrection = 0;\n            if (text.attr('text-anchor') === 'middle') {\n                posXCorrection = posYCorrection = 0.5;\n            }\n            else if (!text.rotation) {\n                posYCorrection = 0.75;\n            }\n            else {\n                posXCorrection = 0.25;\n            }\n            return {\n                x: posXCorrection,\n                y: posYCorrection\n            };\n        }\n        var isLabel = !!this.text;\n        if (this.element.nodeName === 'text' || isLabel) {\n            var isRotated = !!this.rotation;\n            var correction = !isLabel ? getTextAnchorCorrection(this) :\n                    {\n                        x: isRotated ? 1 : 0,\n                        y: 0\n                    };\n            var attrX = +this.attr('x');\n            var attrY = +this.attr('y');\n            if (!isNaN(attrX)) {\n                borderPosX = attrX - (bb.width * correction.x) - pad;\n            }\n            if (!isNaN(attrY)) {\n                // Correct by line height if \"text-achor\" == \"start\", #19335.\n                var dim = this.attr('text-anchor') === 'start' ?\n                        lineHeight :\n                        bb.height;\n                borderPosY = attrY - (dim * correction.y) - pad;\n            }\n            if (isLabel && isRotated) {\n                var temp = borderWidth;\n                borderWidth = borderHeight;\n                borderHeight = temp;\n                if (!isNaN(attrX)) {\n                    borderPosX = attrX - (bb.height * correction.x) - pad;\n                }\n                if (!isNaN(attrY)) {\n                    borderPosY = attrY - (bb.width * correction.y) - pad;\n                }\n            }\n        }\n        this.focusBorder = this.renderer.rect(borderPosX, borderPosY, borderWidth, borderHeight, parseInt((attribs && attribs.r || 0).toString(), 10) / scaleBoth)\n            .addClass('highcharts-focus-border')\n            .attr({\n            zIndex: 99\n        })\n            .add(parent);\n        if (!this.renderer.styledMode) {\n            this.focusBorder.attr({\n                stroke: attribs && attribs.stroke,\n                'stroke-width': (attribs && attribs.strokeWidth || 0) / scaleBoth\n            });\n        }\n        avgElementAddUpdateFocusBorderHooks(this, margin, attribs);\n        svgElementAddDestroyFocusBorderHook(this);\n    }\n    /**\n     * Add hooks to update the focus border of an element when the element\n     * size/position is updated, unless already added.\n     * @private\n     * @param el Element to add update hooks to\n     * @param updateParams Parameters to pass through to addFocusBorder when updating.\n     */\n    function avgElementAddUpdateFocusBorderHooks(el) {\n        var updateParams = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            updateParams[_i - 1] = arguments[_i];\n        }\n        if (el.focusBorderUpdateHooks) {\n            return;\n        }\n        el.focusBorderUpdateHooks = {};\n        svgElementBorderUpdateTriggers.forEach(function (trigger) {\n            var setterKey = trigger + 'Setter';\n            var origSetter = el[setterKey] || el._defaultSetter;\n            el.focusBorderUpdateHooks[setterKey] = origSetter;\n            el[setterKey] = function () {\n                var ret = origSetter.apply(el,\n                    arguments);\n                el.addFocusBorder.apply(el, updateParams);\n                return ret;\n            };\n        });\n    }\n    /**\n     * Remove hook from SVG element added by addDestroyFocusBorderHook, if\n     * existing.\n     * @private\n     * @param el Element to remove destroy hook from\n     */\n    function svgElementRemoveDestroyFocusBorderHook(el) {\n        if (!el.focusBorderDestroyHook) {\n            return;\n        }\n        el.destroy = el.focusBorderDestroyHook;\n        delete el.focusBorderDestroyHook;\n    }\n    /**\n     * Add focus border functionality to SVGElements. Draws a new rect on top of\n     * element around its bounding box. This is used by multiple components.\n     * @private\n     * @function Highcharts.SVGElement#removeFocusBorder\n     */\n    function svgElementRemoveFocusBorder() {\n        svgElementRemoveUpdateFocusBorderHooks(this);\n        svgElementRemoveDestroyFocusBorderHook(this);\n        if (this.focusBorder) {\n            this.focusBorder.destroy();\n            delete this.focusBorder;\n        }\n    }\n    /**\n     * Remove hooks from SVG element added by addUpdateFocusBorderHooks, if\n     * existing.\n     * @private\n     * @param el Element to remove update hooks from\n     */\n    function svgElementRemoveUpdateFocusBorderHooks(el) {\n        if (!el.focusBorderUpdateHooks) {\n            return;\n        }\n        Object.keys(el.focusBorderUpdateHooks).forEach(function (setterKey) {\n            var origSetter = el.focusBorderUpdateHooks[setterKey];\n            if (origSetter === el._defaultSetter) {\n                delete el[setterKey];\n            }\n            else {\n                el[setterKey] = origSetter;\n            }\n        });\n        delete el.focusBorderUpdateHooks;\n    }\n})(FocusBorderComposition || (FocusBorderComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var FocusBorder = (FocusBorderComposition);\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/es5/es-modules/Accessibility/Utils/Announcer.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Create announcer to speak messages to screen readers and other AT.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\nvar Announcer_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar Announcer_addClass = Utils_HTMLUtilities.addClass, Announcer_visuallyHideElement = Utils_HTMLUtilities.visuallyHideElement;\n\nvar attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr;\n/* *\n *\n *  Class\n *\n * */\nvar Announcer = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function Announcer(chart, type) {\n        this.chart = chart;\n        this.domElementProvider = new Utils_DOMElementProvider();\n        this.announceRegion = this.addAnnounceRegion(type);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    Announcer.prototype.destroy = function () {\n        this.domElementProvider.destroyCreatedElements();\n    };\n    Announcer.prototype.announce = function (message) {\n        var _this = this;\n        highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(this.announceRegion, message);\n        // Delete contents after a little while to avoid user finding the live\n        // region in the DOM.\n        if (this.clearAnnouncementRegionTimer) {\n            clearTimeout(this.clearAnnouncementRegionTimer);\n        }\n        this.clearAnnouncementRegionTimer = setTimeout(function () {\n            _this.announceRegion.innerHTML = (highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default()).emptyHTML;\n            delete _this.clearAnnouncementRegionTimer;\n        }, 3000);\n    };\n    Announcer.prototype.addAnnounceRegion = function (type) {\n        var chartContainer = (this.chart.announcerContainer || this.createAnnouncerContainer()),\n            div = this.domElementProvider.createElement('div');\n        attr(div, {\n            'aria-hidden': false,\n            'aria-live': type,\n            'aria-atomic': true\n        });\n        if (this.chart.styledMode) {\n            Announcer_addClass(div, 'highcharts-visually-hidden');\n        }\n        else {\n            Announcer_visuallyHideElement(div);\n        }\n        chartContainer.appendChild(div);\n        return div;\n    };\n    Announcer.prototype.createAnnouncerContainer = function () {\n        var chart = this.chart,\n            container = Announcer_doc.createElement('div');\n        attr(container, {\n            'aria-hidden': false,\n            'class': 'highcharts-announcer-container'\n        });\n        container.style.position = 'relative';\n        chart.renderTo.insertBefore(container, chart.renderTo.firstChild);\n        chart.announcerContainer = container;\n        return container;\n    };\n    return Announcer;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Utils_Announcer = (Announcer);\n\n;// ./code/es5/es-modules/Accessibility/Components/AnnotationsA11y.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Annotations accessibility code.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar AnnotationsA11y_escapeStringForHTML = Utils_HTMLUtilities.escapeStringForHTML, AnnotationsA11y_stripHTMLTagsFromString = Utils_HTMLUtilities.stripHTMLTagsFromString;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Get list of all annotation labels in the chart.\n *\n * @private\n * @param {Highcharts.Chart} chart The chart to get annotation info on.\n * @return {Array<object>} The labels, or empty array if none.\n */\nfunction getChartAnnotationLabels(chart) {\n    var annotations = chart.annotations || [];\n    return annotations.reduce(function (acc, cur) {\n        if (cur.options &&\n            cur.options.visible !== false) {\n            acc = acc.concat(cur.labels);\n        }\n        return acc;\n    }, []);\n}\n/**\n * Get the text of an annotation label.\n *\n * @private\n * @param {Object} label The annotation label object\n * @return {string} The text in the label.\n */\nfunction getLabelText(label) {\n    return ((label.options &&\n        label.options.accessibility &&\n        label.options.accessibility.description) ||\n        (label.graphic &&\n            label.graphic.text &&\n            label.graphic.text.textStr) ||\n        '');\n}\n/**\n * Describe an annotation label.\n *\n * @private\n * @param {Object} label The annotation label object to describe\n * @return {string} The description for the label.\n */\nfunction getAnnotationLabelDescription(label) {\n    var a11yDesc = (label.options &&\n            label.options.accessibility &&\n            label.options.accessibility.description);\n    if (a11yDesc) {\n        return a11yDesc;\n    }\n    var chart = label.chart;\n    var labelText = getLabelText(label);\n    var points = label.points;\n    var getAriaLabel = function (point) { return (point.graphic &&\n            point.graphic.element &&\n            point.graphic.element.getAttribute('aria-label') ||\n            ''); };\n    var getValueDesc = function (point) {\n            var valDesc = (point.accessibility &&\n                point.accessibility.valueDescription ||\n                getAriaLabel(point));\n        var seriesName = (point &&\n                point.series.name ||\n                '');\n        return (seriesName ? seriesName + ', ' : '') + 'data point ' + valDesc;\n    };\n    var pointValueDescriptions = points\n            .filter(function (p) { return !!p.graphic; }) // Filter out mock points\n            .map(getValueDesc)\n            // Filter out points we can't describe\n            .filter(function (desc) { return !!desc; });\n    var numPoints = pointValueDescriptions.length;\n    var pointsSelector = numPoints > 1 ?\n            'MultiplePoints' : numPoints ?\n            'SinglePoint' : 'NoPoints';\n    var langFormatStr = ('accessibility.screenReaderSection.annotations.description' +\n            pointsSelector);\n    var context = {\n            annotationText: labelText,\n            annotation: label,\n            numPoints: numPoints,\n            annotationPoint: pointValueDescriptions[0],\n            additionalAnnotationPoints: pointValueDescriptions.slice(1)\n        };\n    return chart.langFormat(langFormatStr, context);\n}\n/**\n * Return array of HTML strings for each annotation label in the chart.\n *\n * @private\n * @param {Highcharts.Chart} chart The chart to get annotation info on.\n * @return {Array<string>} Array of strings with HTML content for each annotation label.\n */\nfunction getAnnotationListItems(chart) {\n    var labels = getChartAnnotationLabels(chart);\n    return labels.map(function (label) {\n        var desc = AnnotationsA11y_escapeStringForHTML(AnnotationsA11y_stripHTMLTagsFromString(getAnnotationLabelDescription(label),\n            chart.renderer.forExport));\n        return desc ? \"<li>\".concat(desc, \"</li>\") : '';\n    });\n}\n/**\n * Return the annotation info for a chart as string.\n *\n * @private\n * @param {Highcharts.Chart} chart The chart to get annotation info on.\n * @return {string} String with HTML content or empty string if no annotations.\n */\nfunction getAnnotationsInfoHTML(chart) {\n    var annotations = chart.annotations;\n    if (!(annotations && annotations.length)) {\n        return '';\n    }\n    var annotationItems = getAnnotationListItems(chart);\n    return \"<ul style=\\\"list-style-type: none\\\">\".concat(annotationItems.join(' '), \"</ul>\");\n}\n/**\n * Return the texts for the annotation(s) connected to a point, or empty array\n * if none.\n *\n * @private\n * @param {Highcharts.Point} point The data point to get the annotation info from.\n * @return {Array<string>} Annotation texts\n */\nfunction getPointAnnotationTexts(point) {\n    var labels = getChartAnnotationLabels(point.series.chart);\n    var pointLabels = labels\n            .filter(function (label) { return label.points.indexOf(point) > -1; });\n    if (!pointLabels.length) {\n        return [];\n    }\n    return pointLabels.map(function (label) { return \"\".concat(getLabelText(label)); });\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar AnnotationsA11y = {\n    getAnnotationsInfoHTML: getAnnotationsInfoHTML,\n    getAnnotationLabelDescription: getAnnotationLabelDescription,\n    getAnnotationListItems: getAnnotationListItems,\n    getPointAnnotationTexts: getPointAnnotationTexts\n};\n/* harmony default export */ var Components_AnnotationsA11y = (AnnotationsA11y);\n\n;// ./code/es5/es-modules/Accessibility/Components/InfoRegionsComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for chart info region and table.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar InfoRegionsComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar InfoRegionsComponent_getAnnotationsInfoHTML = Components_AnnotationsA11y.getAnnotationsInfoHTML;\n\n\nvar InfoRegionsComponent_getAxisDescription = Utils_ChartUtilities.getAxisDescription, InfoRegionsComponent_getAxisRangeDescription = Utils_ChartUtilities.getAxisRangeDescription, InfoRegionsComponent_getChartTitle = Utils_ChartUtilities.getChartTitle, InfoRegionsComponent_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT;\n\nvar InfoRegionsComponent_format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar InfoRegionsComponent_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar InfoRegionsComponent_addClass = Utils_HTMLUtilities.addClass, InfoRegionsComponent_getElement = Utils_HTMLUtilities.getElement, InfoRegionsComponent_getHeadingTagNameForElement = Utils_HTMLUtilities.getHeadingTagNameForElement, InfoRegionsComponent_stripHTMLTagsFromString = Utils_HTMLUtilities.stripHTMLTagsFromString, InfoRegionsComponent_visuallyHideElement = Utils_HTMLUtilities.visuallyHideElement;\n\nvar InfoRegionsComponent_attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr, InfoRegionsComponent_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, replaceNested = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).replaceNested;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction getTableSummary(chart) {\n    return chart.langFormat('accessibility.table.tableSummary', { chart: chart });\n}\n/**\n * @private\n */\nfunction getTypeDescForMapChart(chart, formatContext) {\n    return formatContext.mapTitle ?\n        chart.langFormat('accessibility.chartTypes.mapTypeDescription', formatContext) :\n        chart.langFormat('accessibility.chartTypes.unknownMap', formatContext);\n}\n/**\n * @private\n */\nfunction getTypeDescForCombinationChart(chart, formatContext) {\n    return chart.langFormat('accessibility.chartTypes.combinationChart', formatContext);\n}\n/**\n * @private\n */\nfunction getTypeDescForEmptyChart(chart, formatContext) {\n    return chart.langFormat('accessibility.chartTypes.emptyChart', formatContext);\n}\n/**\n * @private\n */\nfunction buildTypeDescriptionFromSeries(chart, types, context) {\n    var firstType = types[0], typeExplanation = chart.langFormat('accessibility.seriesTypeDescriptions.' + firstType, context), multi = chart.series && chart.series.length < 2 ? 'Single' : 'Multiple';\n    return (chart.langFormat('accessibility.chartTypes.' + firstType + multi, context) ||\n        chart.langFormat('accessibility.chartTypes.default' + multi, context)) + (typeExplanation ? ' ' + typeExplanation : '');\n}\n/**\n * Return simplified explanation of chart type. Some types will not be\n * familiar to most users, but in those cases we try to add an explanation\n * of the type.\n *\n * @private\n * @function Highcharts.Chart#getTypeDescription\n * @param {Array<string>} types The series types in this chart.\n * @return {string} The text description of the chart type.\n */\nfunction getTypeDescription(chart, types) {\n    var firstType = types[0],\n        firstSeries = chart.series && chart.series[0] || {},\n        mapTitle = chart.mapView && chart.mapView.geoMap &&\n            chart.mapView.geoMap.title,\n        formatContext = {\n            numSeries: chart.series.length,\n            numPoints: firstSeries.points && firstSeries.points.length,\n            chart: chart,\n            mapTitle: mapTitle\n        };\n    if (!firstType) {\n        return getTypeDescForEmptyChart(chart, formatContext);\n    }\n    if (firstType === 'map' || firstType === 'tiledwebmap') {\n        return getTypeDescForMapChart(chart, formatContext);\n    }\n    if (chart.types.length > 1) {\n        return getTypeDescForCombinationChart(chart, formatContext);\n    }\n    return buildTypeDescriptionFromSeries(chart, types, formatContext);\n}\n/**\n * @private\n */\nfunction stripEmptyHTMLTags(str) {\n    // Scan alert #[71]: Loop for nested patterns\n    return replaceNested(str, [/<([\\w\\-.:!]+)\\b[^<>]*>\\s*<\\/\\1>/g, '']);\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The InfoRegionsComponent class\n *\n * @private\n * @class\n * @name Highcharts.InfoRegionsComponent\n */\nvar InfoRegionsComponent = /** @class */ (function (_super) {\n    InfoRegionsComponent_extends(InfoRegionsComponent, _super);\n    function InfoRegionsComponent() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        var _this = _super !== null && _super.apply(this,\n            arguments) || this;\n        _this.screenReaderSections = {};\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * Init the component\n     * @private\n     */\n    InfoRegionsComponent.prototype.init = function () {\n        var chart = this.chart;\n        var component = this;\n        this.initRegionsDefinitions();\n        this.addEvent(chart, 'aftergetTableAST', function (e) {\n            component.onDataTableCreated(e);\n        });\n        this.addEvent(chart, 'afterViewData', function (e) {\n            if (e.wasHidden) {\n                component.dataTableDiv = e.element;\n                // Use a small delay to give browsers & AT time to\n                // register the new table.\n                setTimeout(function () {\n                    component.focusDataTable();\n                }, 300);\n            }\n        });\n        this.addEvent(chart, 'afterHideData', function () {\n            if (component.viewDataTableButton) {\n                component.viewDataTableButton\n                    .setAttribute('aria-expanded', 'false');\n            }\n        });\n        if (chart.exporting) {\n            // Needed when print logic in exporting does not trigger\n            // rerendering thus repositioning of screen reader DOM elements\n            // (#21554)\n            this.addEvent(chart, 'afterPrint', function () {\n                component.updateAllScreenReaderSections();\n            });\n        }\n        this.announcer = new Utils_Announcer(chart, 'assertive');\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.initRegionsDefinitions = function () {\n        var component = this,\n            accessibilityOptions = this.chart.options.accessibility;\n        this.screenReaderSections = {\n            before: {\n                element: null,\n                buildContent: function (chart) {\n                    var formatter = accessibilityOptions.screenReaderSection\n                            .beforeChartFormatter;\n                    return formatter ? formatter(chart) :\n                        component.defaultBeforeChartFormatter(chart);\n                },\n                insertIntoDOM: function (el, chart) {\n                    chart.renderTo.insertBefore(el, chart.renderTo.firstChild);\n                },\n                afterInserted: function () {\n                    if (typeof component.sonifyButtonId !== 'undefined') {\n                        component.initSonifyButton(component.sonifyButtonId);\n                    }\n                    if (typeof component.dataTableButtonId !== 'undefined') {\n                        component.initDataTableButton(component.dataTableButtonId);\n                    }\n                }\n            },\n            after: {\n                element: null,\n                buildContent: function (chart) {\n                    var formatter = accessibilityOptions.screenReaderSection\n                            .afterChartFormatter;\n                    return formatter ? formatter(chart) :\n                        component.defaultAfterChartFormatter();\n                },\n                insertIntoDOM: function (el, chart) {\n                    chart.renderTo.insertBefore(el, chart.container.nextSibling);\n                },\n                afterInserted: function () {\n                    if (component.chart.accessibility &&\n                        accessibilityOptions.keyboardNavigation.enabled) {\n                        component.chart.accessibility\n                            .keyboardNavigation.updateExitAnchor(); // #15986\n                    }\n                }\n            }\n        };\n    };\n    /**\n     * Called on chart render. Have to update the sections on render, in order\n     * to get a11y info from series.\n     */\n    InfoRegionsComponent.prototype.onChartRender = function () {\n        this.linkedDescriptionElement = this.getLinkedDescriptionElement();\n        this.setLinkedDescriptionAttrs();\n        this.updateAllScreenReaderSections();\n    };\n    InfoRegionsComponent.prototype.updateAllScreenReaderSections = function () {\n        var component = this;\n        Object.keys(this.screenReaderSections).forEach(function (regionKey) {\n            component.updateScreenReaderSection(regionKey);\n        });\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getLinkedDescriptionElement = function () {\n        var chartOptions = this.chart.options,\n            linkedDescOption = chartOptions.accessibility.linkedDescription;\n        if (!linkedDescOption) {\n            return;\n        }\n        if (typeof linkedDescOption !== 'string') {\n            return linkedDescOption;\n        }\n        var query = InfoRegionsComponent_format(linkedDescOption,\n            this.chart),\n            queryMatch = InfoRegionsComponent_doc.querySelectorAll(query);\n        if (queryMatch.length === 1) {\n            return queryMatch[0];\n        }\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.setLinkedDescriptionAttrs = function () {\n        var el = this.linkedDescriptionElement;\n        if (el) {\n            el.setAttribute('aria-hidden', 'true');\n            InfoRegionsComponent_addClass(el, 'highcharts-linked-description');\n        }\n    };\n    /**\n     * @private\n     * @param {string} regionKey\n     * The name/key of the region to update\n     */\n    InfoRegionsComponent.prototype.updateScreenReaderSection = function (regionKey) {\n        var chart = this.chart;\n        var region = this.screenReaderSections[regionKey];\n        var content = region.buildContent(chart);\n        var sectionDiv = region.element = (region.element || this.createElement('div'));\n        var hiddenDiv = (sectionDiv.firstChild || this.createElement('div'));\n        if (content) {\n            this.setScreenReaderSectionAttribs(sectionDiv, regionKey);\n            highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(hiddenDiv, content);\n            sectionDiv.appendChild(hiddenDiv);\n            region.insertIntoDOM(sectionDiv, chart);\n            if (chart.styledMode) {\n                InfoRegionsComponent_addClass(hiddenDiv, 'highcharts-visually-hidden');\n            }\n            else {\n                InfoRegionsComponent_visuallyHideElement(hiddenDiv);\n            }\n            InfoRegionsComponent_unhideChartElementFromAT(chart, hiddenDiv);\n            if (region.afterInserted) {\n                region.afterInserted();\n            }\n        }\n        else {\n            if (sectionDiv.parentNode) {\n                sectionDiv.parentNode.removeChild(sectionDiv);\n            }\n            region.element = null;\n        }\n    };\n    /**\n     * Apply a11y attributes to a screen reader info section\n     * @private\n     * @param {Highcharts.HTMLDOMElement} sectionDiv The section element\n     * @param {string} regionKey Name/key of the region we are setting attrs for\n     */\n    InfoRegionsComponent.prototype.setScreenReaderSectionAttribs = function (sectionDiv, regionKey) {\n        var chart = this.chart, labelText = chart.langFormat('accessibility.screenReaderSection.' + regionKey +\n                'RegionLabel', { chart: chart, chartTitle: InfoRegionsComponent_getChartTitle(chart) }), sectionId = \"highcharts-screen-reader-region-\".concat(regionKey, \"-\").concat(chart.index);\n        InfoRegionsComponent_attr(sectionDiv, {\n            id: sectionId,\n            'aria-label': labelText || void 0\n        });\n        // Sections are wrapped to be positioned relatively to chart in case\n        // elements inside are tabbed to.\n        sectionDiv.style.position = 'relative';\n        if (labelText) {\n            sectionDiv.setAttribute('role', chart.options.accessibility.landmarkVerbosity === 'all' ?\n                'region' : 'group');\n        }\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.defaultBeforeChartFormatter = function () {\n        var chart = this.chart,\n            format = chart.options.accessibility.screenReaderSection\n                .beforeChartFormat;\n        if (!format) {\n            return '';\n        }\n        var axesDesc = this.getAxesDescription(),\n            shouldHaveSonifyBtn = (chart.sonify &&\n                chart.options.sonification &&\n                chart.options.sonification.enabled),\n            sonifyButtonId = 'highcharts-a11y-sonify-data-btn-' +\n                chart.index,\n            dataTableButtonId = 'hc-linkto-highcharts-data-table-' +\n                chart.index,\n            annotationsList = InfoRegionsComponent_getAnnotationsInfoHTML(chart),\n            annotationsTitleStr = chart.langFormat('accessibility.screenReaderSection.annotations.heading', { chart: chart }),\n            context = {\n                headingTagName: InfoRegionsComponent_getHeadingTagNameForElement(chart.renderTo),\n                chartTitle: InfoRegionsComponent_getChartTitle(chart),\n                typeDescription: this.getTypeDescriptionText(),\n                chartSubtitle: this.getSubtitleText(),\n                chartLongdesc: this.getLongdescText(),\n                xAxisDescription: axesDesc.xAxis,\n                yAxisDescription: axesDesc.yAxis,\n                playAsSoundButton: shouldHaveSonifyBtn ?\n                    this.getSonifyButtonText(sonifyButtonId) : '',\n                viewTableButton: chart.getCSV ?\n                    this.getDataTableButtonText(dataTableButtonId) : '',\n                annotationsTitle: annotationsList ? annotationsTitleStr : '',\n                annotationsList: annotationsList\n            },\n            formattedString = A11yI18n.i18nFormat(format,\n            context,\n            chart);\n        this.dataTableButtonId = dataTableButtonId;\n        this.sonifyButtonId = sonifyButtonId;\n        return stripEmptyHTMLTags(formattedString);\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.defaultAfterChartFormatter = function () {\n        var chart = this.chart;\n        var format = chart.options.accessibility.screenReaderSection\n                .afterChartFormat;\n        if (!format) {\n            return '';\n        }\n        var context = { endOfChartMarker: this.getEndOfChartMarkerText() };\n        var formattedString = A11yI18n.i18nFormat(format,\n            context,\n            chart);\n        return stripEmptyHTMLTags(formattedString);\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getLinkedDescription = function () {\n        var el = this.linkedDescriptionElement,\n            content = el && el.innerHTML || '';\n        return InfoRegionsComponent_stripHTMLTagsFromString(content, this.chart.renderer.forExport);\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getLongdescText = function () {\n        var chartOptions = this.chart.options,\n            captionOptions = chartOptions.caption,\n            captionText = captionOptions && captionOptions.text,\n            linkedDescription = this.getLinkedDescription();\n        return (chartOptions.accessibility.description ||\n            linkedDescription ||\n            captionText ||\n            '');\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getTypeDescriptionText = function () {\n        var chart = this.chart;\n        return chart.types ?\n            chart.options.accessibility.typeDescription ||\n                getTypeDescription(chart, chart.types) : '';\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getDataTableButtonText = function (buttonId) {\n        var chart = this.chart,\n            buttonText = chart.langFormat('accessibility.table.viewAsDataTableButtonText', { chart: chart,\n            chartTitle: InfoRegionsComponent_getChartTitle(chart) });\n        return '<button id=\"' + buttonId + '\">' + buttonText + '</button>';\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getSonifyButtonText = function (buttonId) {\n        var chart = this.chart;\n        if (chart.options.sonification &&\n            chart.options.sonification.enabled === false) {\n            return '';\n        }\n        var buttonText = chart.langFormat('accessibility.sonification.playAsSoundButtonText', { chart: chart,\n            chartTitle: InfoRegionsComponent_getChartTitle(chart) });\n        return '<button id=\"' + buttonId + '\">' + buttonText + '</button>';\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getSubtitleText = function () {\n        var subtitle = (this.chart.options.subtitle);\n        return InfoRegionsComponent_stripHTMLTagsFromString(subtitle && subtitle.text || '', this.chart.renderer.forExport);\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getEndOfChartMarkerText = function () {\n        var endMarkerId = \"highcharts-end-of-chart-marker-\".concat(this.chart.index),\n            endMarker = InfoRegionsComponent_getElement(endMarkerId);\n        if (endMarker) {\n            return endMarker.outerHTML;\n        }\n        var chart = this.chart, markerText = chart.langFormat('accessibility.screenReaderSection.endOfChartMarker', { chart: chart }), id = 'highcharts-end-of-chart-marker-' + chart.index;\n        return '<div id=\"' + id + '\">' + markerText + '</div>';\n    };\n    /**\n     * @private\n     * @param {Highcharts.Dictionary<string>} e\n     */\n    InfoRegionsComponent.prototype.onDataTableCreated = function (e) {\n        var chart = this.chart;\n        if (chart.options.accessibility.enabled) {\n            if (this.viewDataTableButton) {\n                this.viewDataTableButton.setAttribute('aria-expanded', 'true');\n            }\n            var attributes = e.tree.attributes || {};\n            attributes.tabindex = -1;\n            attributes.summary = getTableSummary(chart);\n            e.tree.attributes = attributes;\n        }\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.focusDataTable = function () {\n        var tableDiv = this.dataTableDiv,\n            table = tableDiv && tableDiv.getElementsByTagName('table')[0];\n        if (table && table.focus) {\n            table.focus();\n        }\n    };\n    /**\n     * @private\n     * @param {string} sonifyButtonId\n     */\n    InfoRegionsComponent.prototype.initSonifyButton = function (sonifyButtonId) {\n        var _this = this;\n        var el = this.sonifyButton = InfoRegionsComponent_getElement(sonifyButtonId);\n        var chart = this.chart;\n        var defaultHandler = function (e) {\n                if (el) {\n                    el.setAttribute('aria-hidden', 'true');\n                el.setAttribute('aria-label', '');\n            }\n            e.preventDefault();\n            e.stopPropagation();\n            var announceMsg = chart.langFormat('accessibility.sonification.playAsSoundClickAnnouncement', { chart: chart });\n            _this.announcer.announce(announceMsg);\n            setTimeout(function () {\n                if (el) {\n                    el.removeAttribute('aria-hidden');\n                    el.removeAttribute('aria-label');\n                }\n                if (chart.sonify) {\n                    chart.sonify();\n                }\n            }, 1000); // Delay to let screen reader speak the button press\n        };\n        if (el && chart) {\n            el.setAttribute('tabindex', -1);\n            el.onclick = function (e) {\n                var onPlayAsSoundClick = (chart.options.accessibility &&\n                        chart.options.accessibility.screenReaderSection\n                            .onPlayAsSoundClick);\n                (onPlayAsSoundClick || defaultHandler).call(this, e, chart);\n            };\n        }\n    };\n    /**\n     * Set attribs and handlers for default viewAsDataTable button if exists.\n     * @private\n     * @param {string} tableButtonId\n     */\n    InfoRegionsComponent.prototype.initDataTableButton = function (tableButtonId) {\n        var el = this.viewDataTableButton = InfoRegionsComponent_getElement(tableButtonId), chart = this.chart, tableId = tableButtonId.replace('hc-linkto-', '');\n        if (el) {\n            InfoRegionsComponent_attr(el, {\n                tabindex: -1,\n                'aria-expanded': !!InfoRegionsComponent_getElement(tableId)\n            });\n            el.onclick = chart.options.accessibility\n                .screenReaderSection.onViewDataTableClick ||\n                function () {\n                    chart.viewData();\n                };\n        }\n    };\n    /**\n     * Return object with text description of each of the chart's axes.\n     * @private\n     */\n    InfoRegionsComponent.prototype.getAxesDescription = function () {\n        var chart = this.chart,\n            shouldDescribeColl = function (collectionKey,\n            defaultCondition) {\n                var axes = chart[collectionKey];\n            return axes.length > 1 || axes[0] &&\n                InfoRegionsComponent_pick(axes[0].options.accessibility &&\n                    axes[0].options.accessibility.enabled, defaultCondition);\n        }, hasNoMap = !!chart.types &&\n            chart.types.indexOf('map') < 0 &&\n            chart.types.indexOf('treemap') < 0 &&\n            chart.types.indexOf('tilemap') < 0, hasCartesian = !!chart.hasCartesianSeries, showXAxes = shouldDescribeColl('xAxis', !chart.angular && hasCartesian && hasNoMap), showYAxes = shouldDescribeColl('yAxis', hasCartesian && hasNoMap), desc = {};\n        if (showXAxes) {\n            desc.xAxis = this.getAxisDescriptionText('xAxis');\n        }\n        if (showYAxes) {\n            desc.yAxis = this.getAxisDescriptionText('yAxis');\n        }\n        return desc;\n    };\n    /**\n     * @private\n     */\n    InfoRegionsComponent.prototype.getAxisDescriptionText = function (collectionKey) {\n        var chart = this.chart;\n        var axes = chart[collectionKey];\n        return chart.langFormat('accessibility.axis.' + collectionKey + 'Description' + (axes.length > 1 ? 'Plural' : 'Singular'), {\n            chart: chart,\n            names: axes.map(function (axis) {\n                return InfoRegionsComponent_getAxisDescription(axis);\n            }),\n            ranges: axes.map(function (axis) {\n                return InfoRegionsComponent_getAxisRangeDescription(axis);\n            }),\n            numAxes: axes.length\n        });\n    };\n    /**\n     * Remove component traces\n     */\n    InfoRegionsComponent.prototype.destroy = function () {\n        if (this.announcer) {\n            this.announcer.destroy();\n        }\n    };\n    return InfoRegionsComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Components_InfoRegionsComponent = (InfoRegionsComponent);\n\n;// ./code/es5/es-modules/Accessibility/Components/MenuComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for exporting menu.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar MenuComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar MenuComponent_attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr;\n\n\n\nvar MenuComponent_getChartTitle = Utils_ChartUtilities.getChartTitle, MenuComponent_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT;\n\nvar MenuComponent_getFakeMouseEvent = Utils_HTMLUtilities.getFakeMouseEvent;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Get the wrapped export button element of a chart.\n * @private\n */\nfunction getExportMenuButtonElement(chart) {\n    return chart.exportSVGElements && chart.exportSVGElements[0];\n}\n/**\n * @private\n */\nfunction exportingShouldHaveA11y(chart) {\n    var exportingOpts = chart.options.exporting,\n        exportButton = getExportMenuButtonElement(chart);\n    return !!(exportingOpts &&\n        exportingOpts.enabled !== false &&\n        exportingOpts.accessibility &&\n        exportingOpts.accessibility.enabled &&\n        exportButton &&\n        exportButton.element);\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The MenuComponent class\n *\n * @private\n * @class\n * @name Highcharts.MenuComponent\n */\nvar MenuComponent = /** @class */ (function (_super) {\n    MenuComponent_extends(MenuComponent, _super);\n    function MenuComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * Init the component\n     */\n    MenuComponent.prototype.init = function () {\n        var chart = this.chart,\n            component = this;\n        this.addEvent(chart, 'exportMenuShown', function () {\n            component.onMenuShown();\n        });\n        this.addEvent(chart, 'exportMenuHidden', function () {\n            component.onMenuHidden();\n        });\n        this.createProxyGroup();\n    };\n    /**\n     * @private\n     */\n    MenuComponent.prototype.onMenuHidden = function () {\n        var menu = this.chart.exportContextMenu;\n        if (menu) {\n            menu.setAttribute('aria-hidden', 'true');\n        }\n        this.setExportButtonExpandedState('false');\n    };\n    /**\n     * @private\n     */\n    MenuComponent.prototype.onMenuShown = function () {\n        var chart = this.chart,\n            menu = chart.exportContextMenu;\n        if (menu) {\n            this.addAccessibleContextMenuAttribs();\n            MenuComponent_unhideChartElementFromAT(chart, menu);\n        }\n        this.setExportButtonExpandedState('true');\n    };\n    /**\n     * @private\n     * @param {string} stateStr\n     */\n    MenuComponent.prototype.setExportButtonExpandedState = function (stateStr) {\n        if (this.exportButtonProxy) {\n            this.exportButtonProxy.innerElement.setAttribute('aria-expanded', stateStr);\n        }\n    };\n    /**\n     * Called on each render of the chart. We need to update positioning of the\n     * proxy overlay.\n     */\n    MenuComponent.prototype.onChartRender = function () {\n        var chart = this.chart,\n            focusEl = chart.focusElement,\n            a11y = chart.accessibility;\n        this.proxyProvider.clearGroup('chartMenu');\n        this.proxyMenuButton();\n        if (this.exportButtonProxy &&\n            focusEl &&\n            focusEl === chart.exportingGroup) {\n            if (focusEl.focusBorder) {\n                chart.setFocusToElement(focusEl, this.exportButtonProxy.innerElement);\n            }\n            else if (a11y) {\n                a11y.keyboardNavigation.tabindexContainer.focus();\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    MenuComponent.prototype.proxyMenuButton = function () {\n        var chart = this.chart;\n        var proxyProvider = this.proxyProvider;\n        var buttonEl = getExportMenuButtonElement(chart);\n        if (exportingShouldHaveA11y(chart) && buttonEl) {\n            this.exportButtonProxy = proxyProvider.addProxyElement('chartMenu', { click: buttonEl }, 'button', {\n                'aria-label': chart.langFormat('accessibility.exporting.menuButtonLabel', {\n                    chart: chart,\n                    chartTitle: MenuComponent_getChartTitle(chart)\n                }),\n                'aria-expanded': false,\n                title: chart.options.lang.contextButtonTitle || null\n            });\n        }\n    };\n    /**\n     * @private\n     */\n    MenuComponent.prototype.createProxyGroup = function () {\n        var chart = this.chart;\n        if (chart && this.proxyProvider) {\n            this.proxyProvider.addGroup('chartMenu');\n        }\n    };\n    /**\n     * @private\n     */\n    MenuComponent.prototype.addAccessibleContextMenuAttribs = function () {\n        var chart = this.chart,\n            exportList = chart.exportDivElements;\n        if (exportList && exportList.length) {\n            // Set tabindex on the menu items to allow focusing by script\n            // Set role to give screen readers a chance to pick up the contents\n            exportList.forEach(function (item) {\n                if (item) {\n                    if (item.tagName === 'LI' &&\n                        !(item.children && item.children.length)) {\n                        item.setAttribute('tabindex', -1);\n                    }\n                    else {\n                        item.setAttribute('aria-hidden', 'true');\n                    }\n                }\n            });\n            // Set accessibility properties on parent div\n            var parentDiv = (exportList[0] && exportList[0].parentNode);\n            if (parentDiv) {\n                MenuComponent_attr(parentDiv, {\n                    'aria-hidden': void 0,\n                    'aria-label': chart.langFormat('accessibility.exporting.chartMenuLabel', { chart: chart }),\n                    role: 'list' // Needed for webkit/VO\n                });\n            }\n        }\n    };\n    /**\n     * Get keyboard navigation handler for this component.\n     * @private\n     */\n    MenuComponent.prototype.getKeyboardNavigation = function () {\n        var keys = this.keyCodes,\n            chart = this.chart,\n            component = this;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [\n                // Arrow prev handler\n                [\n                    [keys.left, keys.up],\n                    function () {\n                        return component.onKbdPrevious(this);\n                    }\n                ],\n                // Arrow next handler\n                [\n                    [keys.right, keys.down],\n                    function () {\n                        return component.onKbdNext(this);\n                    }\n                ],\n                // Click handler\n                [\n                    [keys.enter, keys.space],\n                    function () {\n                        return component.onKbdClick(this);\n                    }\n                ]\n            ],\n            // Only run exporting navigation if exporting support exists and is\n            // enabled on chart\n            validate: function () {\n                return !!chart.exporting &&\n                    chart.options.exporting.enabled !== false &&\n                    chart.options.exporting.accessibility.enabled !==\n                        false;\n            },\n            // Focus export menu button\n            init: function () {\n                var proxy = component.exportButtonProxy;\n                var svgEl = component.chart.exportingGroup;\n                if (proxy && svgEl) {\n                    chart.setFocusToElement(svgEl, proxy.innerElement);\n                }\n            },\n            // Hide the menu\n            terminate: function () {\n                chart.hideExportMenu();\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler\n     * @return {number} Response code\n     */\n    MenuComponent.prototype.onKbdPrevious = function (keyboardNavigationHandler) {\n        var chart = this.chart;\n        var a11yOptions = chart.options.accessibility;\n        var response = keyboardNavigationHandler.response;\n        // Try to highlight prev item in list. Highlighting e.g.\n        // separators will fail.\n        var i = chart.highlightedExportItemIx || 0;\n        while (i--) {\n            if (chart.highlightExportItem(i)) {\n                return response.success;\n            }\n        }\n        // We failed, so wrap around or move to prev module\n        if (a11yOptions.keyboardNavigation.wrapAround) {\n            chart.highlightLastExportItem();\n            return response.success;\n        }\n        return response.prev;\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler\n     * @return {number} Response code\n     */\n    MenuComponent.prototype.onKbdNext = function (keyboardNavigationHandler) {\n        var chart = this.chart;\n        var a11yOptions = chart.options.accessibility;\n        var response = keyboardNavigationHandler.response;\n        // Try to highlight next item in list. Highlighting e.g.\n        // separators will fail.\n        for (var i = (chart.highlightedExportItemIx || 0) + 1; i < chart.exportDivElements.length; ++i) {\n            if (chart.highlightExportItem(i)) {\n                return response.success;\n            }\n        }\n        // We failed, so wrap around or move to next module\n        if (a11yOptions.keyboardNavigation.wrapAround) {\n            chart.highlightExportItem(0);\n            return response.success;\n        }\n        return response.next;\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler\n     * @return {number} Response code\n     */\n    MenuComponent.prototype.onKbdClick = function (keyboardNavigationHandler) {\n        var chart = this.chart;\n        var curHighlightedItem = chart.exportDivElements[chart.highlightedExportItemIx];\n        var exportButtonElement = getExportMenuButtonElement(chart).element;\n        if (chart.openMenu) {\n            this.fakeClickEvent(curHighlightedItem);\n        }\n        else {\n            this.fakeClickEvent(exportButtonElement);\n            chart.highlightExportItem(0);\n        }\n        return keyboardNavigationHandler.response.success;\n    };\n    return MenuComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (MenuComponent) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(ChartClass) {\n        var chartProto = ChartClass.prototype;\n        if (!chartProto.hideExportMenu) {\n            chartProto.hideExportMenu = chartHideExportMenu;\n            chartProto.highlightExportItem = chartHighlightExportItem;\n            chartProto.highlightLastExportItem = chartHighlightLastExportItem;\n            chartProto.showExportMenu = chartShowExportMenu;\n        }\n    }\n    MenuComponent.compose = compose;\n    /**\n     * Show the export menu and focus the first item (if exists).\n     *\n     * @private\n     * @function Highcharts.Chart#showExportMenu\n     */\n    function chartShowExportMenu() {\n        var exportButton = getExportMenuButtonElement(this);\n        if (exportButton) {\n            var el = exportButton.element;\n            if (el.onclick) {\n                el.onclick(MenuComponent_getFakeMouseEvent('click'));\n            }\n        }\n    }\n    /**\n     * @private\n     * @function Highcharts.Chart#hideExportMenu\n     */\n    function chartHideExportMenu() {\n        var chart = this,\n            exportList = chart.exportDivElements;\n        if (exportList && chart.exportContextMenu && chart.openMenu) {\n            // Reset hover states etc.\n            exportList.forEach(function (el) {\n                if (el &&\n                    el.className === 'highcharts-menu-item' &&\n                    el.onmouseout) {\n                    el.onmouseout(MenuComponent_getFakeMouseEvent('mouseout'));\n                }\n            });\n            chart.highlightedExportItemIx = 0;\n            // Hide the menu div\n            chart.exportContextMenu.hideMenu();\n            // Make sure the chart has focus and can capture keyboard events\n            chart.container.focus();\n        }\n    }\n    /**\n     * Highlight export menu item by index.\n     *\n     * @private\n     * @function Highcharts.Chart#highlightExportItem\n     */\n    function chartHighlightExportItem(ix) {\n        var listItem = this.exportDivElements && this.exportDivElements[ix];\n        var curHighlighted = this.exportDivElements &&\n                this.exportDivElements[this.highlightedExportItemIx];\n        if (listItem &&\n            listItem.tagName === 'LI' &&\n            !(listItem.children && listItem.children.length)) {\n            // Test if we have focus support for SVG elements\n            var hasSVGFocusSupport = !!(this.renderTo.getElementsByTagName('g')[0] || {}).focus;\n            // Only focus if we can set focus back to the elements after\n            // destroying the menu (#7422)\n            if (listItem.focus && hasSVGFocusSupport) {\n                listItem.focus();\n            }\n            if (curHighlighted && curHighlighted.onmouseout) {\n                curHighlighted.onmouseout(MenuComponent_getFakeMouseEvent('mouseout'));\n            }\n            if (listItem.onmouseover) {\n                listItem.onmouseover(MenuComponent_getFakeMouseEvent('mouseover'));\n            }\n            this.highlightedExportItemIx = ix;\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Try to highlight the last valid export menu item.\n     *\n     * @private\n     * @function Highcharts.Chart#highlightLastExportItem\n     */\n    function chartHighlightLastExportItem() {\n        var chart = this;\n        if (chart.exportDivElements) {\n            var i = chart.exportDivElements.length;\n            while (i--) {\n                if (chart.highlightExportItem(i)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n})(MenuComponent || (MenuComponent = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Components_MenuComponent = (MenuComponent);\n\n;// ./code/es5/es-modules/Accessibility/KeyboardNavigation.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Main keyboard navigation handling.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar KeyboardNavigation_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc, KeyboardNavigation_win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\n\nvar KeyboardNavigation_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, KeyboardNavigation_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, KeyboardNavigation_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent;\n\n\nvar KeyboardNavigation_getElement = Utils_HTMLUtilities.getElement, KeyboardNavigation_simulatedEventTarget = Utils_HTMLUtilities.simulatedEventTarget;\n/* *\n *\n *  Class\n *\n * */\n/**\n * The KeyboardNavigation class, containing the overall keyboard navigation\n * logic for the chart.\n *\n * @requires modules/accessibility\n *\n * @private\n * @class\n * @param {Highcharts.Chart} chart\n *        Chart object\n * @param {Object} components\n *        Map of component names to AccessibilityComponent objects.\n * @name Highcharts.KeyboardNavigation\n */\nvar KeyboardNavigation = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function KeyboardNavigation(chart, components) {\n        this.currentModuleIx = NaN;\n        this.modules = [];\n        this.init(chart, components);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initialize the class\n     * @private\n     * @param {Highcharts.Chart} chart\n     *        Chart object\n     * @param {Object} components\n     *        Map of component names to AccessibilityComponent objects.\n     */\n    KeyboardNavigation.prototype.init = function (chart, components) {\n        var _this = this;\n        var ep = this.eventProvider = new Utils_EventProvider();\n        this.chart = chart;\n        this.components = components;\n        this.modules = [];\n        this.currentModuleIx = 0;\n        this.update();\n        ep.addEvent(this.tabindexContainer, 'keydown', function (e) { return _this.onKeydown(e); });\n        ep.addEvent(this.tabindexContainer, 'focus', function (e) { return _this.onFocus(e); });\n        ['mouseup', 'touchend'].forEach(function (eventName) {\n            return ep.addEvent(KeyboardNavigation_doc, eventName, function (e) { return _this.onMouseUp(e); });\n        });\n        ['mousedown', 'touchstart'].forEach(function (eventName) {\n            return ep.addEvent(chart.renderTo, eventName, function () {\n                _this.isClickingChart = true;\n            });\n        });\n    };\n    /**\n     * Update the modules for the keyboard navigation.\n     * @param {Array<string>} [order]\n     *        Array specifying the tab order of the components.\n     */\n    KeyboardNavigation.prototype.update = function (order) {\n        var a11yOptions = this.chart.options.accessibility,\n            keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation,\n            components = this.components;\n        this.updateContainerTabindex();\n        if (keyboardOptions &&\n            keyboardOptions.enabled &&\n            order &&\n            order.length) {\n            // We (still) have keyboard navigation. Update module list\n            this.modules = order.reduce(function (modules, componentName) {\n                var navModules = components[componentName]\n                        .getKeyboardNavigation();\n                return modules.concat(navModules);\n            }, []);\n            this.updateExitAnchor();\n        }\n        else {\n            this.modules = [];\n            this.currentModuleIx = 0;\n            this.removeExitAnchor();\n        }\n    };\n    /**\n     * We use an exit anchor to move focus out of chart whenever we want, by\n     * setting focus to this div and not preventing the default tab action. We\n     * also use this when users come back into the chart by tabbing back, in\n     * order to navigate from the end of the chart.\n     * @private\n     */\n    KeyboardNavigation.prototype.updateExitAnchor = function () {\n        var endMarkerId = \"highcharts-end-of-chart-marker-\".concat(this.chart.index),\n            endMarker = KeyboardNavigation_getElement(endMarkerId);\n        this.removeExitAnchor();\n        if (endMarker) {\n            this.makeElementAnExitAnchor(endMarker);\n            this.exitAnchor = endMarker;\n        }\n        else {\n            this.createExitAnchor();\n        }\n    };\n    /**\n     * Move to prev/next module.\n     * @private\n     * @param {number} direction\n     * Direction to move. +1 for next, -1 for prev.\n     * @return {boolean}\n     * True if there was a valid module in direction.\n     */\n    KeyboardNavigation.prototype.move = function (direction) {\n        var curModule = this.modules && this.modules[this.currentModuleIx];\n        if (curModule && curModule.terminate) {\n            curModule.terminate(direction);\n        }\n        // Remove existing focus border if any\n        if (this.chart.focusElement) {\n            this.chart.focusElement.removeFocusBorder();\n        }\n        this.currentModuleIx += direction;\n        var newModule = this.modules && this.modules[this.currentModuleIx];\n        if (newModule) {\n            if (newModule.validate && !newModule.validate()) {\n                return this.move(direction); // Invalid module, recurse\n            }\n            if (newModule.init) {\n                newModule.init(direction); // Valid module, init it\n                return true;\n            }\n        }\n        // No module\n        this.currentModuleIx = 0; // Reset counter\n        // Set focus to chart or exit anchor depending on direction\n        this.exiting = true;\n        if (direction > 0) {\n            this.exitAnchor && this.exitAnchor.focus();\n        }\n        else {\n            this.tabindexContainer.focus();\n        }\n        return false;\n    };\n    /**\n     * Function to run on container focus\n     * @private\n     * @param {global.FocusEvent} e Browser focus event.\n     */\n    KeyboardNavigation.prototype.onFocus = function (e) {\n        var chart = this.chart,\n            focusComesFromChart = (e.relatedTarget &&\n                chart.container.contains(e.relatedTarget)),\n            a11yOptions = chart.options.accessibility,\n            keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation,\n            enabled = keyboardOptions && keyboardOptions.enabled;\n        // Init keyboard nav if tabbing into chart\n        if (enabled &&\n            !this.exiting &&\n            !this.tabbingInBackwards &&\n            !this.isClickingChart &&\n            !focusComesFromChart) {\n            var ix = this.getFirstValidModuleIx();\n            if (ix !== null) {\n                this.currentModuleIx = ix;\n                this.modules[ix].init(1);\n            }\n        }\n        this.keyboardReset = false;\n        this.exiting = false;\n    };\n    /**\n     * Reset chart navigation state if we mouse click and it's not already\n     * reset. Reset fully if outside the chart, otherwise just hide focus\n     * indicator.\n     * @private\n     */\n    KeyboardNavigation.prototype.onMouseUp = function (e) {\n        delete this.isClickingChart;\n        if (!this.keyboardReset &&\n            e.relatedTarget !== KeyboardNavigation_simulatedEventTarget) {\n            var chart = this.chart;\n            if (!e.target ||\n                !chart.container.contains(e.target)) {\n                var curMod = this.modules &&\n                        this.modules[this.currentModuleIx || 0];\n                if (curMod && curMod.terminate) {\n                    curMod.terminate();\n                }\n                this.currentModuleIx = 0;\n            }\n            if (chart.focusElement) {\n                chart.focusElement.removeFocusBorder();\n                delete chart.focusElement;\n            }\n            this.keyboardReset = true;\n        }\n    };\n    /**\n     * Function to run on keydown\n     * @private\n     * @param {global.KeyboardEvent} ev Browser keydown event.\n     */\n    KeyboardNavigation.prototype.onKeydown = function (ev) {\n        var e = ev || KeyboardNavigation_win.event,\n            curNavModule = (this.modules &&\n                this.modules.length &&\n                this.modules[this.currentModuleIx]);\n        var preventDefault;\n        var target = e.target;\n        if (target &&\n            target.nodeName === 'INPUT' &&\n            !target.classList.contains('highcharts-a11y-proxy-element')) {\n            return;\n        }\n        // Used for resetting nav state when clicking outside chart\n        this.keyboardReset = false;\n        // Used for sending focus out of the chart by the modules.\n        this.exiting = false;\n        // If there is a nav module for the current index, run it.\n        // Otherwise, we are outside of the chart in some direction.\n        if (curNavModule) {\n            var response = curNavModule.run(e);\n            if (response === curNavModule.response.success) {\n                preventDefault = true;\n            }\n            else if (response === curNavModule.response.prev) {\n                preventDefault = this.move(-1);\n            }\n            else if (response === curNavModule.response.next) {\n                preventDefault = this.move(1);\n            }\n            if (preventDefault) {\n                e.preventDefault();\n                e.stopPropagation();\n            }\n        }\n    };\n    /**\n     * Chart container should have tabindex if navigation is enabled.\n     * @private\n     */\n    KeyboardNavigation.prototype.updateContainerTabindex = function () {\n        var a11yOptions = this.chart.options.accessibility,\n            keyboardOptions = a11yOptions && a11yOptions.keyboardNavigation,\n            shouldHaveTabindex = !(keyboardOptions && keyboardOptions.enabled === false),\n            chart = this.chart,\n            container = chart.container;\n        var tabindexContainer;\n        if (chart.renderTo.hasAttribute('tabindex')) {\n            container.removeAttribute('tabindex');\n            tabindexContainer = chart.renderTo;\n        }\n        else {\n            tabindexContainer = container;\n        }\n        this.tabindexContainer = tabindexContainer;\n        var curTabindex = tabindexContainer.getAttribute('tabindex');\n        if (shouldHaveTabindex && !curTabindex) {\n            tabindexContainer.setAttribute('tabindex', '0');\n        }\n        else if (!shouldHaveTabindex) {\n            chart.container.removeAttribute('tabindex');\n        }\n    };\n    /**\n     * Add new exit anchor to the chart.\n     * @private\n     */\n    KeyboardNavigation.prototype.createExitAnchor = function () {\n        var chart = this.chart,\n            exitAnchor = this.exitAnchor = KeyboardNavigation_doc.createElement('div');\n        chart.renderTo.appendChild(exitAnchor);\n        this.makeElementAnExitAnchor(exitAnchor);\n    };\n    /**\n     * Add attributes and events to an element to make it function as an\n     * exit anchor.\n     * @private\n     */\n    KeyboardNavigation.prototype.makeElementAnExitAnchor = function (el) {\n        var chartTabindex = this.tabindexContainer.getAttribute('tabindex') || 0;\n        el.setAttribute('class', 'highcharts-exit-anchor');\n        el.setAttribute('tabindex', chartTabindex);\n        el.setAttribute('aria-hidden', false);\n        // Handle focus\n        this.addExitAnchorEventsToEl(el);\n    };\n    /**\n     * Destroy the exit anchor and remove from DOM.\n     * @private\n     */\n    KeyboardNavigation.prototype.removeExitAnchor = function () {\n        var _this = this;\n        // Remove event from element and from eventRemovers array to prevent\n        // memory leak (#20329).\n        if (this.exitAnchor) {\n            var el = this.eventProvider.eventRemovers.find(function (el) {\n                    return el.element === _this.exitAnchor;\n            });\n            if (el && KeyboardNavigation_defined(el.remover)) {\n                this.eventProvider.removeEvent(el.remover);\n            }\n            if (this.exitAnchor.parentNode) {\n                this.exitAnchor.parentNode.removeChild(this.exitAnchor);\n            }\n            delete this.exitAnchor;\n        }\n    };\n    /**\n     * Add focus handler to exit anchor element.\n     * @private\n     */\n    KeyboardNavigation.prototype.addExitAnchorEventsToEl = function (element) {\n        var chart = this.chart,\n            keyboardNavigation = this;\n        this.eventProvider.addEvent(element, 'focus', function (ev) {\n            var e = ev || KeyboardNavigation_win.event,\n                focusComesFromChart = (e.relatedTarget &&\n                    chart.container.contains(e.relatedTarget)),\n                comingInBackwards = !(focusComesFromChart || keyboardNavigation.exiting);\n            if (chart.focusElement) {\n                delete chart.focusElement;\n            }\n            if (comingInBackwards) {\n                // Focus the container instead\n                keyboardNavigation.tabbingInBackwards = true;\n                keyboardNavigation.tabindexContainer.focus();\n                delete keyboardNavigation.tabbingInBackwards;\n                e.preventDefault();\n                // Move to last valid keyboard nav module\n                // Note the we don't run it, just set the index\n                if (keyboardNavigation.modules &&\n                    keyboardNavigation.modules.length) {\n                    keyboardNavigation.currentModuleIx =\n                        keyboardNavigation.modules.length - 1;\n                    var curModule = keyboardNavigation.modules[keyboardNavigation.currentModuleIx];\n                    // Validate the module\n                    if (curModule &&\n                        curModule.validate && !curModule.validate()) {\n                        // Invalid.\n                        // Try moving backwards to find next valid.\n                        keyboardNavigation.move(-1);\n                    }\n                    else if (curModule) {\n                        // We have a valid module, init it\n                        curModule.init(-1);\n                    }\n                }\n            }\n            else {\n                // Don't skip the next focus, we only skip once.\n                keyboardNavigation.exiting = false;\n            }\n        });\n    };\n    /**\n     * Get the ix of the first module that either does not require validation or\n     * validates positively.\n     * @private\n     */\n    KeyboardNavigation.prototype.getFirstValidModuleIx = function () {\n        var len = this.modules.length;\n        for (var i = 0; i < len; ++i) {\n            var mod = this.modules[i];\n            if (!mod.validate || mod.validate()) {\n                return i;\n            }\n        }\n        return null;\n    };\n    /**\n     * Remove all traces of keyboard navigation.\n     * @private\n     */\n    KeyboardNavigation.prototype.destroy = function () {\n        this.removeExitAnchor();\n        this.eventProvider.removeAddedEvents();\n        this.chart.container.removeAttribute('tabindex');\n    };\n    return KeyboardNavigation;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (KeyboardNavigation) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Composition function.\n     * @private\n     */\n    function compose(ChartClass) {\n        Components_MenuComponent.compose(ChartClass);\n        var chartProto = ChartClass.prototype;\n        if (!chartProto.dismissPopupContent) {\n            chartProto.dismissPopupContent = chartDismissPopupContent;\n            KeyboardNavigation_addEvent(KeyboardNavigation_doc, 'keydown', documentOnKeydown);\n        }\n        return ChartClass;\n    }\n    KeyboardNavigation.compose = compose;\n    /**\n     * Dismiss popup content in chart, including export menu and tooltip.\n     * @private\n     */\n    function chartDismissPopupContent() {\n        var chart = this;\n        KeyboardNavigation_fireEvent(this, 'dismissPopupContent', {}, function () {\n            if (chart.tooltip) {\n                chart.tooltip.hide(0);\n            }\n            chart.hideExportMenu();\n        });\n    }\n    /**\n     * Add event listener to document to detect ESC key press and dismiss\n     * hover/popup content.\n     * @private\n     */\n    function documentOnKeydown(e) {\n        var keycode = e.which || e.keyCode;\n        var esc = 27;\n        if (keycode === esc && (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).charts) {\n            highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().charts.forEach(function (chart) {\n                if (chart && chart.dismissPopupContent) {\n                    chart.dismissPopupContent();\n                }\n            });\n        }\n    }\n})(KeyboardNavigation || (KeyboardNavigation = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Accessibility_KeyboardNavigation = (KeyboardNavigation);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Legend\"],\"commonjs\":[\"highcharts\",\"Legend\"],\"commonjs2\":[\"highcharts\",\"Legend\"],\"root\":[\"Highcharts\",\"Legend\"]}\nvar highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_ = __webpack_require__(632);\nvar highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_default = /*#__PURE__*/__webpack_require__.n(highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_);\n;// ./code/es5/es-modules/Accessibility/Components/LegendComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for chart legend.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar LegendComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar animObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).animObject;\n\nvar LegendComponent_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\n\nvar LegendComponent_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, LegendComponent_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, LegendComponent_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, syncTimeout = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).syncTimeout;\n\n\n\nvar LegendComponent_getChartTitle = Utils_ChartUtilities.getChartTitle;\n\nvar LegendComponent_stripHTMLTags = Utils_HTMLUtilities.stripHTMLTagsFromString, LegendComponent_addClass = Utils_HTMLUtilities.addClass, LegendComponent_removeClass = Utils_HTMLUtilities.removeClass;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction scrollLegendToItem(legend, itemIx) {\n    var itemPage = (legend.allItems[itemIx].legendItem || {}).pageIx,\n        curPage = legend.currentPage;\n    if (typeof itemPage !== 'undefined' && itemPage + 1 !== curPage) {\n        legend.scroll(1 + itemPage - curPage);\n    }\n}\n/**\n * @private\n */\nfunction shouldDoLegendA11y(chart) {\n    var items = chart.legend && chart.legend.allItems,\n        legendA11yOptions = (chart.options.legend.accessibility || {}),\n        unsupportedColorAxis = chart.colorAxis && chart.colorAxis.some(function (c) { return !c.dataClasses || !c.dataClasses.length; });\n    return !!(items && items.length &&\n        !unsupportedColorAxis &&\n        legendA11yOptions.enabled !== false);\n}\n/**\n * @private\n */\nfunction setLegendItemHoverState(hoverActive, item) {\n    var legendItem = item.legendItem || {};\n    item.setState(hoverActive ? 'hover' : '', true);\n    for (var _i = 0, _a = ['group', 'label', 'symbol']; _i < _a.length; _i++) {\n        var key = _a[_i];\n        var svgElement = legendItem[key];\n        var element = svgElement && svgElement.element || svgElement;\n        if (element) {\n            LegendComponent_fireEvent(element, hoverActive ? 'mouseover' : 'mouseout');\n        }\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The LegendComponent class\n *\n * @private\n * @class\n * @name Highcharts.LegendComponent\n */\nvar LegendComponent = /** @class */ (function (_super) {\n    LegendComponent_extends(LegendComponent, _super);\n    function LegendComponent() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        var _this = _super !== null && _super.apply(this,\n            arguments) || this;\n        _this.highlightedLegendItemIx = NaN;\n        _this.proxyGroup = null;\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Init the component\n     * @private\n     */\n    LegendComponent.prototype.init = function () {\n        var component = this;\n        this.recreateProxies();\n        // Note: Chart could create legend dynamically, so events cannot be\n        // tied to the component's chart's current legend.\n        // @todo 1. attach component to created legends\n        // @todo 2. move listeners to composition and access `this.component`\n        this.addEvent((highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_default()), 'afterScroll', function () {\n            if (this.chart === component.chart) {\n                component.proxyProvider.updateGroupProxyElementPositions('legend');\n                component.updateLegendItemProxyVisibility();\n                if (component.highlightedLegendItemIx > -1) {\n                    this.chart.highlightLegendItem(component.highlightedLegendItemIx);\n                }\n            }\n        });\n        this.addEvent((highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_default()), 'afterPositionItem', function (e) {\n            if (this.chart === component.chart && this.chart.renderer) {\n                component.updateProxyPositionForItem(e.item);\n            }\n        });\n        this.addEvent((highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_default()), 'afterRender', function () {\n            if (this.chart === component.chart &&\n                this.chart.renderer &&\n                component.recreateProxies()) {\n                syncTimeout(function () { return component.proxyProvider\n                    .updateGroupProxyElementPositions('legend'); }, animObject(LegendComponent_pick(this.chart.renderer.globalAnimation, true)).duration);\n            }\n        });\n    };\n    /**\n     * Update visibility of legend items when using paged legend\n     * @private\n     */\n    LegendComponent.prototype.updateLegendItemProxyVisibility = function () {\n        var chart = this.chart;\n        var legend = chart.legend;\n        var items = legend.allItems || [];\n        var curPage = legend.currentPage || 1;\n        var clipHeight = legend.clipHeight || 0;\n        var legendItem;\n        items.forEach(function (item) {\n            if (item.a11yProxyElement) {\n                var hasPages = legend.pages && legend.pages.length;\n                var proxyEl = item.a11yProxyElement.element;\n                var hide = false;\n                legendItem = item.legendItem || {};\n                if (hasPages) {\n                    var itemPage = legendItem.pageIx || 0;\n                    var y = legendItem.y || 0;\n                    var h = legendItem.label ?\n                            Math.round(legendItem.label.getBBox().height) :\n                            0;\n                    hide = y + h - legend.pages[itemPage] > clipHeight ||\n                        itemPage !== curPage - 1;\n                }\n                if (hide) {\n                    if (chart.styledMode) {\n                        LegendComponent_addClass(proxyEl, 'highcharts-a11y-invisible');\n                    }\n                    else {\n                        proxyEl.style.visibility = 'hidden';\n                    }\n                }\n                else {\n                    LegendComponent_removeClass(proxyEl, 'highcharts-a11y-invisible');\n                    proxyEl.style.visibility = '';\n                }\n            }\n        });\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.onChartRender = function () {\n        if (!shouldDoLegendA11y(this.chart)) {\n            this.removeProxies();\n        }\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.highlightAdjacentLegendPage = function (direction) {\n        var chart = this.chart;\n        var legend = chart.legend;\n        var curPageIx = legend.currentPage || 1;\n        var newPageIx = curPageIx + direction;\n        var pages = legend.pages || [];\n        if (newPageIx > 0 && newPageIx <= pages.length) {\n            var i = 0,\n                res = void 0;\n            for (var _i = 0, _a = legend.allItems; _i < _a.length; _i++) {\n                var item = _a[_i];\n                if (((item.legendItem || {}).pageIx || 0) + 1 === newPageIx) {\n                    res = chart.highlightLegendItem(i);\n                    if (res) {\n                        this.highlightedLegendItemIx = i;\n                    }\n                }\n                ++i;\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.updateProxyPositionForItem = function (item) {\n        if (item.a11yProxyElement) {\n            item.a11yProxyElement.refreshPosition();\n        }\n    };\n    /**\n     * Returns false if legend a11y is disabled and proxies were not created,\n     * true otherwise.\n     * @private\n     */\n    LegendComponent.prototype.recreateProxies = function () {\n        var focusedElement = LegendComponent_doc.activeElement;\n        var proxyGroup = this.proxyGroup;\n        var shouldRestoreFocus = focusedElement && proxyGroup &&\n                proxyGroup.contains(focusedElement);\n        this.removeProxies();\n        if (shouldDoLegendA11y(this.chart)) {\n            this.addLegendProxyGroup();\n            this.proxyLegendItems();\n            this.updateLegendItemProxyVisibility();\n            this.updateLegendTitle();\n            if (shouldRestoreFocus) {\n                this.chart.highlightLegendItem(this.highlightedLegendItemIx);\n            }\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.removeProxies = function () {\n        this.proxyProvider.removeGroup('legend');\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.updateLegendTitle = function () {\n        var chart = this.chart;\n        var legendTitle = LegendComponent_stripHTMLTags((chart.legend &&\n                chart.legend.options.title &&\n                chart.legend.options.title.text ||\n                '').replace(/<br ?\\/?>/g, ' '), chart.renderer.forExport);\n        var legendLabel = chart.langFormat('accessibility.legend.legendLabel' + (legendTitle ? '' : 'NoTitle'), {\n                chart: chart,\n                legendTitle: legendTitle,\n                chartTitle: LegendComponent_getChartTitle(chart)\n            });\n        this.proxyProvider.updateGroupAttrs('legend', {\n            'aria-label': legendLabel\n        });\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.addLegendProxyGroup = function () {\n        var a11yOptions = this.chart.options.accessibility;\n        var groupRole = a11yOptions.landmarkVerbosity === 'all' ?\n                'region' : null;\n        this.proxyGroup = this.proxyProvider.addGroup('legend', 'ul', {\n            // Filled by updateLegendTitle, to keep up to date without\n            // recreating group\n            'aria-label': '_placeholder_',\n            role: groupRole\n        });\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.proxyLegendItems = function () {\n        var component = this,\n            items = (this.chart.legend || {}).allItems || [];\n        var legendItem;\n        items.forEach(function (item) {\n            legendItem = item.legendItem || {};\n            if (legendItem.label && legendItem.label.element) {\n                component.proxyLegendItem(item);\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n     */\n    LegendComponent.prototype.proxyLegendItem = function (item) {\n        var legendItem = item.legendItem || {};\n        if (!legendItem.label || !legendItem.group) {\n            return;\n        }\n        var itemLabel = this.chart.langFormat('accessibility.legend.legendItem', {\n                chart: this.chart,\n                itemName: LegendComponent_stripHTMLTags(item.name,\n            this.chart.renderer.forExport),\n                item: item\n            });\n        var attribs = {\n                tabindex: -1,\n                'aria-pressed': item.visible,\n                'aria-label': itemLabel\n            };\n        // Considers useHTML\n        var proxyPositioningElement = legendItem.group.div ?\n                legendItem.label :\n                legendItem.group;\n        item.a11yProxyElement = this.proxyProvider.addProxyElement('legend', {\n            click: legendItem.label,\n            visual: proxyPositioningElement.element\n        }, 'button', attribs);\n    };\n    /**\n     * Get keyboard navigation handler for this component.\n     * @private\n     */\n    LegendComponent.prototype.getKeyboardNavigation = function () {\n        var keys = this.keyCodes,\n            component = this,\n            chart = this.chart;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [\n                [\n                    [keys.left, keys.right, keys.up, keys.down],\n                    function (keyCode) {\n                        return component.onKbdArrowKey(this, keyCode);\n                    }\n                ],\n                [\n                    [keys.enter, keys.space],\n                    function () {\n                        return component.onKbdClick(this);\n                    }\n                ],\n                [\n                    [keys.pageDown, keys.pageUp],\n                    function (keyCode) {\n                        var direction = keyCode === keys.pageDown ? 1 : -1;\n                        component.highlightAdjacentLegendPage(direction);\n                        return this.response.success;\n                    }\n                ]\n            ],\n            validate: function () {\n                return component.shouldHaveLegendNavigation();\n            },\n            init: function () {\n                chart.highlightLegendItem(0);\n                component.highlightedLegendItemIx = 0;\n            },\n            terminate: function () {\n                component.highlightedLegendItemIx = -1;\n                chart.legend.allItems.forEach(function (item) { return setLegendItemHoverState(false, item); });\n            }\n        });\n    };\n    /**\n     * Arrow key navigation\n     * @private\n     */\n    LegendComponent.prototype.onKbdArrowKey = function (keyboardNavigationHandler, key) {\n        var _a = this,\n            _b = _a.keyCodes,\n            left = _b.left,\n            up = _b.up,\n            highlightedLegendItemIx = _a.highlightedLegendItemIx,\n            chart = _a.chart,\n            numItems = chart.legend.allItems.length,\n            wrapAround = chart.options.accessibility\n                .keyboardNavigation.wrapAround,\n            direction = (key === left || key === up) ? -1 : 1,\n            res = chart.highlightLegendItem(highlightedLegendItemIx + direction);\n        if (res) {\n            this.highlightedLegendItemIx += direction;\n        }\n        else if (wrapAround && numItems > 1) {\n            this.highlightedLegendItemIx = direction > 0 ?\n                0 : numItems - 1;\n            chart.highlightLegendItem(this.highlightedLegendItemIx);\n        }\n        return keyboardNavigationHandler.response.success;\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler\n     * @return {number} Response code\n     */\n    LegendComponent.prototype.onKbdClick = function (keyboardNavigationHandler) {\n        var legendItem = this.chart.legend.allItems[this.highlightedLegendItemIx];\n        if (legendItem && legendItem.a11yProxyElement) {\n            legendItem.a11yProxyElement.click();\n        }\n        return keyboardNavigationHandler.response.success;\n    };\n    /**\n     * @private\n     */\n    LegendComponent.prototype.shouldHaveLegendNavigation = function () {\n        if (!shouldDoLegendA11y(this.chart)) {\n            return false;\n        }\n        var chart = this.chart,\n            legendOptions = chart.options.legend || {},\n            legendA11yOptions = (legendOptions.accessibility || {});\n        return !!(chart.legend.display &&\n            legendA11yOptions.keyboardNavigation &&\n            legendA11yOptions.keyboardNavigation.enabled);\n    };\n    /**\n     * Clean up\n     * @private\n     */\n    LegendComponent.prototype.destroy = function () {\n        this.removeProxies();\n    };\n    return LegendComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (LegendComponent) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Highlight legend item by index.\n     * @private\n     */\n    function chartHighlightLegendItem(ix) {\n        var items = this.legend.allItems;\n        var oldIx = this.accessibility &&\n                this.accessibility.components.legend.highlightedLegendItemIx;\n        var itemToHighlight = items[ix],\n            legendItem = (itemToHighlight === null || itemToHighlight === void 0 ? void 0 : itemToHighlight.legendItem) || {};\n        if (itemToHighlight) {\n            if (isNumber(oldIx) && items[oldIx]) {\n                setLegendItemHoverState(false, items[oldIx]);\n            }\n            scrollLegendToItem(this.legend, ix);\n            var legendItemProp = legendItem.label;\n            var proxyBtn = itemToHighlight.a11yProxyElement &&\n                    itemToHighlight.a11yProxyElement.innerElement;\n            if (legendItemProp && legendItemProp.element && proxyBtn) {\n                this.setFocusToElement(legendItemProp, proxyBtn);\n            }\n            setLegendItemHoverState(true, itemToHighlight);\n            return true;\n        }\n        return false;\n    }\n    /**\n     * @private\n     */\n    function compose(ChartClass, LegendClass) {\n        var chartProto = ChartClass.prototype;\n        if (!chartProto.highlightLegendItem) {\n            chartProto.highlightLegendItem = chartHighlightLegendItem;\n            LegendComponent_addEvent(LegendClass, 'afterColorizeItem', legendOnAfterColorizeItem);\n        }\n    }\n    LegendComponent.compose = compose;\n    /**\n     * Keep track of pressed state for legend items.\n     * @private\n     */\n    function legendOnAfterColorizeItem(e) {\n        var chart = this.chart,\n            a11yOptions = chart.options.accessibility,\n            legendItem = e.item;\n        if (a11yOptions.enabled && legendItem && legendItem.a11yProxyElement) {\n            legendItem.a11yProxyElement.innerElement.setAttribute('aria-pressed', e.visible ? 'true' : 'false');\n        }\n    }\n})(LegendComponent || (LegendComponent = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Components_LegendComponent = (LegendComponent);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Axis\"],\"commonjs\":[\"highcharts\",\"Axis\"],\"commonjs2\":[\"highcharts\",\"Axis\"],\"root\":[\"Highcharts\",\"Axis\"]}\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_ = __webpack_require__(532);\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default = /*#__PURE__*/__webpack_require__.n(highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_);\n;// ./code/es5/es-modules/Stock/Navigator/ChartNavigatorComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\nvar ChartNavigatorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, ChartNavigatorComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Constants\n *\n * */\nvar composedMembers = [];\n/* *\n *\n *  Variables\n *\n * */\nvar NavigatorConstructor;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction compose(ChartClass, NavigatorClass) {\n    if (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().pushUnique(composedMembers, ChartClass)) {\n        var chartProto = ChartClass.prototype;\n        NavigatorConstructor = NavigatorClass;\n        chartProto.callbacks.push(onChartCallback);\n        ChartNavigatorComposition_addEvent(ChartClass, 'afterAddSeries', onChartAfterAddSeries);\n        ChartNavigatorComposition_addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);\n        ChartNavigatorComposition_addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);\n        ChartNavigatorComposition_addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n        ChartNavigatorComposition_addEvent(ChartClass, 'beforeShowResetZoom', onChartBeforeShowResetZoom);\n        ChartNavigatorComposition_addEvent(ChartClass, 'update', onChartUpdate);\n    }\n}\n/**\n * Handle adding new series.\n * @private\n */\nfunction onChartAfterAddSeries() {\n    if (this.navigator) {\n        // Recompute which series should be shown in navigator, and add them\n        this.navigator.setBaseSeries(null, false);\n    }\n}\n/**\n * For stock charts, extend the Chart.setChartSize method so that we can set the\n * final top position of the navigator once the height of the chart, including\n * the legend, is determined. #367. We can't use Chart.getMargins, because\n * labels offsets are not calculated yet.\n * @private\n */\nfunction onChartAfterSetChartSize() {\n    var _a;\n    var legend = this.legend,\n        navigator = this.navigator;\n    var legendOptions,\n        xAxis,\n        yAxis;\n    if (navigator) {\n        legendOptions = legend && legend.options;\n        xAxis = navigator.xAxis;\n        yAxis = navigator.yAxis;\n        var scrollbarHeight = navigator.scrollbarHeight,\n            scrollButtonSize = navigator.scrollButtonSize;\n        // Compute the top position\n        if (this.inverted) {\n            navigator.left = navigator.opposite ?\n                this.chartWidth - scrollbarHeight -\n                    navigator.height :\n                this.spacing[3] + scrollbarHeight;\n            navigator.top = this.plotTop + scrollButtonSize;\n        }\n        else {\n            navigator.left = ChartNavigatorComposition_pick(xAxis.left, this.plotLeft + scrollButtonSize);\n            navigator.top = navigator.navigatorOptions.top ||\n                this.chartHeight -\n                    navigator.height -\n                    scrollbarHeight -\n                    (((_a = this.scrollbar) === null || _a === void 0 ? void 0 : _a.options.margin) || 0) -\n                    this.spacing[2] -\n                    (this.rangeSelector && this.extraBottomMargin ?\n                        this.rangeSelector.getHeight() :\n                        0) -\n                    ((legendOptions &&\n                        legendOptions.verticalAlign === 'bottom' &&\n                        legendOptions.layout !== 'proximate' && // #13392\n                        legendOptions.enabled &&\n                        !legendOptions.floating) ?\n                        legend.legendHeight +\n                            ChartNavigatorComposition_pick(legendOptions.margin, 10) :\n                        0) -\n                    (this.titleOffset ? this.titleOffset[2] : 0);\n        }\n        if (xAxis && yAxis) { // False if navigator is disabled (#904)\n            if (this.inverted) {\n                xAxis.options.left = yAxis.options.left = navigator.left;\n            }\n            else {\n                xAxis.options.top = yAxis.options.top = navigator.top;\n            }\n            xAxis.setAxisSize();\n            yAxis.setAxisSize();\n        }\n    }\n}\n/**\n * Initialize navigator, if no scrolling exists yet.\n * @private\n */\nfunction onChartAfterUpdate(event) {\n    if (!this.navigator && !this.scroller &&\n        (this.options.navigator.enabled ||\n            this.options.scrollbar.enabled)) {\n        this.scroller = this.navigator = new NavigatorConstructor(this);\n        if (ChartNavigatorComposition_pick(event.redraw, true)) {\n            this.redraw(event.animation); // #7067\n        }\n    }\n}\n/**\n * Initialize navigator for stock charts\n * @private\n */\nfunction onChartBeforeRender() {\n    var options = this.options;\n    if (options.navigator.enabled ||\n        options.scrollbar.enabled) {\n        this.scroller = this.navigator = new NavigatorConstructor(this);\n    }\n}\n/**\n * For Stock charts. For x only zooming, do not to create the zoom button\n * because X axis zooming is already allowed by the Navigator and Range\n * selector. (#9285)\n * @private\n */\nfunction onChartBeforeShowResetZoom() {\n    var chartOptions = this.options,\n        navigator = chartOptions.navigator,\n        rangeSelector = chartOptions.rangeSelector;\n    if (((navigator && navigator.enabled) ||\n        (rangeSelector && rangeSelector.enabled)) &&\n        ((!isTouchDevice &&\n            this.zooming.type === 'x') ||\n            (isTouchDevice && this.zooming.pinchType === 'x'))) {\n        return false;\n    }\n}\n/**\n * @private\n */\nfunction onChartCallback(chart) {\n    var navigator = chart.navigator;\n    // Initialize the navigator\n    if (navigator && chart.xAxis[0]) {\n        var extremes = chart.xAxis[0].getExtremes();\n        navigator.render(extremes.min, extremes.max);\n    }\n}\n/**\n * Merge options, if no scrolling exists yet\n * @private\n */\nfunction onChartUpdate(e) {\n    var navigatorOptions = (e.options.navigator || {}),\n        scrollbarOptions = (e.options.scrollbar || {});\n    if (!this.navigator && !this.scroller &&\n        (navigatorOptions.enabled || scrollbarOptions.enabled)) {\n        merge(true, this.options.navigator, navigatorOptions);\n        merge(true, this.options.scrollbar, scrollbarOptions);\n        delete e.options.navigator;\n        delete e.options.scrollbar;\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar ChartNavigatorComposition = {\n    compose: compose\n};\n/* harmony default export */ var Navigator_ChartNavigatorComposition = (ChartNavigatorComposition);\n\n;// ./code/es5/es-modules/Core/Axis/NavigatorAxisComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar NavigatorAxisComposition_isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\nvar NavigatorAxisComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, NavigatorAxisComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, NavigatorAxisComposition_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, NavigatorAxisComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction onAxisInit() {\n    var axis = this;\n    if (!axis.navigatorAxis) {\n        axis.navigatorAxis = new NavigatorAxisAdditions(axis);\n    }\n}\n/**\n * For Stock charts, override selection zooming with some special features\n * because X axis zooming is already allowed by the Navigator and Range\n * selector.\n * @private\n */\nfunction onAxisSetExtremes(e) {\n    var axis = this,\n        chart = axis.chart,\n        chartOptions = chart.options,\n        navigator = chartOptions.navigator,\n        navigatorAxis = axis.navigatorAxis,\n        pinchType = chart.zooming.pinchType,\n        rangeSelector = chartOptions.rangeSelector,\n        zoomType = chart.zooming.type;\n    var zoomed;\n    if (axis.isXAxis &&\n        ((navigator === null || navigator === void 0 ? void 0 : navigator.enabled) || (rangeSelector === null || rangeSelector === void 0 ? void 0 : rangeSelector.enabled))) {\n        // For y only zooming, ignore the X axis completely\n        if (zoomType === 'y' && e.trigger === 'zoom') {\n            zoomed = false;\n            // For xy zooming, record the state of the zoom before zoom selection,\n            // then when the reset button is pressed, revert to this state. This\n            // should apply only if the chart is initialized with a range (#6612),\n            // otherwise zoom all the way out.\n        }\n        else if (((e.trigger === 'zoom' && zoomType === 'xy') ||\n            (NavigatorAxisComposition_isTouchDevice && pinchType === 'xy')) &&\n            axis.options.range) {\n            var previousZoom = navigatorAxis.previousZoom;\n            // Minimum defined, zooming in\n            if (NavigatorAxisComposition_defined(e.min)) {\n                navigatorAxis.previousZoom = [axis.min, axis.max];\n                // Minimum undefined, resetting zoom\n            }\n            else if (previousZoom) {\n                e.min = previousZoom[0];\n                e.max = previousZoom[1];\n                navigatorAxis.previousZoom = void 0;\n            }\n        }\n    }\n    if (typeof zoomed !== 'undefined') {\n        e.preventDefault();\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nvar NavigatorAxisAdditions = /** @class */ (function () {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    function NavigatorAxisAdditions(axis) {\n        this.axis = axis;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    NavigatorAxisAdditions.compose = function (AxisClass) {\n        if (!AxisClass.keepProps.includes('navigatorAxis')) {\n            AxisClass.keepProps.push('navigatorAxis');\n            NavigatorAxisComposition_addEvent(AxisClass, 'init', onAxisInit);\n            NavigatorAxisComposition_addEvent(AxisClass, 'setExtremes', onAxisSetExtremes);\n        }\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    NavigatorAxisAdditions.prototype.destroy = function () {\n        this.axis = void 0;\n    };\n    /**\n     * Add logic to normalize the zoomed range in order to preserve the pressed\n     * state of range selector buttons\n     *\n     * @private\n     * @function Highcharts.Axis#toFixedRange\n     */\n    NavigatorAxisAdditions.prototype.toFixedRange = function (pxMin, pxMax, fixedMin, fixedMax) {\n        var axis = this.axis,\n            halfPointRange = (axis.pointRange || 0) / 2;\n        var newMin = NavigatorAxisComposition_pick(fixedMin,\n            axis.translate(pxMin,\n            true, !axis.horiz)),\n            newMax = NavigatorAxisComposition_pick(fixedMax,\n            axis.translate(pxMax,\n            true, !axis.horiz));\n        // Add/remove half point range to/from the extremes (#1172)\n        if (!NavigatorAxisComposition_defined(fixedMin)) {\n            newMin = correctFloat(newMin + halfPointRange);\n        }\n        if (!NavigatorAxisComposition_defined(fixedMax)) {\n            newMax = correctFloat(newMax - halfPointRange);\n        }\n        if (!NavigatorAxisComposition_isNumber(newMin) || !NavigatorAxisComposition_isNumber(newMax)) { // #1195, #7411\n            newMin = newMax = void 0;\n        }\n        return {\n            min: newMin,\n            max: newMax\n        };\n    };\n    return NavigatorAxisAdditions;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var NavigatorAxisComposition = (NavigatorAxisAdditions);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(239);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar seriesTypes = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n/* *\n *\n *  Constants\n *\n * */\n/**\n * The navigator is a small series below the main series, displaying\n * a view of the entire data set. It provides tools to zoom in and\n * out on parts of the data as well as panning across the dataset.\n *\n * @product      highstock gantt\n * @optionparent navigator\n */\nvar NavigatorDefaults = {\n    /**\n     * Whether the navigator and scrollbar should adapt to updated data\n     * in the base X axis. When loading data async, as in the demo below,\n     * this should be `false`. Otherwise new data will trigger navigator\n     * redraw, which will cause unwanted looping. In the demo below, the\n     * data in the navigator is set only once. On navigating, only the main\n     * chart content is updated.\n     *\n     * @sample {highstock} stock/demo/lazy-loading/\n     *         Set to false with async data loading\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption navigator.adaptToUpdatedData\n     */\n    /**\n     * An integer identifying the index to use for the base series, or a\n     * string representing the id of the series.\n     *\n     * **Note**: As of Highcharts 5.0, this is now a deprecated option.\n     * Prefer [series.showInNavigator](#plotOptions.series.showInNavigator).\n     *\n     * @see [series.showInNavigator](#plotOptions.series.showInNavigator)\n     *\n     * @deprecated\n     * @type      {number|string}\n     * @default   0\n     * @apioption navigator.baseSeries\n     */\n    /**\n     * Enable or disable the navigator.\n     *\n     * @sample {highstock} stock/navigator/enabled/\n     *         Disable the navigator\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption navigator.enabled\n     */\n    /**\n     * When the chart is inverted, whether to draw the navigator on the\n     * opposite side.\n     *\n     * @type      {boolean}\n     * @default   false\n     * @since     5.0.8\n     * @apioption navigator.opposite\n     */\n    /**\n     * The height of the navigator.\n     *\n     * @sample {highstock} stock/navigator/height/\n     *         A higher navigator\n     */\n    height: 40,\n    /**\n     * The distance from the nearest element, the X axis or X axis labels.\n     *\n     * @sample {highstock} stock/navigator/margin/\n     *         A margin of 2 draws the navigator closer to the X axis labels\n     */\n    margin: 25,\n    /**\n     * Whether the mask should be inside the range marking the zoomed\n     * range, or outside. In Highcharts Stock 1.x it was always `false`.\n     *\n     * @sample {highstock} stock/demo/maskinside-false/\n     *         False, mask outside\n     *\n     * @since   2.0\n     */\n    maskInside: true,\n    /**\n     * Options for the handles for dragging the zoomed area.\n     *\n     * @sample {highstock} stock/navigator/handles/\n     *         Colored handles\n     */\n    handles: {\n        /**\n         * Width for handles.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @since   6.0.0\n         */\n        width: 7,\n        /**\n         * Border radius of the handles.\n         *\n         * @sample {highstock} stock/navigator/handles-border-radius/\n         *      Border radius on the navigator handles.\n         *\n         * @since 11.4.2\n         */\n        borderRadius: 0,\n        /**\n         * Height for handles.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @since   6.0.0\n         */\n        height: 15,\n        /**\n         * Array to define shapes of handles. 0-index for left, 1-index for\n         * right.\n         *\n         * Additionally, the URL to a graphic can be given on this form:\n         * `url(graphic.png)`. Note that for the image to be applied to\n         * exported charts, its URL needs to be accessible by the export\n         * server.\n         *\n         * Custom callbacks for symbol path generation can also be added to\n         * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n         * used by its method name, as shown in the demo.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @type    {Array<string>}\n         * @default [\"navigator-handle\", \"navigator-handle\"]\n         * @since   6.0.0\n         */\n        symbols: ['navigator-handle', 'navigator-handle'],\n        /**\n         * Allows to enable/disable handles.\n         *\n         * @since   6.0.0\n         */\n        enabled: true,\n        /**\n         * The width for the handle border and the stripes inside.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @since     6.0.0\n         * @apioption navigator.handles.lineWidth\n         */\n        lineWidth: 1,\n        /**\n         * The fill for the handle.\n         *\n         * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         */\n        backgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n        /**\n         * The stroke for the handle border and the stripes inside.\n         *\n         * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         */\n        borderColor: \"#999999\" /* Palette.neutralColor40 */\n    },\n    /**\n     * The color of the mask covering the areas of the navigator series\n     * that are currently not visible in the main series. The default\n     * color is bluish with an opacity of 0.3 to see the series below.\n     *\n     * @see In styled mode, the mask is styled with the\n     *      `.highcharts-navigator-mask` and\n     *      `.highcharts-navigator-mask-inside` classes.\n     *\n     * @sample {highstock} stock/navigator/maskfill/\n     *         Blue, semi transparent mask\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default rgba(102,133,194,0.3)\n     */\n    maskFill: color(\"#667aff\" /* Palette.highlightColor60 */).setOpacity(0.3).get(),\n    /**\n     * The color of the line marking the currently zoomed area in the\n     * navigator.\n     *\n     * @sample {highstock} stock/navigator/outline/\n     *         2px blue outline\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default #cccccc\n     */\n    outlineColor: \"#999999\" /* Palette.neutralColor40 */,\n    /**\n     * The width of the line marking the currently zoomed area in the\n     * navigator.\n     *\n     * @see In styled mode, the outline stroke width is set with the\n     *      `.highcharts-navigator-outline` class.\n     *\n     * @sample {highstock} stock/navigator/outline/\n     *         2px blue outline\n     *\n     * @type    {number}\n     */\n    outlineWidth: 1,\n    /**\n     * Options for the navigator series. Available options are the same\n     * as any series, documented at [plotOptions](#plotOptions.series)\n     * and [series](#series).\n     *\n     * Unless data is explicitly defined on navigator.series, the data\n     * is borrowed from the first series in the chart.\n     *\n     * Default series options for the navigator series are:\n     * ```js\n     * series: {\n     *     type: 'areaspline',\n     *     fillOpacity: 0.05,\n     *     dataGrouping: {\n     *         smoothed: true\n     *     },\n     *     lineWidth: 1,\n     *     marker: {\n     *         enabled: false\n     *     }\n     * }\n     * ```\n     *\n     * @see In styled mode, the navigator series is styled with the\n     *      `.highcharts-navigator-series` class.\n     *\n     * @sample {highstock} stock/navigator/series-data/\n     *         Using a separate data set for the navigator\n     * @sample {highstock} stock/navigator/series/\n     *         A green navigator series\n     *\n     * @type {*|Array<*>|Highcharts.SeriesOptionsType|Array<Highcharts.SeriesOptionsType>}\n     */\n    series: {\n        /**\n         * The type of the navigator series.\n         *\n         * Heads up:\n         * In column-type navigator, zooming is limited to at least one\n         * point with its `pointRange`.\n         *\n         * @sample {highstock} stock/navigator/column/\n         *         Column type navigator\n         *\n         * @type    {string}\n         * @default {highstock} `areaspline` if defined, otherwise `line`\n         * @default {gantt} gantt\n         */\n        type: (typeof seriesTypes.areaspline === 'undefined' ?\n            'line' :\n            'areaspline'),\n        /**\n         * The fill opacity of the navigator series.\n         */\n        fillOpacity: 0.05,\n        /**\n         * The pixel line width of the navigator series.\n         */\n        lineWidth: 1,\n        /**\n         * @ignore-option\n         */\n        compare: null,\n        /**\n         * @ignore-option\n         */\n        sonification: {\n            enabled: false\n        },\n        /**\n         * Unless data is explicitly defined, the data is borrowed from the\n         * first series in the chart.\n         *\n         * @type      {Array<number|Array<number|string|null>|object|null>}\n         * @product   highstock\n         * @apioption navigator.series.data\n         */\n        /**\n         * Data grouping options for the navigator series.\n         *\n         * @extends plotOptions.series.dataGrouping\n         */\n        dataGrouping: {\n            approximation: 'average',\n            enabled: true,\n            groupPixelWidth: 2,\n            // Replace smoothed property by anchors, #12455.\n            firstAnchor: 'firstPoint',\n            anchor: 'middle',\n            lastAnchor: 'lastPoint',\n            // Day and week differs from plotOptions.series.dataGrouping\n            units: [\n                ['millisecond', [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]],\n                ['second', [1, 2, 5, 10, 15, 30]],\n                ['minute', [1, 2, 5, 10, 15, 30]],\n                ['hour', [1, 2, 3, 4, 6, 8, 12]],\n                ['day', [1, 2, 3, 4]],\n                ['week', [1, 2, 3]],\n                ['month', [1, 3, 6]],\n                ['year', null]\n            ]\n        },\n        /**\n         * Data label options for the navigator series. Data labels are\n         * disabled by default on the navigator series.\n         *\n         * @extends plotOptions.series.dataLabels\n         */\n        dataLabels: {\n            enabled: false,\n            zIndex: 2 // #1839\n        },\n        id: 'highcharts-navigator-series',\n        className: 'highcharts-navigator-series',\n        /**\n         * Sets the fill color of the navigator series.\n         *\n         * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         * @apioption navigator.series.color\n         */\n        /**\n         * Line color for the navigator series. Allows setting the color\n         * while disallowing the default candlestick setting.\n         *\n         * @type {Highcharts.ColorString|null}\n         */\n        lineColor: null, // #4602\n        marker: {\n            enabled: false\n        },\n        /**\n         * Since Highcharts Stock v8, default value is the same as default\n         * `pointRange` defined for a specific type (e.g. `null` for\n         * column type).\n         *\n         * In Highcharts Stock version < 8, defaults to 0.\n         *\n         * @extends plotOptions.series.pointRange\n         * @type {number|null}\n         * @apioption navigator.series.pointRange\n         */\n        /**\n         * The threshold option. Setting it to 0 will make the default\n         * navigator area series draw its area from the 0 value and up.\n         *\n         * @type {number|null}\n         */\n        threshold: null\n    },\n    /**\n     * Enable or disable navigator sticking to right, while adding new\n     * points. If `undefined`, the navigator sticks to the axis maximum only\n     * if it was already at the maximum prior to adding points.\n     *\n     * @type      {boolean}\n     * @default   undefined\n     * @since 10.2.1\n     * @sample {highstock} stock/navigator/sticktomax-false/\n     * stickToMax set to false\n     * @apioption navigator.stickToMax\n     */\n    /**\n     * Options for the navigator X axis. Default series options for the\n     * navigator xAxis are:\n     * ```js\n     * xAxis: {\n     *     tickWidth: 0,\n     *     lineWidth: 0,\n     *     gridLineWidth: 1,\n     *     tickPixelInterval: 200,\n     *     labels: {\n     *            align: 'left',\n     *         style: {\n     *             color: '#888'\n     *         },\n     *         x: 3,\n     *         y: -4\n     *     }\n     * }\n     * ```\n     *\n     * @extends   xAxis\n     * @excluding linkedTo, maxZoom, minRange, opposite, range, scrollbar,\n     *            showEmpty, maxRange\n     */\n    xAxis: {\n        /**\n         * Additional range on the right side of the xAxis. Works similar to\n         * `xAxis.maxPadding`, but the value is set in terms of axis values,\n         * percentage or pixels.\n         *\n         * If it's a number, it is interpreted as axis values, which in a\n         * datetime axis equals milliseconds.\n         *\n         * If it's a percentage string, is interpreted as percentages of the\n         * axis length. An overscroll of 50% will make a 100px axis 50px longer.\n         *\n         * If it's a pixel string, it is interpreted as a fixed pixel value, but\n         * limited to 90% of the axis length.\n         *\n         * If it's undefined, the value is inherited from `xAxis.overscroll`.\n         *\n         * Can be set for both, main xAxis and navigator's xAxis.\n         *\n         * @type    {number | string | undefined}\n         * @since   6.0.0\n         * @apioption navigator.xAxis.overscroll\n         */\n        className: 'highcharts-navigator-xaxis',\n        tickLength: 0,\n        lineWidth: 0,\n        gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n        id: 'navigator-x-axis',\n        gridLineWidth: 1,\n        tickPixelInterval: 200,\n        labels: {\n            align: 'left',\n            /**\n             * @type {Highcharts.CSSObject}\n             */\n            style: {\n                /** @ignore */\n                color: \"#000000\" /* Palette.neutralColor100 */,\n                /** @ignore */\n                fontSize: '0.7em',\n                /** @ignore */\n                opacity: 0.6,\n                /** @ignore */\n                textOutline: '2px contrast'\n            },\n            x: 3,\n            y: -4\n        },\n        crosshair: false\n    },\n    /**\n     * Options for the navigator Y axis. Default series options for the\n     * navigator yAxis are:\n     * ```js\n     * yAxis: {\n     *     gridLineWidth: 0,\n     *     startOnTick: false,\n     *     endOnTick: false,\n     *     minPadding: 0.1,\n     *     maxPadding: 0.1,\n     *     labels: {\n     *         enabled: false\n     *     },\n     *     title: {\n     *         text: null\n     *     },\n     *     tickWidth: 0\n     * }\n     * ```\n     *\n     * @extends   yAxis\n     * @excluding height, linkedTo, maxZoom, minRange, ordinal, range,\n     *            showEmpty, scrollbar, top, units, maxRange, minLength,\n     *            maxLength, resize\n     */\n    yAxis: {\n        className: 'highcharts-navigator-yaxis',\n        gridLineWidth: 0,\n        startOnTick: false,\n        endOnTick: false,\n        minPadding: 0.1,\n        id: 'navigator-y-axis',\n        maxPadding: 0.1,\n        labels: {\n            enabled: false\n        },\n        crosshair: false,\n        title: {\n            text: null\n        },\n        tickLength: 0,\n        tickWidth: 0\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Navigator_NavigatorDefaults = (NavigatorDefaults);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Maximum range which can be set using the navigator's handles.\n * Opposite of [xAxis.minRange](#xAxis.minRange).\n *\n * @sample {highstock} stock/navigator/maxrange/\n *         Defined max and min range\n *\n * @type      {number}\n * @since     6.0.0\n * @product   highstock gantt\n * @apioption xAxis.maxRange\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Core/Renderer/SVG/Symbols.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar Symbols_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Symbols_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Symbols_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable require-jsdoc, valid-jsdoc */\n/**\n *\n */\nfunction arc(cx, cy, w, h, options) {\n    var arc = [];\n    if (options) {\n        var start = options.start || 0,\n            rx = Symbols_pick(options.r,\n            w),\n            ry = Symbols_pick(options.r,\n            h || w), \n            // Subtract a small number to prevent cos and sin of start and end\n            // from becoming equal on 360 arcs (#1561). The size of the circle\n            // affects the constant, therefore the division by `rx`. If the\n            // proximity is too small, the arc disappears. If it is too great, a\n            // gap appears. This can be seen in the animation of the official\n            // bubble demo (#20586).\n            proximity = 0.0002 / (options.borderRadius ? 1 : Math.max(rx, 1)),\n            fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n                proximity),\n            end = (options.end || 0) - (fullCircle ? proximity : 0),\n            innerRadius = options.innerR,\n            open_1 = Symbols_pick(options.open,\n            fullCircle),\n            cosStart = Math.cos(start),\n            sinStart = Math.sin(start),\n            cosEnd = Math.cos(end),\n            sinEnd = Math.sin(end), \n            // Proximity takes care of rounding errors around PI (#6971)\n            longArc = Symbols_pick(options.longArc,\n            end - start - Math.PI < proximity ? 0 : 1);\n        var arcSegment = [\n                'A', // ArcTo\n                rx, // X radius\n                ry, // Y radius\n                0, // Slanting\n                longArc, // Long or short arc\n                Symbols_pick(options.clockwise, 1), // Clockwise\n                cx + rx * cosEnd,\n                cy + ry * sinEnd\n            ];\n        arcSegment.params = { start: start, end: end, cx: cx, cy: cy }; // Memo for border radius\n        arc.push([\n            'M',\n            cx + rx * cosStart,\n            cy + ry * sinStart\n        ], arcSegment);\n        if (Symbols_defined(innerRadius)) {\n            arcSegment = [\n                'A', // ArcTo\n                innerRadius, // X radius\n                innerRadius, // Y radius\n                0, // Slanting\n                longArc, // Long or short arc\n                // Clockwise - opposite to the outer arc clockwise\n                Symbols_defined(options.clockwise) ? 1 - options.clockwise : 0,\n                cx + innerRadius * cosStart,\n                cy + innerRadius * sinStart\n            ];\n            // Memo for border radius\n            arcSegment.params = {\n                start: end,\n                end: start,\n                cx: cx,\n                cy: cy\n            };\n            arc.push(open_1 ?\n                [\n                    'M',\n                    cx + innerRadius * cosEnd,\n                    cy + innerRadius * sinEnd\n                ] : [\n                'L',\n                cx + innerRadius * cosEnd,\n                cy + innerRadius * sinEnd\n            ], arcSegment);\n        }\n        if (!open_1) {\n            arc.push(['Z']);\n        }\n    }\n    return arc;\n}\n/**\n * Callout shape used for default tooltips.\n */\nfunction callout(x, y, w, h, options) {\n    var arrowLength = 6,\n        halfDistance = 6,\n        r = Math.min((options && options.r) || 0,\n        w,\n        h),\n        safeDistance = r + halfDistance,\n        anchorX = options && options.anchorX,\n        anchorY = options && options.anchorY || 0;\n    var path = roundedRect(x,\n        y,\n        w,\n        h, { r: r });\n    if (!Symbols_isNumber(anchorX)) {\n        return path;\n    }\n    // Do not render a connector, if anchor starts inside the label\n    if (anchorX < w && anchorX > 0 && anchorY < h && anchorY > 0) {\n        return path;\n    }\n    // Anchor on right side\n    if (x + anchorX > w - safeDistance) {\n        // Chevron\n        if (anchorY > y + safeDistance &&\n            anchorY < y + h - safeDistance) {\n            path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n            // Simple connector\n        }\n        else {\n            if (anchorX < w) { // Corner connector\n                var isTopCorner = anchorY < y + safeDistance,\n                    cornerY = isTopCorner ? y : y + h,\n                    sliceStart = isTopCorner ? 2 : 5;\n                path.splice(sliceStart, 0, ['L', anchorX, anchorY], ['L', x + w - r, cornerY]);\n            }\n            else { // Side connector\n                path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n            }\n        }\n        // Anchor on left side\n    }\n    else if (x + anchorX < safeDistance) {\n        // Chevron\n        if (anchorY > y + safeDistance &&\n            anchorY < y + h - safeDistance) {\n            path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n            // Simple connector\n        }\n        else {\n            if (anchorX > 0) { // Corner connector\n                var isTopCorner = anchorY < y + safeDistance,\n                    cornerY = isTopCorner ? y : y + h,\n                    sliceStart = isTopCorner ? 1 : 6;\n                path.splice(sliceStart, 0, ['L', anchorX, anchorY], ['L', x + r, cornerY]);\n            }\n            else { // Side connector\n                path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n            }\n        }\n    }\n    else if ( // Replace bottom\n    anchorY > h &&\n        anchorX < w - safeDistance) {\n        path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n    }\n    else if ( // Replace top\n    anchorY < 0 &&\n        anchorX > safeDistance) {\n        path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n    }\n    return path;\n}\n/**\n *\n */\nfunction circle(x, y, w, h) {\n    // Return a full arc\n    return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n        start: Math.PI * 0.5,\n        end: Math.PI * 2.5,\n        open: false\n    });\n}\n/**\n *\n */\nfunction diamond(x, y, w, h) {\n    return [\n        ['M', x + w / 2, y],\n        ['L', x + w, y + h / 2],\n        ['L', x + w / 2, y + h],\n        ['L', x, y + h / 2],\n        ['Z']\n    ];\n}\n// #15291\n/**\n *\n */\nfunction rect(x, y, w, h, options) {\n    if (options && options.r) {\n        return roundedRect(x, y, w, h, options);\n    }\n    return [\n        ['M', x, y],\n        ['L', x + w, y],\n        ['L', x + w, y + h],\n        ['L', x, y + h],\n        ['Z']\n    ];\n}\n/**\n *\n */\nfunction roundedRect(x, y, w, h, options) {\n    var r = (options === null || options === void 0 ? void 0 : options.r) || 0;\n    return [\n        ['M', x + r, y],\n        ['L', x + w - r, y], // Top side\n        ['A', r, r, 0, 0, 1, x + w, y + r], // Top-right corner\n        ['L', x + w, y + h - r], // Right side\n        ['A', r, r, 0, 0, 1, x + w - r, y + h], // Bottom-right corner\n        ['L', x + r, y + h], // Bottom side\n        ['A', r, r, 0, 0, 1, x, y + h - r], // Bottom-left corner\n        ['L', x, y + r], // Left side\n        ['A', r, r, 0, 0, 1, x + r, y],\n        ['Z'] // Top-left corner\n    ];\n}\n/**\n *\n */\nfunction triangle(x, y, w, h) {\n    return [\n        ['M', x + w / 2, y],\n        ['L', x + w, y + h],\n        ['L', x, y + h],\n        ['Z']\n    ];\n}\n/**\n *\n */\nfunction triangleDown(x, y, w, h) {\n    return [\n        ['M', x, y],\n        ['L', x + w, y],\n        ['L', x + w / 2, y + h],\n        ['Z']\n    ];\n}\nvar Symbols = {\n    arc: arc,\n    callout: callout,\n    circle: circle,\n    diamond: diamond,\n    rect: rect,\n    roundedRect: roundedRect,\n    square: rect,\n    triangle: triangle,\n    'triangle-down': triangleDown\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var SVG_Symbols = (Symbols);\n\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorSymbols.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\nvar relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n * @private\n */\nfunction navigatorHandle(_x, _y, width, height, options) {\n    if (options === void 0) { options = {}; }\n    var halfWidth = options.width ? options.width / 2 : width,\n        markerPosition = 1.5,\n        r = relativeLength(options.borderRadius || 0,\n        Math.min(halfWidth * 2,\n        height));\n    height = options.height || height;\n    return __spreadArray([\n        ['M', -markerPosition, height / 2 - 3.5],\n        ['L', -markerPosition, height / 2 + 4.5],\n        ['M', markerPosition - 1, height / 2 - 3.5],\n        ['L', markerPosition - 1, height / 2 + 4.5]\n    ], SVG_Symbols.rect(-halfWidth - 1, 0.5, halfWidth * 2 + 1, height, { r: r }), true);\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar NavigatorSymbols = {\n    'navigator-handle': navigatorHandle\n};\n/* harmony default export */ var Navigator_NavigatorSymbols = (NavigatorSymbols);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"RendererRegistry\"],\"commonjs\":[\"highcharts\",\"RendererRegistry\"],\"commonjs2\":[\"highcharts\",\"RendererRegistry\"],\"root\":[\"Highcharts\",\"RendererRegistry\"]}\nvar highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_ = __webpack_require__(608);\nvar highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_);\n;// ./code/es5/es-modules/Stock/Utilities/StockUtilities.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar StockUtilities_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Sets the chart.fixedRange to the specified value. If the value is larger\n * than actual range, sets it to the maximum possible range. (#20327)\n *\n * @private\n * @function Highcharts.StockChart#setFixedRange\n * @param {number|undefined} range\n *        Range to set in axis units.\n */\nfunction setFixedRange(range) {\n    var xAxis = this.xAxis[0];\n    if (StockUtilities_defined(xAxis.dataMax) &&\n        StockUtilities_defined(xAxis.dataMin) &&\n        range) {\n        this.fixedRange = Math.min(range, xAxis.dataMax - xAxis.dataMin);\n    }\n    else {\n        this.fixedRange = range;\n    }\n}\nvar StockUtilities = {\n    setFixedRange: setFixedRange\n};\n/* harmony default export */ var Utilities_StockUtilities = (StockUtilities);\n\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar setOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setOptions;\n\nvar composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\n\n\nvar getRendererType = (highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default()).getRendererType;\n\nvar NavigatorComposition_setFixedRange = Utilities_StockUtilities.setFixedRange;\n\nvar NavigatorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Variables\n *\n * */\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction NavigatorComposition_compose(ChartClass, AxisClass, SeriesClass) {\n    NavigatorAxisComposition.compose(AxisClass);\n    if (pushUnique(composed, 'Navigator')) {\n        ChartClass.prototype.setFixedRange = NavigatorComposition_setFixedRange;\n        extend(getRendererType().prototype.symbols, Navigator_NavigatorSymbols);\n        NavigatorComposition_addEvent(SeriesClass, 'afterUpdate', onSeriesAfterUpdate);\n        setOptions({ navigator: Navigator_NavigatorDefaults });\n    }\n}\n/**\n * Handle updating series\n * @private\n */\nfunction onSeriesAfterUpdate() {\n    if (this.chart.navigator && !this.options.isInternal) {\n        this.chart.navigator.setBaseSeries(null, false);\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar NavigatorComposition = {\n    compose: NavigatorComposition_compose\n};\n/* harmony default export */ var Navigator_NavigatorComposition = (NavigatorComposition);\n\n;// ./code/es5/es-modules/Core/Axis/ScrollbarAxis.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ScrollbarAxis_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar ScrollbarAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, ScrollbarAxis_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, ScrollbarAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, ScrollbarAxis_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Composition\n *\n * */\nvar ScrollbarAxis;\n(function (ScrollbarAxis) {\n    /* *\n     *\n     *  Variables\n     *\n     * */\n    var Scrollbar;\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Attaches to axis events to create scrollbars if enabled.\n     *\n     * @private\n     *\n     * @param {Highcharts.Axis} AxisClass\n     * Axis class to extend.\n     *\n     * @param {Highcharts.Scrollbar} ScrollbarClass\n     * Scrollbar class to use.\n     */\n    function compose(AxisClass, ScrollbarClass) {\n        if (ScrollbarAxis_pushUnique(ScrollbarAxis_composed, 'Axis.Scrollbar')) {\n            Scrollbar = ScrollbarClass;\n            ScrollbarAxis_addEvent(AxisClass, 'afterGetOffset', onAxisAfterGetOffset);\n            ScrollbarAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n            ScrollbarAxis_addEvent(AxisClass, 'afterRender', onAxisAfterRender);\n        }\n    }\n    ScrollbarAxis.compose = compose;\n    /** @private */\n    function getExtremes(axis) {\n        var axisMin = ScrollbarAxis_pick(axis.options && axis.options.min,\n            axis.min);\n        var axisMax = ScrollbarAxis_pick(axis.options && axis.options.max,\n            axis.max);\n        return {\n            axisMin: axisMin,\n            axisMax: axisMax,\n            scrollMin: ScrollbarAxis_defined(axis.dataMin) ?\n                Math.min(axisMin, axis.min, axis.dataMin, ScrollbarAxis_pick(axis.threshold, Infinity)) : axisMin,\n            scrollMax: ScrollbarAxis_defined(axis.dataMax) ?\n                Math.max(axisMax, axis.max, axis.dataMax, ScrollbarAxis_pick(axis.threshold, -Infinity)) : axisMax\n        };\n    }\n    /**\n     * Make space for a scrollbar.\n     * @private\n     */\n    function onAxisAfterGetOffset() {\n        var axis = this,\n            scrollbar = axis.scrollbar,\n            opposite = scrollbar && !scrollbar.options.opposite,\n            index = axis.horiz ? 2 : opposite ? 3 : 1;\n        if (scrollbar) {\n            // Reset scrollbars offsets\n            axis.chart.scrollbarsOffsets = [0, 0];\n            axis.chart.axisOffset[index] +=\n                scrollbar.size + (scrollbar.options.margin || 0);\n        }\n    }\n    /**\n     * Wrap axis initialization and create scrollbar if enabled.\n     * @private\n     */\n    function onAxisAfterInit() {\n        var axis = this;\n        if (axis.options &&\n            axis.options.scrollbar &&\n            axis.options.scrollbar.enabled) {\n            // Predefined options:\n            axis.options.scrollbar.vertical = !axis.horiz;\n            axis.options.startOnTick = axis.options.endOnTick = false;\n            axis.scrollbar = new Scrollbar(axis.chart.renderer, axis.options.scrollbar, axis.chart);\n            ScrollbarAxis_addEvent(axis.scrollbar, 'changed', function (e) {\n                var _a = getExtremes(axis),\n                    axisMin = _a.axisMin,\n                    axisMax = _a.axisMax,\n                    unitedMin = _a.scrollMin,\n                    unitedMax = _a.scrollMax,\n                    range = unitedMax - unitedMin;\n                var to,\n                    from;\n                // #12834, scroll when show/hide series, wrong extremes\n                if (!ScrollbarAxis_defined(axisMin) || !ScrollbarAxis_defined(axisMax)) {\n                    return;\n                }\n                if ((axis.horiz && !axis.reversed) ||\n                    (!axis.horiz && axis.reversed)) {\n                    to = unitedMin + range * this.to;\n                    from = unitedMin + range * this.from;\n                }\n                else {\n                    // Y-values in browser are reversed, but this also\n                    // applies for reversed horizontal axis:\n                    to = unitedMin + range * (1 - this.from);\n                    from = unitedMin + range * (1 - this.to);\n                }\n                if (this.shouldUpdateExtremes(e.DOMType)) {\n                    // #17977, set animation to undefined instead of true\n                    var animate = e.DOMType === 'mousemove' ||\n                            e.DOMType === 'touchmove' ? false : void 0;\n                    axis.setExtremes(from, to, true, animate, e);\n                }\n                else {\n                    // When live redraw is disabled, don't change extremes\n                    // Only change the position of the scrollbar thumb\n                    this.setRange(this.from, this.to);\n                }\n            });\n        }\n    }\n    /**\n     * Wrap rendering axis, and update scrollbar if one is created.\n     * @private\n     */\n    function onAxisAfterRender() {\n        var axis = this,\n            _a = getExtremes(axis),\n            scrollMin = _a.scrollMin,\n            scrollMax = _a.scrollMax,\n            scrollbar = axis.scrollbar,\n            offset = (axis.axisTitleMargin + (axis.titleOffset || 0)),\n            scrollbarsOffsets = axis.chart.scrollbarsOffsets,\n            axisMargin = axis.options.margin || 0;\n        var offsetsIndex,\n            from,\n            to;\n        if (scrollbar && scrollbarsOffsets) {\n            if (axis.horiz) {\n                // Reserve space for labels/title\n                if (!axis.opposite) {\n                    scrollbarsOffsets[1] += offset;\n                }\n                scrollbar.position(axis.left, (axis.top +\n                    axis.height +\n                    2 +\n                    scrollbarsOffsets[1] -\n                    (axis.opposite ? axisMargin : 0)), axis.width, axis.height);\n                // Next scrollbar should reserve space for margin (if set)\n                if (!axis.opposite) {\n                    scrollbarsOffsets[1] += axisMargin;\n                }\n                offsetsIndex = 1;\n            }\n            else {\n                // Reserve space for labels/title\n                if (axis.opposite) {\n                    scrollbarsOffsets[0] += offset;\n                }\n                var xPosition = void 0;\n                if (!scrollbar.options.opposite) {\n                    xPosition = axis.opposite ? 0 : axisMargin;\n                }\n                else {\n                    xPosition = axis.left +\n                        axis.width +\n                        2 +\n                        scrollbarsOffsets[0] -\n                        (axis.opposite ? 0 : axisMargin);\n                }\n                scrollbar.position(xPosition, axis.top, axis.width, axis.height);\n                // Next scrollbar should reserve space for margin (if set)\n                if (axis.opposite) {\n                    scrollbarsOffsets[0] += axisMargin;\n                }\n                offsetsIndex = 0;\n            }\n            scrollbarsOffsets[offsetsIndex] += scrollbar.size +\n                (scrollbar.options.margin || 0);\n            if (isNaN(scrollMin) ||\n                isNaN(scrollMax) ||\n                !ScrollbarAxis_defined(axis.min) ||\n                !ScrollbarAxis_defined(axis.max) ||\n                axis.dataMin === axis.dataMax // #10733\n            ) {\n                // Default action: when data extremes are the same or there is\n                // not extremes on the axis, but scrollbar exists, make it\n                // full size\n                scrollbar.setRange(0, 1);\n            }\n            else if (axis.min === axis.max) { // #20359\n                // When the extremes are the same, set the scrollbar to a point\n                // within the extremes range. Utilize pointRange to perform the\n                // calculations. (#20359)\n                var interval = axis.pointRange / (axis.dataMax +\n                        1);\n                from = interval * axis.min;\n                to = interval * (axis.max + 1);\n                scrollbar.setRange(from, to);\n            }\n            else {\n                from = ((axis.min - scrollMin) /\n                    (scrollMax - scrollMin));\n                to = ((axis.max - scrollMin) /\n                    (scrollMax - scrollMin));\n                if ((axis.horiz && !axis.reversed) ||\n                    (!axis.horiz && axis.reversed)) {\n                    scrollbar.setRange(from, to);\n                }\n                else {\n                    // Inverse vertical axis\n                    scrollbar.setRange(1 - to, 1 - from);\n                }\n            }\n        }\n    }\n})(ScrollbarAxis || (ScrollbarAxis = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Axis_ScrollbarAxis = (ScrollbarAxis);\n\n;// ./code/es5/es-modules/Stock/Scrollbar/ScrollbarDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constant\n *\n * */\n/**\n *\n * The scrollbar is a means of panning over the X axis of a stock chart.\n * Scrollbars can also be applied to other types of axes.\n *\n * Another approach to scrollable charts is the [chart.scrollablePlotArea](\n * https://api.highcharts.com/highcharts/chart.scrollablePlotArea) option that\n * is especially suitable for simpler cartesian charts on mobile.\n *\n * In styled mode, all the presentational options for the\n * scrollbar are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample stock/yaxis/inverted-bar-scrollbar/\n *         A scrollbar on a simple bar chart\n *\n * @product highstock gantt\n * @optionparent scrollbar\n *\n * @private\n */\nvar ScrollbarDefaults = {\n    /**\n     * The height of the scrollbar. If `buttonsEnabled` is true , the height\n     * also applies to the width of the scroll arrows so that they are always\n     * squares.\n     *\n     * @sample stock/scrollbar/style/\n     *         Non-default height\n     *\n     * @type    {number}\n     */\n    height: 10,\n    /**\n     * The border rounding radius of the bar.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    barBorderRadius: 5,\n    /**\n     * The corner radius of the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    buttonBorderRadius: 0,\n    /**\n     * Enable or disable the buttons at the end of the scrollbar.\n     *\n     * @since 11.0.0\n     */\n    buttonsEnabled: false,\n    /**\n     * Enable or disable the scrollbar.\n     *\n     * @sample stock/scrollbar/enabled/\n     *         Disable the scrollbar, only use navigator\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption scrollbar.enabled\n     */\n    /**\n     * Whether to redraw the main chart as the scrollbar or the navigator\n     * zoomed window is moved. Defaults to `true` for modern browsers and\n     * `false` for legacy IE browsers as well as mobile devices.\n     *\n     * @sample stock/scrollbar/liveredraw\n     *         Setting live redraw to false\n     *\n     * @type  {boolean}\n     * @since 1.3\n     */\n    liveRedraw: void 0,\n    /**\n     * The margin between the scrollbar and its axis when the scrollbar is\n     * applied directly to an axis, or the navigator in case that is enabled.\n     * Defaults to 10 for axis, 0 for navigator.\n     *\n     * @type {number|undefined}\n     */\n    margin: void 0,\n    /**\n     * The minimum width of the scrollbar.\n     *\n     * @since 1.2.5\n     */\n    minWidth: 6,\n    /** @ignore-option */\n    opposite: true,\n    /**\n     * Whether to show or hide the scrollbar when the scrolled content is\n     * zoomed out to it full extent.\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption scrollbar.showFull\n     */\n    step: 0.2,\n    /**\n     * The z index of the scrollbar group.\n     */\n    zIndex: 3,\n    /**\n     * The background color of the scrollbar itself.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    barBackgroundColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The width of the bar's border.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    barBorderWidth: 0,\n    /**\n     * The color of the scrollbar's border.\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    barBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The color of the small arrow inside the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    buttonArrowColor: \"#333333\" /* Palette.neutralColor80 */,\n    /**\n     * The color of scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    buttonBackgroundColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n    /**\n     * The color of the border of the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    buttonBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The border width of the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    buttonBorderWidth: 1,\n    /**\n     * The color of the small rifles in the middle of the scrollbar.\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    rifleColor: 'none',\n    /**\n     * The color of the track background.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    trackBackgroundColor: 'rgba(255, 255, 255, 0.001)', // #18922\n    /**\n     * The color of the border of the scrollbar track.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    trackBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The corner radius of the border of the scrollbar track.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    trackBorderRadius: 5,\n    /**\n     * The width of the border of the scrollbar track.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    trackBorderWidth: 1\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Scrollbar_ScrollbarDefaults = (ScrollbarDefaults);\n\n;// ./code/es5/es-modules/Stock/Scrollbar/Scrollbar.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\n\n\n\nvar Scrollbar_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, Scrollbar_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, Scrollbar_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, Scrollbar_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, Scrollbar_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, Scrollbar_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent;\n/* *\n *\n *  Constants\n *\n * */\n/* eslint-disable no-invalid-this, valid-jsdoc */\n/**\n * A reusable scrollbar, internally used in Highcharts Stock's\n * navigator and optionally on individual axes.\n *\n * @private\n * @class\n * @name Highcharts.Scrollbar\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\nvar Scrollbar = /** @class */ (function () {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    function Scrollbar(renderer, options, chart) {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this._events = [];\n        this.chartX = 0;\n        this.chartY = 0;\n        this.from = 0;\n        this.scrollbarButtons = [];\n        this.scrollbarLeft = 0;\n        this.scrollbarStrokeWidth = 1;\n        this.scrollbarTop = 0;\n        this.size = 0;\n        this.to = 0;\n        this.trackBorderWidth = 1;\n        this.x = 0;\n        this.y = 0;\n        this.init(renderer, options, chart);\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    Scrollbar.compose = function (AxisClass) {\n        Axis_ScrollbarAxis.compose(AxisClass, Scrollbar);\n    };\n    /**\n     * When we have vertical scrollbar, rifles and arrow in buttons should be\n     * rotated. The same method is used in Navigator's handles, to rotate them.\n     *\n     * @function Highcharts.swapXY\n     *\n     * @param {Highcharts.SVGPathArray} path\n     * Path to be rotated.\n     *\n     * @param {boolean} [vertical]\n     * If vertical scrollbar, swap x-y values.\n     *\n     * @return {Highcharts.SVGPathArray}\n     * Rotated path.\n     *\n     * @requires modules/stock\n     */\n    Scrollbar.swapXY = function (path, vertical) {\n        if (vertical) {\n            path.forEach(function (seg) {\n                var len = seg.length;\n                var temp;\n                for (var i = 0; i < len; i += 2) {\n                    temp = seg[i + 1];\n                    if (typeof temp === 'number') {\n                        seg[i + 1] = seg[i + 2];\n                        seg[i + 2] = temp;\n                    }\n                }\n            });\n        }\n        return path;\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Set up the mouse and touch events for the Scrollbar\n     *\n     * @private\n     * @function Highcharts.Scrollbar#addEvents\n     */\n    Scrollbar.prototype.addEvents = function () {\n        var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],\n            buttons = this.scrollbarButtons,\n            bar = this.scrollbarGroup.element,\n            track = this.track.element,\n            mouseDownHandler = this.mouseDownHandler.bind(this),\n            mouseMoveHandler = this.mouseMoveHandler.bind(this),\n            mouseUpHandler = this.mouseUpHandler.bind(this);\n        var _events = [\n                // Mouse events\n                [\n                    buttons[buttonsOrder[0]].element,\n                    'click',\n                    this.buttonToMinClick.bind(this)\n                ],\n                [\n                    buttons[buttonsOrder[1]].element,\n                    'click',\n                    this.buttonToMaxClick.bind(this)\n                ],\n                [track, 'click',\n            this.trackClick.bind(this)],\n                [bar, 'mousedown',\n            mouseDownHandler],\n                [bar.ownerDocument, 'mousemove',\n            mouseMoveHandler],\n                [bar.ownerDocument, 'mouseup',\n            mouseUpHandler],\n                // Touch events\n                [bar, 'touchstart',\n            mouseDownHandler],\n                [bar.ownerDocument, 'touchmove',\n            mouseMoveHandler],\n                [bar.ownerDocument, 'touchend',\n            mouseUpHandler]\n            ];\n        // Add them all\n        _events.forEach(function (args) {\n            Scrollbar_addEvent.apply(null, args);\n        });\n        this._events = _events;\n    };\n    Scrollbar.prototype.buttonToMaxClick = function (e) {\n        var scroller = this;\n        var range = ((scroller.to - scroller.from) *\n                Scrollbar_pick(scroller.options.step, 0.2));\n        scroller.updatePosition(scroller.from + range, scroller.to + range);\n        Scrollbar_fireEvent(scroller, 'changed', {\n            from: scroller.from,\n            to: scroller.to,\n            trigger: 'scrollbar',\n            DOMEvent: e\n        });\n    };\n    Scrollbar.prototype.buttonToMinClick = function (e) {\n        var scroller = this;\n        var range = Scrollbar_correctFloat(scroller.to - scroller.from) *\n                Scrollbar_pick(scroller.options.step, 0.2);\n        scroller.updatePosition(Scrollbar_correctFloat(scroller.from - range), Scrollbar_correctFloat(scroller.to - range));\n        Scrollbar_fireEvent(scroller, 'changed', {\n            from: scroller.from,\n            to: scroller.to,\n            trigger: 'scrollbar',\n            DOMEvent: e\n        });\n    };\n    /**\n     * Get normalized (0-1) cursor position over the scrollbar\n     *\n     * @private\n     * @function Highcharts.Scrollbar#cursorToScrollbarPosition\n     *\n     * @param  {*} normalizedEvent\n     *         normalized event, with chartX and chartY values\n     *\n     * @return {Highcharts.Dictionary<number>}\n     *         Local position {chartX, chartY}\n     */\n    Scrollbar.prototype.cursorToScrollbarPosition = function (normalizedEvent) {\n        var scroller = this,\n            options = scroller.options,\n            minWidthDifference = options.minWidth > scroller.calculatedWidth ?\n                options.minWidth :\n                0; // `minWidth` distorts translation\n            return {\n                chartX: (normalizedEvent.chartX - scroller.x -\n                    scroller.xOffset) /\n                    (scroller.barWidth - minWidthDifference),\n                chartY: (normalizedEvent.chartY - scroller.y -\n                    scroller.yOffset) /\n                    (scroller.barWidth - minWidthDifference)\n            };\n    };\n    /**\n     * Destroys allocated elements.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#destroy\n     */\n    Scrollbar.prototype.destroy = function () {\n        var scroller = this,\n            navigator = scroller.chart.scroller;\n        // Disconnect events added in addEvents\n        scroller.removeEvents();\n        // Destroy properties\n        [\n            'track',\n            'scrollbarRifles',\n            'scrollbar',\n            'scrollbarGroup',\n            'group'\n        ].forEach(function (prop) {\n            if (scroller[prop] && scroller[prop].destroy) {\n                scroller[prop] = scroller[prop].destroy();\n            }\n        });\n        // #6421, chart may have more scrollbars\n        if (navigator && scroller === navigator.scrollbar) {\n            navigator.scrollbar = null;\n            // Destroy elements in collection\n            destroyObjectProperties(navigator.scrollbarButtons);\n        }\n    };\n    /**\n     * Draw the scrollbar buttons with arrows\n     *\n     * @private\n     * @function Highcharts.Scrollbar#drawScrollbarButton\n     * @param {number} index\n     *        0 is left, 1 is right\n     */\n    Scrollbar.prototype.drawScrollbarButton = function (index) {\n        var scroller = this,\n            renderer = scroller.renderer,\n            scrollbarButtons = scroller.scrollbarButtons,\n            options = scroller.options,\n            size = scroller.size,\n            group = renderer.g().add(scroller.group);\n        scrollbarButtons.push(group);\n        if (options.buttonsEnabled) {\n            // Create a rectangle for the scrollbar button\n            var rect = renderer.rect()\n                    .addClass('highcharts-scrollbar-button')\n                    .add(group);\n            // Presentational attributes\n            if (!scroller.chart.styledMode) {\n                rect.attr({\n                    stroke: options.buttonBorderColor,\n                    'stroke-width': options.buttonBorderWidth,\n                    fill: options.buttonBackgroundColor\n                });\n            }\n            // Place the rectangle based on the rendered stroke width\n            rect.attr(rect.crisp({\n                x: -0.5,\n                y: -0.5,\n                width: size,\n                height: size,\n                r: options.buttonBorderRadius\n            }, rect.strokeWidth()));\n            // Button arrow\n            var arrow = renderer\n                    .path(Scrollbar.swapXY([[\n                        'M',\n                        size / 2 + (index ? -1 : 1),\n                        size / 2 - 3\n                    ],\n                [\n                        'L',\n                        size / 2 + (index ? -1 : 1),\n                        size / 2 + 3\n                    ],\n                [\n                        'L',\n                        size / 2 + (index ? 2 : -2),\n                        size / 2\n                    ]],\n                options.vertical))\n                    .addClass('highcharts-scrollbar-arrow')\n                    .add(scrollbarButtons[index]);\n            if (!scroller.chart.styledMode) {\n                arrow.attr({\n                    fill: options.buttonArrowColor\n                });\n            }\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.Scrollbar#init\n     * @param {Highcharts.SVGRenderer} renderer\n     * @param {Highcharts.ScrollbarOptions} options\n     * @param {Highcharts.Chart} chart\n     */\n    Scrollbar.prototype.init = function (renderer, options, chart) {\n        var scroller = this;\n        scroller.scrollbarButtons = [];\n        scroller.renderer = renderer;\n        scroller.userOptions = options;\n        scroller.options = Scrollbar_merge(Scrollbar_ScrollbarDefaults, defaultOptions.scrollbar, options);\n        scroller.options.margin = Scrollbar_pick(scroller.options.margin, 10);\n        scroller.chart = chart;\n        // Backward compatibility\n        scroller.size = Scrollbar_pick(scroller.options.size, scroller.options.height);\n        // Init\n        if (options.enabled) {\n            scroller.render();\n            scroller.addEvents();\n        }\n    };\n    Scrollbar.prototype.mouseDownHandler = function (e) {\n        var _a;\n        var scroller = this,\n            normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n            mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);\n        scroller.chartX = mousePosition.chartX;\n        scroller.chartY = mousePosition.chartY;\n        scroller.initPositions = [scroller.from, scroller.to];\n        scroller.grabbedCenter = true;\n    };\n    /**\n     * Event handler for the mouse move event.\n     * @private\n     */\n    Scrollbar.prototype.mouseMoveHandler = function (e) {\n        var _a;\n        var scroller = this,\n            normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n            options = scroller.options,\n            direction = options.vertical ?\n                'chartY' : 'chartX',\n            initPositions = scroller.initPositions || [];\n        var scrollPosition,\n            chartPosition,\n            change;\n        // In iOS, a mousemove event with e.pageX === 0 is fired when\n        // holding the finger down in the center of the scrollbar. This\n        // should be ignored.\n        if (scroller.grabbedCenter &&\n            // #4696, scrollbar failed on Android\n            (!e.touches || e.touches[0][direction] !== 0)) {\n            chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];\n            scrollPosition = scroller[direction];\n            change = chartPosition - scrollPosition;\n            scroller.hasDragged = true;\n            scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);\n            if (scroller.hasDragged) {\n                Scrollbar_fireEvent(scroller, 'changed', {\n                    from: scroller.from,\n                    to: scroller.to,\n                    trigger: 'scrollbar',\n                    DOMType: e.type,\n                    DOMEvent: e\n                });\n            }\n        }\n    };\n    /**\n     * Event handler for the mouse up event.\n     * @private\n     */\n    Scrollbar.prototype.mouseUpHandler = function (e) {\n        var scroller = this;\n        if (scroller.hasDragged) {\n            Scrollbar_fireEvent(scroller, 'changed', {\n                from: scroller.from,\n                to: scroller.to,\n                trigger: 'scrollbar',\n                DOMType: e.type,\n                DOMEvent: e\n            });\n        }\n        scroller.grabbedCenter =\n            scroller.hasDragged =\n                scroller.chartX =\n                    scroller.chartY = null;\n    };\n    /**\n     * Position the scrollbar, method called from a parent with defined\n     * dimensions.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#position\n     * @param {number} x\n     *        x-position on the chart\n     * @param {number} y\n     *        y-position on the chart\n     * @param {number} width\n     *        width of the scrollbar\n     * @param {number} height\n     *        height of the scrollbar\n     */\n    Scrollbar.prototype.position = function (x, y, width, height) {\n        var scroller = this,\n            options = scroller.options,\n            buttonsEnabled = options.buttonsEnabled,\n            _a = options.margin,\n            margin = _a === void 0 ? 0 : _a,\n            vertical = options.vertical,\n            method = scroller.rendered ? 'animate' : 'attr';\n        var xOffset = height,\n            yOffset = 0;\n        // Make the scrollbar visible when it is repositioned, #15763.\n        scroller.group.show();\n        scroller.x = x;\n        scroller.y = y + this.trackBorderWidth;\n        scroller.width = width; // Width with buttons\n        scroller.height = height;\n        scroller.xOffset = xOffset;\n        scroller.yOffset = yOffset;\n        // If Scrollbar is a vertical type, swap options:\n        if (vertical) {\n            scroller.width = scroller.yOffset = width = yOffset = scroller.size;\n            scroller.xOffset = xOffset = 0;\n            scroller.yOffset = yOffset = buttonsEnabled ? scroller.size : 0;\n            // Width without buttons\n            scroller.barWidth = height - (buttonsEnabled ? width * 2 : 0);\n            scroller.x = x = x + margin;\n        }\n        else {\n            scroller.height = height = scroller.size;\n            scroller.xOffset = xOffset = buttonsEnabled ? scroller.size : 0;\n            // Width without buttons\n            scroller.barWidth = width - (buttonsEnabled ? height * 2 : 0);\n            scroller.y = scroller.y + margin;\n        }\n        // Set general position for a group:\n        scroller.group[method]({\n            translateX: x,\n            translateY: scroller.y\n        });\n        // Resize background/track:\n        scroller.track[method]({\n            width: width,\n            height: height\n        });\n        // Move right/bottom button to its place:\n        scroller.scrollbarButtons[1][method]({\n            translateX: vertical ? 0 : width - xOffset,\n            translateY: vertical ? height - yOffset : 0\n        });\n    };\n    /**\n     * Removes the event handlers attached previously with addEvents.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#removeEvents\n     */\n    Scrollbar.prototype.removeEvents = function () {\n        this._events.forEach(function (args) {\n            removeEvent.apply(null, args);\n        });\n        this._events.length = 0;\n    };\n    /**\n     * Render scrollbar with all required items.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#render\n     */\n    Scrollbar.prototype.render = function () {\n        var scroller = this,\n            renderer = scroller.renderer,\n            options = scroller.options,\n            size = scroller.size,\n            styledMode = scroller.chart.styledMode,\n            group = renderer.g('scrollbar')\n                .attr({\n                zIndex: options.zIndex\n            })\n                .hide() // Initially hide the scrollbar #15863\n                .add();\n        // Draw the scrollbar group\n        scroller.group = group;\n        // Draw the scrollbar track:\n        scroller.track = renderer.rect()\n            .addClass('highcharts-scrollbar-track')\n            .attr({\n            r: options.trackBorderRadius || 0,\n            height: size,\n            width: size\n        }).add(group);\n        if (!styledMode) {\n            scroller.track.attr({\n                fill: options.trackBackgroundColor,\n                stroke: options.trackBorderColor,\n                'stroke-width': options.trackBorderWidth\n            });\n        }\n        var trackBorderWidth = scroller.trackBorderWidth =\n                scroller.track.strokeWidth();\n        scroller.track.attr({\n            x: -crisp(0, trackBorderWidth),\n            y: -crisp(0, trackBorderWidth)\n        });\n        // Draw the scrollbar itself\n        scroller.scrollbarGroup = renderer.g().add(group);\n        scroller.scrollbar = renderer.rect()\n            .addClass('highcharts-scrollbar-thumb')\n            .attr({\n            height: size - trackBorderWidth,\n            width: size - trackBorderWidth,\n            r: options.barBorderRadius || 0\n        }).add(scroller.scrollbarGroup);\n        scroller.scrollbarRifles = renderer\n            .path(Scrollbar.swapXY([\n            ['M', -3, size / 4],\n            ['L', -3, 2 * size / 3],\n            ['M', 0, size / 4],\n            ['L', 0, 2 * size / 3],\n            ['M', 3, size / 4],\n            ['L', 3, 2 * size / 3]\n        ], options.vertical))\n            .addClass('highcharts-scrollbar-rifles')\n            .add(scroller.scrollbarGroup);\n        if (!styledMode) {\n            scroller.scrollbar.attr({\n                fill: options.barBackgroundColor,\n                stroke: options.barBorderColor,\n                'stroke-width': options.barBorderWidth\n            });\n            scroller.scrollbarRifles.attr({\n                stroke: options.rifleColor,\n                'stroke-width': 1\n            });\n        }\n        scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();\n        scroller.scrollbarGroup.translate(-crisp(0, scroller.scrollbarStrokeWidth), -crisp(0, scroller.scrollbarStrokeWidth));\n        // Draw the buttons:\n        scroller.drawScrollbarButton(0);\n        scroller.drawScrollbarButton(1);\n    };\n    /**\n     * Set scrollbar size, with a given scale.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#setRange\n     * @param {number} from\n     *        scale (0-1) where bar should start\n     * @param {number} to\n     *        scale (0-1) where bar should end\n     */\n    Scrollbar.prototype.setRange = function (from, to) {\n        var scroller = this,\n            options = scroller.options,\n            vertical = options.vertical,\n            minWidth = options.minWidth,\n            fullWidth = scroller.barWidth,\n            method = (this.rendered &&\n                !this.hasDragged &&\n                !(this.chart.navigator && this.chart.navigator.hasDragged)) ? 'animate' : 'attr';\n        if (!Scrollbar_defined(fullWidth)) {\n            return;\n        }\n        var toPX = fullWidth * Math.min(to, 1);\n        var fromPX,\n            newSize;\n        from = Math.max(from, 0);\n        fromPX = Math.ceil(fullWidth * from);\n        scroller.calculatedWidth = newSize = Scrollbar_correctFloat(toPX - fromPX);\n        // We need to recalculate position, if minWidth is used\n        if (newSize < minWidth) {\n            fromPX = (fullWidth - minWidth + newSize) * from;\n            newSize = minWidth;\n        }\n        var newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);\n        var newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2\n            // Store current position:\n            scroller.from = from;\n        scroller.to = to;\n        if (!vertical) {\n            scroller.scrollbarGroup[method]({\n                translateX: newPos\n            });\n            scroller.scrollbar[method]({\n                width: newSize\n            });\n            scroller.scrollbarRifles[method]({\n                translateX: newRiflesPos\n            });\n            scroller.scrollbarLeft = newPos;\n            scroller.scrollbarTop = 0;\n        }\n        else {\n            scroller.scrollbarGroup[method]({\n                translateY: newPos\n            });\n            scroller.scrollbar[method]({\n                height: newSize\n            });\n            scroller.scrollbarRifles[method]({\n                translateY: newRiflesPos\n            });\n            scroller.scrollbarTop = newPos;\n            scroller.scrollbarLeft = 0;\n        }\n        if (newSize <= 12) {\n            scroller.scrollbarRifles.hide();\n        }\n        else {\n            scroller.scrollbarRifles.show();\n        }\n        // Show or hide the scrollbar based on the showFull setting\n        if (options.showFull === false) {\n            if (from <= 0 && to >= 1) {\n                scroller.group.hide();\n            }\n            else {\n                scroller.group.show();\n            }\n        }\n        scroller.rendered = true;\n    };\n    /**\n     * Checks if the extremes should be updated in response to a scrollbar\n     * change event.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#shouldUpdateExtremes\n     */\n    Scrollbar.prototype.shouldUpdateExtremes = function (eventType) {\n        return (Scrollbar_pick(this.options.liveRedraw, (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).svg &&\n            !(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice &&\n            !this.chart.boosted) ||\n            // Mouseup always should change extremes\n            eventType === 'mouseup' ||\n            eventType === 'touchend' ||\n            // Internal events\n            !Scrollbar_defined(eventType));\n    };\n    Scrollbar.prototype.trackClick = function (e) {\n        var _a;\n        var scroller = this;\n        var normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n            range = scroller.to - scroller.from,\n            top = scroller.y + scroller.scrollbarTop,\n            left = scroller.x + scroller.scrollbarLeft;\n        if ((scroller.options.vertical && normalizedEvent.chartY > top) ||\n            (!scroller.options.vertical && normalizedEvent.chartX > left)) {\n            // On the top or on the left side of the track:\n            scroller.updatePosition(scroller.from + range, scroller.to + range);\n        }\n        else {\n            // On the bottom or the right side of the track:\n            scroller.updatePosition(scroller.from - range, scroller.to - range);\n        }\n        Scrollbar_fireEvent(scroller, 'changed', {\n            from: scroller.from,\n            to: scroller.to,\n            trigger: 'scrollbar',\n            DOMEvent: e\n        });\n    };\n    /**\n     * Update the scrollbar with new options\n     *\n     * @private\n     * @function Highcharts.Scrollbar#update\n     * @param  {Highcharts.ScrollbarOptions} options\n     */\n    Scrollbar.prototype.update = function (options) {\n        this.destroy();\n        this.init(this.chart.renderer, Scrollbar_merge(true, this.options, options), this.chart);\n    };\n    /**\n     * Update position option in the Scrollbar, with normalized 0-1 scale\n     *\n     * @private\n     * @function Highcharts.Scrollbar#updatePosition\n     * @param  {number} from\n     * @param  {number} to\n     */\n    Scrollbar.prototype.updatePosition = function (from, to) {\n        if (to > 1) {\n            from = Scrollbar_correctFloat(1 - Scrollbar_correctFloat(to - from));\n            to = 1;\n        }\n        if (from < 0) {\n            to = Scrollbar_correctFloat(to - from);\n            from = 0;\n        }\n        this.from = from;\n        this.to = to;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    Scrollbar.defaultOptions = Scrollbar_ScrollbarDefaults;\n    return Scrollbar;\n}());\n/* *\n *\n *  Registry\n *\n * */\ndefaultOptions.scrollbar = Scrollbar_merge(true, Scrollbar.defaultOptions, defaultOptions.scrollbar);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Scrollbar_Scrollbar = (Scrollbar);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGRenderer\"],\"commonjs\":[\"highcharts\",\"SVGRenderer\"],\"commonjs2\":[\"highcharts\",\"SVGRenderer\"],\"root\":[\"Highcharts\",\"SVGRenderer\"]}\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_ = __webpack_require__(540);\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_);\n;// ./code/es5/es-modules/Stock/Navigator/Navigator.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __assign = (undefined && undefined.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\n\n\n\nvar Navigator_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar Navigator_isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\n\n\n\nvar symbols = (highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default()).prototype.symbols;\n\nvar Navigator_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, Navigator_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, Navigator_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Navigator_destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, erase = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).erase, Navigator_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, Navigator_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, Navigator_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, Navigator_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Navigator_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, Navigator_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, Navigator_removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent, splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Finding the min or max of a set of variables where we don't know if they are\n * defined, is a pattern that is repeated several places in Highcharts. Consider\n * making this a global utility method.\n * @private\n */\nfunction numExt(extreme) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    var numbers = [].filter.call(args,\n        Navigator_isNumber);\n    if (numbers.length) {\n        return Math[extreme].apply(0, numbers);\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The Navigator class\n *\n * @private\n * @class\n * @name Highcharts.Navigator\n *\n * @param {Highcharts.Chart} chart\n *        Chart object\n */\nvar Navigator = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function Navigator(chart) {\n        this.isDirty = false;\n        this.scrollbarHeight = 0;\n        this.init(chart);\n    }\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    Navigator.compose = function (ChartClass, AxisClass, SeriesClass) {\n        Navigator_ChartNavigatorComposition.compose(ChartClass, Navigator);\n        Navigator_NavigatorComposition.compose(ChartClass, AxisClass, SeriesClass);\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Draw one of the handles on the side of the zoomed range in the navigator.\n     *\n     * @private\n     * @function Highcharts.Navigator#drawHandle\n     *\n     * @param {number} x\n     *        The x center for the handle\n     *\n     * @param {number} index\n     *        0 for left and 1 for right\n     *\n     * @param {boolean|undefined} inverted\n     *        Flag for chart.inverted\n     *\n     * @param {string} verb\n     *        Use 'animate' or 'attr'\n     */\n    Navigator.prototype.drawHandle = function (x, index, inverted, verb) {\n        var navigator = this,\n            height = navigator.navigatorOptions.handles.height;\n        // Place it\n        navigator.handles[index][verb](inverted ? {\n            translateX: Math.round(navigator.left + navigator.height / 2),\n            translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5 - height)\n        } : {\n            translateX: Math.round(navigator.left + parseInt(x, 10)),\n            translateY: Math.round(navigator.top + navigator.height / 2 - height / 2 - 1)\n        });\n    };\n    /**\n     * Render outline around the zoomed range\n     *\n     * @private\n     * @function Highcharts.Navigator#drawOutline\n     *\n     * @param {number} zoomedMin\n     *        in pixels position where zoomed range starts\n     *\n     * @param {number} zoomedMax\n     *        in pixels position where zoomed range ends\n     *\n     * @param {boolean|undefined} inverted\n     *        flag if chart is inverted\n     *\n     * @param {string} verb\n     *        use 'animate' or 'attr'\n     */\n    Navigator.prototype.drawOutline = function (zoomedMin, zoomedMax, inverted, verb) {\n        var navigator = this, maskInside = navigator.navigatorOptions.maskInside, outlineWidth = navigator.outline.strokeWidth(), halfOutline = outlineWidth / 2, outlineCorrection = (outlineWidth % 2) / 2, // #5800\n            scrollButtonSize = navigator.scrollButtonSize, navigatorSize = navigator.size, navigatorTop = navigator.top, height = navigator.height, lineTop = navigatorTop - halfOutline, lineBtm = navigatorTop + height;\n        var left = navigator.left,\n            verticalMin,\n            path;\n        if (inverted) {\n            verticalMin = navigatorTop + zoomedMax + outlineCorrection;\n            zoomedMax = navigatorTop + zoomedMin + outlineCorrection;\n            path = [\n                [\n                    'M',\n                    left + height,\n                    navigatorTop - scrollButtonSize - outlineCorrection\n                ],\n                // Top right of zoomed range\n                ['L', left + height, verticalMin],\n                ['L', left, verticalMin], // Top left of z.r.\n                ['M', left, zoomedMax], // Bottom left of z.r.\n                ['L', left + height, zoomedMax], // Bottom right of z.r.\n                [\n                    'L',\n                    left + height,\n                    navigatorTop + navigatorSize + scrollButtonSize\n                ]\n            ];\n            if (maskInside) {\n                path.push(\n                // Upper left of zoomed range\n                ['M', left + height, verticalMin - halfOutline], \n                // Upper right of z.r.\n                [\n                    'L',\n                    left + height,\n                    zoomedMax + halfOutline\n                ]);\n            }\n        }\n        else {\n            left -= scrollButtonSize;\n            zoomedMin += left + scrollButtonSize - outlineCorrection;\n            zoomedMax += left + scrollButtonSize - outlineCorrection;\n            path = [\n                // Left\n                ['M', left, lineTop],\n                // Upper left of zoomed range\n                ['L', zoomedMin, lineTop],\n                // Lower left of z.r.\n                ['L', zoomedMin, lineBtm],\n                // Lower right of z.r.\n                ['M', zoomedMax, lineBtm],\n                // Upper right of z.r.\n                ['L', zoomedMax, lineTop],\n                // Right\n                [\n                    'L',\n                    left + navigatorSize + scrollButtonSize * 2,\n                    lineTop\n                ]\n            ];\n            if (maskInside) {\n                path.push(\n                // Upper left of zoomed range\n                ['M', zoomedMin - halfOutline, lineTop], \n                // Upper right of z.r.\n                ['L', zoomedMax + halfOutline, lineTop]);\n            }\n        }\n        navigator.outline[verb]({\n            d: path\n        });\n    };\n    /**\n     * Render outline around the zoomed range\n     *\n     * @private\n     * @function Highcharts.Navigator#drawMasks\n     *\n     * @param {number} zoomedMin\n     *        in pixels position where zoomed range starts\n     *\n     * @param {number} zoomedMax\n     *        in pixels position where zoomed range ends\n     *\n     * @param {boolean|undefined} inverted\n     *        flag if chart is inverted\n     *\n     * @param {string} verb\n     *        use 'animate' or 'attr'\n     */\n    Navigator.prototype.drawMasks = function (zoomedMin, zoomedMax, inverted, verb) {\n        var navigator = this,\n            left = navigator.left,\n            top = navigator.top,\n            navigatorHeight = navigator.height;\n        var height,\n            width,\n            x,\n            y;\n        // Determine rectangle position & size\n        // According to (non)inverted position:\n        if (inverted) {\n            x = [left, left, left];\n            y = [top, top + zoomedMin, top + zoomedMax];\n            width = [navigatorHeight, navigatorHeight, navigatorHeight];\n            height = [\n                zoomedMin,\n                zoomedMax - zoomedMin,\n                navigator.size - zoomedMax\n            ];\n        }\n        else {\n            x = [left, left + zoomedMin, left + zoomedMax];\n            y = [top, top, top];\n            width = [\n                zoomedMin,\n                zoomedMax - zoomedMin,\n                navigator.size - zoomedMax\n            ];\n            height = [navigatorHeight, navigatorHeight, navigatorHeight];\n        }\n        navigator.shades.forEach(function (shade, i) {\n            shade[verb]({\n                x: x[i],\n                y: y[i],\n                width: width[i],\n                height: height[i]\n            });\n        });\n    };\n    /**\n     * Generate and update DOM elements for a navigator:\n     *\n     * - main navigator group\n     *\n     * - all shades\n     *\n     * - outline\n     *\n     * - handles\n     *\n     * @private\n     * @function Highcharts.Navigator#renderElements\n     */\n    Navigator.prototype.renderElements = function () {\n        var _a,\n            _b;\n        var navigator = this,\n            navigatorOptions = navigator.navigatorOptions,\n            maskInside = navigatorOptions.maskInside,\n            chart = navigator.chart,\n            inverted = chart.inverted,\n            renderer = chart.renderer,\n            mouseCursor = {\n                cursor: inverted ? 'ns-resize' : 'ew-resize'\n            }, \n            // Create the main navigator group\n            navigatorGroup = (_a = navigator.navigatorGroup) !== null && _a !== void 0 ? _a : (navigator.navigatorGroup = renderer\n                .g('navigator')\n                .attr({\n                zIndex: 8,\n                visibility: 'hidden'\n            })\n                .add());\n        // Create masks, each mask will get events and fill:\n        [\n            !maskInside,\n            maskInside,\n            !maskInside\n        ].forEach(function (hasMask, index) {\n            var _a;\n            var shade = (_a = navigator.shades[index]) !== null && _a !== void 0 ? _a : (navigator.shades[index] = renderer.rect()\n                    .addClass('highcharts-navigator-mask' +\n                    (index === 1 ? '-inside' : '-outside'))\n                    .add(navigatorGroup));\n            if (!chart.styledMode) {\n                shade.attr({\n                    fill: hasMask ? navigatorOptions.maskFill : 'rgba(0,0,0,0)'\n                });\n                if (index === 1) {\n                    shade.css(mouseCursor);\n                }\n            }\n        });\n        // Create the outline:\n        if (!navigator.outline) {\n            navigator.outline = renderer.path()\n                .addClass('highcharts-navigator-outline')\n                .add(navigatorGroup);\n        }\n        if (!chart.styledMode) {\n            navigator.outline.attr({\n                'stroke-width': navigatorOptions.outlineWidth,\n                stroke: navigatorOptions.outlineColor\n            });\n        }\n        // Create the handlers:\n        if ((_b = navigatorOptions.handles) === null || _b === void 0 ? void 0 : _b.enabled) {\n            var handlesOptions_1 = navigatorOptions.handles,\n                height_1 = handlesOptions_1.height,\n                width_1 = handlesOptions_1.width;\n            [0, 1].forEach(function (index) {\n                var _a;\n                var symbolName = handlesOptions_1.symbols[index];\n                if (!navigator.handles[index] ||\n                    navigator.handles[index].symbolUrl !== symbolName) {\n                    // Generate symbol from scratch if we're dealing with an URL\n                    (_a = navigator.handles[index]) === null || _a === void 0 ? void 0 : _a.destroy();\n                    navigator.handles[index] = renderer.symbol(symbolName, -width_1 / 2 - 1, 0, width_1, height_1, handlesOptions_1);\n                    // Z index is 6 for right handle, 7 for left. Can't be 10,\n                    // because of the tooltip in inverted chart (#2908).\n                    navigator.handles[index].attr({ zIndex: 7 - index })\n                        .addClass('highcharts-navigator-handle ' +\n                        'highcharts-navigator-handle-' +\n                        ['left', 'right'][index]).add(navigatorGroup);\n                    navigator.addMouseEvents();\n                    // If the navigator symbol changed, update its path and name\n                }\n                else if (!navigator.handles[index].isImg &&\n                    navigator.handles[index].symbolName !== symbolName) {\n                    var symbolFn = symbols[symbolName],\n                        path = symbolFn.call(symbols, -width_1 / 2 - 1, 0,\n                        width_1,\n                        height_1);\n                    navigator.handles[index].attr({\n                        d: path\n                    });\n                    navigator.handles[index].symbolName = symbolName;\n                }\n                if (chart.inverted) {\n                    navigator.handles[index].attr({\n                        rotation: 90,\n                        rotationOriginX: Math.floor(-width_1 / 2),\n                        rotationOriginY: (height_1 + width_1) / 2\n                    });\n                }\n                if (!chart.styledMode) {\n                    navigator.handles[index]\n                        .attr({\n                        fill: handlesOptions_1.backgroundColor,\n                        stroke: handlesOptions_1.borderColor,\n                        'stroke-width': handlesOptions_1.lineWidth,\n                        width: handlesOptions_1.width,\n                        height: handlesOptions_1.height,\n                        x: -width_1 / 2 - 1,\n                        y: 0\n                    })\n                        .css(mouseCursor);\n                }\n            });\n        }\n    };\n    /**\n     * Update navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#update\n     *\n     * @param {Highcharts.NavigatorOptions} options\n     *        Options to merge in when updating navigator\n     */\n    Navigator.prototype.update = function (options, redraw) {\n        var _a,\n            _b;\n        var _this = this;\n        var _c,\n            _d;\n        if (redraw === void 0) { redraw = false; }\n        var chart = this.chart,\n            invertedUpdate = chart.options.chart.inverted !==\n                ((_c = chart.scrollbar) === null || _c === void 0 ? void 0 : _c.options.vertical);\n        Navigator_merge(true, chart.options.navigator, options);\n        this.navigatorOptions = chart.options.navigator || {};\n        this.setOpposite();\n        // Revert to destroy/init for navigator/scrollbar enabled toggle\n        if (Navigator_defined(options.enabled) || invertedUpdate) {\n            this.destroy();\n            this.navigatorEnabled = options.enabled || this.navigatorEnabled;\n            return this.init(chart);\n        }\n        if (this.navigatorEnabled) {\n            this.isDirty = true;\n            if (options.adaptToUpdatedData === false) {\n                this.baseSeries.forEach(function (series) {\n                    Navigator_removeEvent(series, 'updatedData', _this.updatedDataHandler);\n                }, this);\n            }\n            if (options.adaptToUpdatedData) {\n                this.baseSeries.forEach(function (series) {\n                    series.eventsToUnbind.push(Navigator_addEvent(series, 'updatedData', _this.updatedDataHandler));\n                }, this);\n            }\n            // Update navigator series\n            if (options.series || options.baseSeries) {\n                this.setBaseSeries(void 0, false);\n            }\n            // Update navigator axis\n            if (options.height || options.xAxis || options.yAxis) {\n                this.height = (_d = options.height) !== null && _d !== void 0 ? _d : this.height;\n                var offsets = this.getXAxisOffsets();\n                this.xAxis.update(__assign(__assign({}, options.xAxis), (_a = { offsets: offsets }, _a[chart.inverted ? 'width' : 'height'] = this.height, _a[chart.inverted ? 'height' : 'width'] = void 0, _a)), false);\n                this.yAxis.update(__assign(__assign({}, options.yAxis), (_b = {}, _b[chart.inverted ? 'width' : 'height'] = this.height, _b)), false);\n            }\n        }\n        if (redraw) {\n            chart.redraw();\n        }\n    };\n    /**\n     * Render the navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#render\n     * @param {number} min\n     *        X axis value minimum\n     * @param {number} max\n     *        X axis value maximum\n     * @param {number} [pxMin]\n     *        Pixel value minimum\n     * @param {number} [pxMax]\n     *        Pixel value maximum\n     */\n    Navigator.prototype.render = function (min, max, pxMin, pxMax) {\n        var navigator = this,\n            chart = navigator.chart,\n            xAxis = navigator.xAxis,\n            pointRange = xAxis.pointRange || 0,\n            scrollbarXAxis = xAxis.navigatorAxis.fake ? chart.xAxis[0] : xAxis,\n            navigatorEnabled = navigator.navigatorEnabled,\n            rendered = navigator.rendered,\n            inverted = chart.inverted,\n            minRange = chart.xAxis[0].minRange,\n            maxRange = chart.xAxis[0].options.maxRange,\n            scrollButtonSize = navigator.scrollButtonSize;\n        var navigatorWidth,\n            scrollbarLeft,\n            scrollbarTop,\n            scrollbarHeight = navigator.scrollbarHeight,\n            navigatorSize,\n            verb;\n        // Don't redraw while moving the handles (#4703).\n        if (this.hasDragged && !Navigator_defined(pxMin)) {\n            return;\n        }\n        if (this.isDirty) {\n            // Update DOM navigator elements\n            this.renderElements();\n        }\n        min = Navigator_correctFloat(min - pointRange / 2);\n        max = Navigator_correctFloat(max + pointRange / 2);\n        // Don't render the navigator until we have data (#486, #4202, #5172).\n        if (!Navigator_isNumber(min) || !Navigator_isNumber(max)) {\n            // However, if navigator was already rendered, we may need to resize\n            // it. For example hidden series, but visible navigator (#6022).\n            if (rendered) {\n                pxMin = 0;\n                pxMax = Navigator_pick(xAxis.width, scrollbarXAxis.width);\n            }\n            else {\n                return;\n            }\n        }\n        navigator.left = Navigator_pick(xAxis.left, \n        // In case of scrollbar only, without navigator\n        chart.plotLeft + scrollButtonSize +\n            (inverted ? chart.plotWidth : 0));\n        var zoomedMax = navigator.size = navigatorSize = Navigator_pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -\n                2 * scrollButtonSize);\n        if (inverted) {\n            navigatorWidth = scrollbarHeight;\n        }\n        else {\n            navigatorWidth = navigatorSize + 2 * scrollButtonSize;\n        }\n        // Get the pixel position of the handles\n        pxMin = Navigator_pick(pxMin, xAxis.toPixels(min, true));\n        pxMax = Navigator_pick(pxMax, xAxis.toPixels(max, true));\n        // Verify (#1851, #2238)\n        if (!Navigator_isNumber(pxMin) || Math.abs(pxMin) === Infinity) {\n            pxMin = 0;\n            pxMax = navigatorWidth;\n        }\n        // Are we below the minRange? (#2618, #6191)\n        var newMin = xAxis.toValue(pxMin,\n            true),\n            newMax = xAxis.toValue(pxMax,\n            true),\n            currentRange = Math.abs(Navigator_correctFloat(newMax - newMin));\n        if (currentRange < minRange) {\n            if (this.grabbedLeft) {\n                pxMin = xAxis.toPixels(newMax - minRange - pointRange, true);\n            }\n            else if (this.grabbedRight) {\n                pxMax = xAxis.toPixels(newMin + minRange + pointRange, true);\n            }\n        }\n        else if (Navigator_defined(maxRange) &&\n            Navigator_correctFloat(currentRange - pointRange) > maxRange) {\n            if (this.grabbedLeft) {\n                pxMin = xAxis.toPixels(newMax - maxRange - pointRange, true);\n            }\n            else if (this.grabbedRight) {\n                pxMax = xAxis.toPixels(newMin + maxRange + pointRange, true);\n            }\n        }\n        // Handles are allowed to cross, but never exceed the plot area\n        navigator.zoomedMax = clamp(Math.max(pxMin, pxMax), 0, zoomedMax);\n        navigator.zoomedMin = clamp(navigator.fixedWidth ?\n            navigator.zoomedMax - navigator.fixedWidth :\n            Math.min(pxMin, pxMax), 0, zoomedMax);\n        navigator.range = navigator.zoomedMax - navigator.zoomedMin;\n        zoomedMax = Math.round(navigator.zoomedMax);\n        var zoomedMin = Math.round(navigator.zoomedMin);\n        if (navigatorEnabled) {\n            navigator.navigatorGroup.attr({\n                visibility: 'inherit'\n            });\n            // Place elements\n            verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';\n            navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n            navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n            if (navigator.navigatorOptions.handles.enabled) {\n                navigator.drawHandle(zoomedMin, 0, inverted, verb);\n                navigator.drawHandle(zoomedMax, 1, inverted, verb);\n            }\n        }\n        if (navigator.scrollbar) {\n            if (inverted) {\n                scrollbarTop = navigator.top - scrollButtonSize;\n                scrollbarLeft = navigator.left - scrollbarHeight +\n                    (navigatorEnabled || !scrollbarXAxis.opposite ? 0 :\n                        // Multiple axes has offsets:\n                        (scrollbarXAxis.titleOffset || 0) +\n                            // Self margin from the axis.title\n                            scrollbarXAxis.axisTitleMargin);\n                scrollbarHeight = navigatorSize + 2 * scrollButtonSize;\n            }\n            else {\n                scrollbarTop = navigator.top + (navigatorEnabled ?\n                    navigator.height :\n                    -scrollbarHeight);\n                scrollbarLeft = navigator.left - scrollButtonSize;\n            }\n            // Reposition scrollbar\n            navigator.scrollbar.position(scrollbarLeft, scrollbarTop, navigatorWidth, scrollbarHeight);\n            // Keep scale 0-1\n            navigator.scrollbar.setRange(\n            // Use real value, not rounded because range can be very small\n            // (#1716)\n            navigator.zoomedMin / (navigatorSize || 1), navigator.zoomedMax / (navigatorSize || 1));\n        }\n        navigator.rendered = true;\n        this.isDirty = false;\n        Navigator_fireEvent(this, 'afterRender');\n    };\n    /**\n     * Set up the mouse and touch events for the navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#addMouseEvents\n     */\n    Navigator.prototype.addMouseEvents = function () {\n        var navigator = this,\n            chart = navigator.chart,\n            container = chart.container;\n        var eventsToUnbind = [],\n            mouseMoveHandler,\n            mouseUpHandler;\n        /**\n         * Create mouse events' handlers.\n         * Make them as separate functions to enable wrapping them:\n         */\n        navigator.mouseMoveHandler = mouseMoveHandler = function (e) {\n            navigator.onMouseMove(e);\n        };\n        navigator.mouseUpHandler = mouseUpHandler = function (e) {\n            navigator.onMouseUp(e);\n        };\n        // Add shades and handles mousedown events\n        eventsToUnbind = navigator.getPartsEvents('mousedown');\n        eventsToUnbind.push(\n        // Add mouse move and mouseup events. These are bind to doc/div,\n        // because Navigator.grabbedSomething flags are stored in mousedown\n        // events\n        Navigator_addEvent(chart.renderTo, 'mousemove', mouseMoveHandler), Navigator_addEvent(container.ownerDocument, 'mouseup', mouseUpHandler), \n        // Touch events\n        Navigator_addEvent(chart.renderTo, 'touchmove', mouseMoveHandler), Navigator_addEvent(container.ownerDocument, 'touchend', mouseUpHandler));\n        eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));\n        navigator.eventsToUnbind = eventsToUnbind;\n        // Data events\n        if (navigator.series && navigator.series[0]) {\n            eventsToUnbind.push(Navigator_addEvent(navigator.series[0].xAxis, 'foundExtremes', function () {\n                chart.navigator.modifyNavigatorAxisExtremes();\n            }));\n        }\n    };\n    /**\n     * Generate events for handles and masks\n     *\n     * @private\n     * @function Highcharts.Navigator#getPartsEvents\n     *\n     * @param {string} eventName\n     *        Event name handler, 'mousedown' or 'touchstart'\n     *\n     * @return {Array<Function>}\n     *         An array of functions to remove navigator functions from the\n     *         events again.\n     */\n    Navigator.prototype.getPartsEvents = function (eventName) {\n        var navigator = this,\n            events = [];\n        ['shades', 'handles'].forEach(function (name) {\n            navigator[name].forEach(function (navigatorItem, index) {\n                events.push(Navigator_addEvent(navigatorItem.element, eventName, function (e) {\n                    navigator[name + 'Mousedown'](e, index);\n                }));\n            });\n        });\n        return events;\n    };\n    /**\n     * Mousedown on a shaded mask, either:\n     *\n     * - will be stored for future drag&drop\n     *\n     * - will directly shift to a new range\n     *\n     * @private\n     * @function Highcharts.Navigator#shadesMousedown\n     *\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     *\n     * @param {number} index\n     *        Index of a mask in Navigator.shades array\n     */\n    Navigator.prototype.shadesMousedown = function (e, index) {\n        var _a;\n        e = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n        var navigator = this,\n            chart = navigator.chart,\n            xAxis = navigator.xAxis,\n            zoomedMin = navigator.zoomedMin,\n            navigatorSize = navigator.size,\n            range = navigator.range;\n        var navigatorPosition = navigator.left,\n            chartX = e.chartX,\n            fixedMax,\n            fixedMin,\n            ext,\n            left;\n        // For inverted chart, swap some options:\n        if (chart.inverted) {\n            chartX = e.chartY;\n            navigatorPosition = navigator.top;\n        }\n        if (index === 1) {\n            // Store information for drag&drop\n            navigator.grabbedCenter = chartX;\n            navigator.fixedWidth = range;\n            navigator.dragOffset = chartX - zoomedMin;\n        }\n        else {\n            // Shift the range by clicking on shaded areas\n            left = chartX - navigatorPosition - range / 2;\n            if (index === 0) {\n                left = Math.max(0, left);\n            }\n            else if (index === 2 && left + range >= navigatorSize) {\n                left = navigatorSize - range;\n                if (navigator.reversedExtremes) {\n                    // #7713\n                    left -= range;\n                    fixedMin = navigator.getUnionExtremes().dataMin;\n                }\n                else {\n                    // #2293, #3543\n                    fixedMax = navigator.getUnionExtremes().dataMax;\n                }\n            }\n            if (left !== zoomedMin) { // It has actually moved\n                navigator.fixedWidth = range; // #1370\n                ext = xAxis.navigatorAxis.toFixedRange(left, left + range, fixedMin, fixedMax);\n                if (Navigator_defined(ext.min)) { // #7411\n                    Navigator_fireEvent(this, 'setRange', {\n                        min: Math.min(ext.min, ext.max),\n                        max: Math.max(ext.min, ext.max),\n                        redraw: true,\n                        eventArguments: {\n                            trigger: 'navigator'\n                        }\n                    });\n                }\n            }\n        }\n    };\n    /**\n     * Mousedown on a handle mask.\n     * Will store necessary information for drag&drop.\n     *\n     * @private\n     * @function Highcharts.Navigator#handlesMousedown\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     * @param {number} index\n     *        Index of a handle in Navigator.handles array\n     */\n    Navigator.prototype.handlesMousedown = function (e, index) {\n        var _a;\n        e = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n        var navigator = this,\n            chart = navigator.chart,\n            baseXAxis = chart.xAxis[0], \n            // For reversed axes, min and max are changed,\n            // so the other extreme should be stored\n            reverse = navigator.reversedExtremes;\n        if (index === 0) {\n            // Grab the left handle\n            navigator.grabbedLeft = true;\n            navigator.otherHandlePos = navigator.zoomedMax;\n            navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;\n        }\n        else {\n            // Grab the right handle\n            navigator.grabbedRight = true;\n            navigator.otherHandlePos = navigator.zoomedMin;\n            navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;\n        }\n        chart.setFixedRange(void 0);\n    };\n    /**\n     * Mouse move event based on x/y mouse position.\n     *\n     * @private\n     * @function Highcharts.Navigator#onMouseMove\n     *\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     */\n    Navigator.prototype.onMouseMove = function (e) {\n        var _a;\n        var navigator = this,\n            chart = navigator.chart,\n            navigatorSize = navigator.navigatorSize,\n            range = navigator.range,\n            dragOffset = navigator.dragOffset,\n            inverted = chart.inverted;\n        var left = navigator.left,\n            chartX;\n        // In iOS, a mousemove event with e.pageX === 0 is fired when holding\n        // the finger down in the center of the scrollbar. This should be\n        // ignored.\n        if (!e.touches || e.touches[0].pageX !== 0) { // #4696\n            e = ((_a = chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n            chartX = e.chartX;\n            // Swap some options for inverted chart\n            if (inverted) {\n                left = navigator.top;\n                chartX = e.chartY;\n            }\n            // Drag left handle or top handle\n            if (navigator.grabbedLeft) {\n                navigator.hasDragged = true;\n                navigator.render(0, 0, chartX - left, navigator.otherHandlePos);\n                // Drag right handle or bottom handle\n            }\n            else if (navigator.grabbedRight) {\n                navigator.hasDragged = true;\n                navigator.render(0, 0, navigator.otherHandlePos, chartX - left);\n                // Drag scrollbar or open area in navigator\n            }\n            else if (navigator.grabbedCenter) {\n                navigator.hasDragged = true;\n                if (chartX < dragOffset) { // Outside left\n                    chartX = dragOffset;\n                    // Outside right\n                }\n                else if (chartX >\n                    navigatorSize + dragOffset - range) {\n                    chartX = navigatorSize + dragOffset - range;\n                }\n                navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);\n            }\n            if (navigator.hasDragged &&\n                navigator.scrollbar &&\n                Navigator_pick(navigator.scrollbar.options.liveRedraw, \n                // By default, don't run live redraw on touch\n                // devices or if the chart is in boost.\n                !Navigator_isTouchDevice &&\n                    !this.chart.boosted)) {\n                e.DOMType = e.type;\n                setTimeout(function () {\n                    navigator.onMouseUp(e);\n                }, 0);\n            }\n        }\n    };\n    /**\n     * Mouse up event based on x/y mouse position.\n     *\n     * @private\n     * @function Highcharts.Navigator#onMouseUp\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     */\n    Navigator.prototype.onMouseUp = function (e) {\n        var navigator = this,\n            chart = navigator.chart,\n            xAxis = navigator.xAxis,\n            scrollbar = navigator.scrollbar,\n            DOMEvent = e.DOMEvent || e,\n            inverted = chart.inverted,\n            verb = navigator.rendered && !navigator.hasDragged ?\n                'animate' : 'attr';\n        var zoomedMax,\n            zoomedMin,\n            unionExtremes,\n            fixedMin,\n            fixedMax,\n            ext;\n        if (\n        // MouseUp is called for both, navigator and scrollbar (that order),\n        // which causes calling afterSetExtremes twice. Prevent first call\n        // by checking if scrollbar is going to set new extremes (#6334)\n        (navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||\n            e.trigger === 'scrollbar') {\n            unionExtremes = navigator.getUnionExtremes();\n            // When dragging one handle, make sure the other one doesn't change\n            if (navigator.zoomedMin === navigator.otherHandlePos) {\n                fixedMin = navigator.fixedExtreme;\n            }\n            else if (navigator.zoomedMax === navigator.otherHandlePos) {\n                fixedMax = navigator.fixedExtreme;\n            }\n            // Snap to right edge (#4076)\n            if (navigator.zoomedMax === navigator.size) {\n                fixedMax = navigator.reversedExtremes ?\n                    unionExtremes.dataMin :\n                    unionExtremes.dataMax;\n            }\n            // Snap to left edge (#7576)\n            if (navigator.zoomedMin === 0) {\n                fixedMin = navigator.reversedExtremes ?\n                    unionExtremes.dataMax :\n                    unionExtremes.dataMin;\n            }\n            ext = xAxis.navigatorAxis.toFixedRange(navigator.zoomedMin, navigator.zoomedMax, fixedMin, fixedMax);\n            if (Navigator_defined(ext.min)) {\n                Navigator_fireEvent(this, 'setRange', {\n                    min: Math.min(ext.min, ext.max),\n                    max: Math.max(ext.min, ext.max),\n                    redraw: true,\n                    animation: navigator.hasDragged ? false : null,\n                    eventArguments: {\n                        trigger: 'navigator',\n                        triggerOp: 'navigator-drag',\n                        DOMEvent: DOMEvent // #1838\n                    }\n                });\n            }\n        }\n        if (e.DOMType !== 'mousemove' &&\n            e.DOMType !== 'touchmove') {\n            navigator.grabbedLeft = navigator.grabbedRight =\n                navigator.grabbedCenter = navigator.fixedWidth =\n                    navigator.fixedExtreme = navigator.otherHandlePos =\n                        navigator.hasDragged = navigator.dragOffset = null;\n        }\n        // Update position of navigator shades, outline and handles (#12573)\n        if (navigator.navigatorEnabled &&\n            Navigator_isNumber(navigator.zoomedMin) &&\n            Navigator_isNumber(navigator.zoomedMax)) {\n            zoomedMin = Math.round(navigator.zoomedMin);\n            zoomedMax = Math.round(navigator.zoomedMax);\n            if (navigator.shades) {\n                navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n            }\n            if (navigator.outline) {\n                navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n            }\n            if (navigator.navigatorOptions.handles.enabled &&\n                Object.keys(navigator.handles).length ===\n                    navigator.handles.length) {\n                navigator.drawHandle(zoomedMin, 0, inverted, verb);\n                navigator.drawHandle(zoomedMax, 1, inverted, verb);\n            }\n        }\n    };\n    /**\n     * Removes the event handlers attached previously with addEvents.\n     *\n     * @private\n     * @function Highcharts.Navigator#removeEvents\n     */\n    Navigator.prototype.removeEvents = function () {\n        if (this.eventsToUnbind) {\n            this.eventsToUnbind.forEach(function (unbind) {\n                unbind();\n            });\n            this.eventsToUnbind = void 0;\n        }\n        this.removeBaseSeriesEvents();\n    };\n    /**\n     * Remove data events.\n     *\n     * @private\n     * @function Highcharts.Navigator#removeBaseSeriesEvents\n     */\n    Navigator.prototype.removeBaseSeriesEvents = function () {\n        var baseSeries = this.baseSeries || [];\n        if (this.navigatorEnabled && baseSeries[0]) {\n            if (this.navigatorOptions.adaptToUpdatedData !== false) {\n                baseSeries.forEach(function (series) {\n                    Navigator_removeEvent(series, 'updatedData', this.updatedDataHandler);\n                }, this);\n            }\n            // We only listen for extremes-events on the first baseSeries\n            if (baseSeries[0].xAxis) {\n                Navigator_removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);\n            }\n        }\n    };\n    /**\n     * Calculate the navigator xAxis offsets\n     *\n     * @private\n     */\n    Navigator.prototype.getXAxisOffsets = function () {\n        return (this.chart.inverted ?\n            [this.scrollButtonSize, 0, -this.scrollButtonSize, 0] :\n            [0, -this.scrollButtonSize, 0, this.scrollButtonSize]);\n    };\n    /**\n     * Initialize the Navigator object\n     *\n     * @private\n     * @function Highcharts.Navigator#init\n     */\n    Navigator.prototype.init = function (chart) {\n        var _a;\n        var chartOptions = chart.options,\n            navigatorOptions = chartOptions.navigator || {},\n            navigatorEnabled = navigatorOptions.enabled,\n            scrollbarOptions = chartOptions.scrollbar || {},\n            scrollbarEnabled = scrollbarOptions.enabled,\n            height = navigatorEnabled && navigatorOptions.height || 0,\n            scrollbarHeight = scrollbarEnabled && scrollbarOptions.height || 0,\n            scrollButtonSize = scrollbarOptions.buttonsEnabled && scrollbarHeight || 0;\n        this.handles = [];\n        this.shades = [];\n        this.chart = chart;\n        this.setBaseSeries();\n        this.height = height;\n        this.scrollbarHeight = scrollbarHeight;\n        this.scrollButtonSize = scrollButtonSize;\n        this.scrollbarEnabled = scrollbarEnabled;\n        this.navigatorEnabled = navigatorEnabled;\n        this.navigatorOptions = navigatorOptions;\n        this.scrollbarOptions = scrollbarOptions;\n        this.setOpposite();\n        var navigator = this,\n            baseSeries = navigator.baseSeries,\n            xAxisIndex = chart.xAxis.length,\n            yAxisIndex = chart.yAxis.length,\n            baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis ||\n                chart.xAxis[0] || { options: {} };\n        chart.isDirtyBox = true;\n        if (navigator.navigatorEnabled) {\n            var offsets = this.getXAxisOffsets();\n            // An x axis is required for scrollbar also\n            navigator.xAxis = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(chart, Navigator_merge({\n                // Inherit base xAxis' break, ordinal options and overscroll\n                breaks: baseXaxis.options.breaks,\n                ordinal: baseXaxis.options.ordinal,\n                overscroll: baseXaxis.options.overscroll\n            }, navigatorOptions.xAxis, {\n                type: 'datetime',\n                yAxis: (_a = navigatorOptions.yAxis) === null || _a === void 0 ? void 0 : _a.id,\n                index: xAxisIndex,\n                isInternal: true,\n                offset: 0,\n                keepOrdinalPadding: true, // #2436\n                startOnTick: false,\n                endOnTick: false,\n                // Inherit base xAxis' padding when ordinal is false (#16915).\n                minPadding: baseXaxis.options.ordinal ? 0 :\n                    baseXaxis.options.minPadding,\n                maxPadding: baseXaxis.options.ordinal ? 0 :\n                    baseXaxis.options.maxPadding,\n                zoomEnabled: false\n            }, chart.inverted ? {\n                offsets: offsets,\n                width: height\n            } : {\n                offsets: offsets,\n                height: height\n            }), 'xAxis');\n            navigator.yAxis = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(chart, Navigator_merge(navigatorOptions.yAxis, {\n                alignTicks: false,\n                offset: 0,\n                index: yAxisIndex,\n                isInternal: true,\n                reversed: Navigator_pick((navigatorOptions.yAxis &&\n                    navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false), // #14060\n                zoomEnabled: false\n            }, chart.inverted ? {\n                width: height\n            } : {\n                height: height\n            }), 'yAxis');\n            // If we have a base series, initialize the navigator series\n            if (baseSeries || navigatorOptions.series.data) {\n                navigator.updateNavigatorSeries(false);\n                // If not, set up an event to listen for added series\n            }\n            else if (chart.series.length === 0) {\n                navigator.unbindRedraw = Navigator_addEvent(chart, 'beforeRedraw', function () {\n                    // We've got one, now add it as base\n                    if (chart.series.length > 0 && !navigator.series) {\n                        navigator.setBaseSeries();\n                        navigator.unbindRedraw(); // Reset\n                    }\n                });\n            }\n            navigator.reversedExtremes = (chart.inverted && !navigator.xAxis.reversed) || (!chart.inverted && navigator.xAxis.reversed);\n            // Render items, so we can bind events to them:\n            navigator.renderElements();\n            // Add mouse events\n            navigator.addMouseEvents();\n            // In case of scrollbar only, fake an x axis to get translation\n        }\n        else {\n            navigator.xAxis = {\n                chart: chart,\n                navigatorAxis: {\n                    fake: true\n                },\n                translate: function (value, reverse) {\n                    var axis = chart.xAxis[0], ext = axis.getExtremes(), scrollTrackWidth = axis.len - 2 * scrollButtonSize, min = numExt('min', axis.options.min, ext.dataMin), valueRange = numExt('max', axis.options.max, ext.dataMax) - min;\n                    return reverse ?\n                        // From pixel to value\n                        (value * valueRange / scrollTrackWidth) + min :\n                        // From value to pixel\n                        scrollTrackWidth * (value - min) / valueRange;\n                },\n                toPixels: function (value) {\n                    return this.translate(value);\n                },\n                toValue: function (value) {\n                    return this.translate(value, true);\n                }\n            };\n            navigator.xAxis.navigatorAxis.axis = navigator.xAxis;\n            navigator.xAxis.navigatorAxis.toFixedRange = (NavigatorAxisComposition.prototype.toFixedRange.bind(navigator.xAxis.navigatorAxis));\n        }\n        // Initialize the scrollbar\n        if (chart.options.scrollbar.enabled) {\n            var options = Navigator_merge(chart.options.scrollbar, { vertical: chart.inverted });\n            if (!Navigator_isNumber(options.margin) && navigator.navigatorEnabled) {\n                options.margin = chart.inverted ? -3 : 3;\n            }\n            chart.scrollbar = navigator.scrollbar = new Scrollbar_Scrollbar(chart.renderer, options, chart);\n            Navigator_addEvent(navigator.scrollbar, 'changed', function (e) {\n                var range = navigator.size,\n                    to = range * this.to,\n                    from = range * this.from;\n                navigator.hasDragged = navigator.scrollbar.hasDragged;\n                navigator.render(0, 0, from, to);\n                if (this.shouldUpdateExtremes(e.DOMType)) {\n                    setTimeout(function () {\n                        navigator.onMouseUp(e);\n                    });\n                }\n            });\n        }\n        // Add data events\n        navigator.addBaseSeriesEvents();\n        // Add redraw events\n        navigator.addChartEvents();\n    };\n    /**\n     * Set the opposite property on navigator\n     *\n     * @private\n     */\n    Navigator.prototype.setOpposite = function () {\n        var navigatorOptions = this.navigatorOptions,\n            navigatorEnabled = this.navigatorEnabled,\n            chart = this.chart;\n        this.opposite = Navigator_pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262\n    };\n    /**\n     * Get the union data extremes of the chart - the outer data extremes of the\n     * base X axis and the navigator axis.\n     *\n     * @private\n     * @function Highcharts.Navigator#getUnionExtremes\n     */\n    Navigator.prototype.getUnionExtremes = function (returnFalseOnNoBaseSeries) {\n        var baseAxis = this.chart.xAxis[0],\n            time = this.chart.time,\n            navAxis = this.xAxis,\n            navAxisOptions = navAxis.options,\n            baseAxisOptions = baseAxis.options;\n        var ret;\n        if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {\n            ret = {\n                dataMin: Navigator_pick(// #4053\n                time.parse(navAxisOptions === null || navAxisOptions === void 0 ? void 0 : navAxisOptions.min), numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),\n                dataMax: Navigator_pick(time.parse(navAxisOptions === null || navAxisOptions === void 0 ? void 0 : navAxisOptions.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))\n            };\n        }\n        return ret;\n    };\n    /**\n     * Set the base series and update the navigator series from this. With a bit\n     * of modification we should be able to make this an API method to be called\n     * from the outside\n     *\n     * @private\n     * @function Highcharts.Navigator#setBaseSeries\n     * @param {Highcharts.SeriesOptionsType} [baseSeriesOptions]\n     *        Additional series options for a navigator\n     * @param {boolean} [redraw]\n     *        Whether to redraw after update.\n     */\n    Navigator.prototype.setBaseSeries = function (baseSeriesOptions, redraw) {\n        var chart = this.chart,\n            baseSeries = this.baseSeries = [];\n        baseSeriesOptions = (baseSeriesOptions ||\n            chart.options && chart.options.navigator.baseSeries ||\n            (chart.series.length ?\n                // Find the first non-navigator series (#8430)\n                Navigator_find(chart.series, function (s) { return (!s.options.isInternal); }).index :\n                0));\n        // Iterate through series and add the ones that should be shown in\n        // navigator.\n        (chart.series || []).forEach(function (series, i) {\n            if (\n            // Don't include existing nav series\n            !series.options.isInternal &&\n                (series.options.showInNavigator ||\n                    (i === baseSeriesOptions ||\n                        series.options.id === baseSeriesOptions) &&\n                        series.options.showInNavigator !== false)) {\n                baseSeries.push(series);\n            }\n        });\n        // When run after render, this.xAxis already exists\n        if (this.xAxis && !this.xAxis.navigatorAxis.fake) {\n            this.updateNavigatorSeries(true, redraw);\n        }\n    };\n    /**\n     * Update series in the navigator from baseSeries, adding new if does not\n     * exist.\n     *\n     * @private\n     * @function Highcharts.Navigator.updateNavigatorSeries\n     */\n    Navigator.prototype.updateNavigatorSeries = function (addEvents, redraw) {\n        var _a,\n            _b;\n        var navigator = this,\n            chart = navigator.chart,\n            baseSeries = navigator.baseSeries,\n            navSeriesMixin = {\n                enableMouseTracking: false,\n                index: null, // #6162\n                linkedTo: null, // #6734\n                group: 'nav', // For columns\n                padXAxis: false,\n                xAxis: (_a = this.navigatorOptions.xAxis) === null || _a === void 0 ? void 0 : _a.id,\n                yAxis: (_b = this.navigatorOptions.yAxis) === null || _b === void 0 ? void 0 : _b.id,\n                showInLegend: false,\n                stacking: void 0, // #4823\n                isInternal: true,\n                states: {\n                    inactive: {\n                        opacity: 1\n                    }\n                }\n            }, \n            // Remove navigator series that are no longer in the baseSeries\n            navigatorSeries = navigator.series =\n                (navigator.series || []).filter(function (navSeries) {\n                    var base = navSeries.baseSeries;\n                if (baseSeries.indexOf(base) < 0) { // Not in array\n                    // If there is still a base series connected to this\n                    // series, remove event handler and reference.\n                    if (base) {\n                        Navigator_removeEvent(base, 'updatedData', navigator.updatedDataHandler);\n                        delete base.navigatorSeries;\n                    }\n                    // Kill the nav series. It may already have been\n                    // destroyed (#8715).\n                    if (navSeries.chart) {\n                        navSeries.destroy();\n                    }\n                    return false;\n                }\n                return true;\n            });\n        var baseOptions,\n            mergedNavSeriesOptions,\n            chartNavigatorSeriesOptions = navigator.navigatorOptions.series,\n            baseNavigatorOptions;\n        // Go through each base series and merge the options to create new\n        // series\n        if (baseSeries && baseSeries.length) {\n            baseSeries.forEach(function (base) {\n                var _a;\n                var linkedNavSeries = base.navigatorSeries,\n                    userNavOptions = Navigator_extend(\n                    // Grab color and visibility from base as default\n                    {\n                        color: base.color,\n                        visible: base.visible\n                    }, !isArray(chartNavigatorSeriesOptions) ?\n                        chartNavigatorSeriesOptions :\n                        Navigator_defaultOptions.navigator.series);\n                // Don't update if the series exists in nav and we have disabled\n                // adaptToUpdatedData.\n                if (linkedNavSeries &&\n                    navigator.navigatorOptions.adaptToUpdatedData === false) {\n                    return;\n                }\n                navSeriesMixin.name = 'Navigator ' + baseSeries.length;\n                baseOptions = base.options || {};\n                baseNavigatorOptions = baseOptions.navigatorOptions || {};\n                // The dataLabels options are not merged correctly\n                // if the settings are an array, #13847.\n                userNavOptions.dataLabels = splat(userNavOptions.dataLabels);\n                mergedNavSeriesOptions = Navigator_merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);\n                // Once nav series type is resolved, pick correct pointRange\n                mergedNavSeriesOptions.pointRange = Navigator_pick(\n                // Stricte set pointRange in options\n                userNavOptions.pointRange, baseNavigatorOptions.pointRange, \n                // Fallback to default values, e.g. `null` for column\n                Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line'].pointRange);\n                // Merge data separately. Do a slice to avoid mutating the\n                // navigator options from base series (#4923).\n                var navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data;\n                navigator.hasNavigatorData =\n                    navigator.hasNavigatorData || !!navigatorSeriesData;\n                mergedNavSeriesOptions.data = (navigatorSeriesData ||\n                    ((_a = baseOptions.data) === null || _a === void 0 ? void 0 : _a.slice(0)));\n                // Update or add the series\n                if (linkedNavSeries && linkedNavSeries.options) {\n                    linkedNavSeries.update(mergedNavSeriesOptions, redraw);\n                }\n                else {\n                    base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);\n                    // Set data on initial run with dataSorting enabled (#20318)\n                    chart.setSortedData();\n                    base.navigatorSeries.baseSeries = base; // Store ref\n                    navigatorSeries.push(base.navigatorSeries);\n                }\n            });\n        }\n        // If user has defined data (and no base series) or explicitly defined\n        // navigator.series as an array, we create these series on top of any\n        // base series.\n        if (chartNavigatorSeriesOptions.data &&\n            !(baseSeries && baseSeries.length) ||\n            isArray(chartNavigatorSeriesOptions)) {\n            navigator.hasNavigatorData = false;\n            // Allow navigator.series to be an array\n            chartNavigatorSeriesOptions =\n                splat(chartNavigatorSeriesOptions);\n            chartNavigatorSeriesOptions.forEach(function (userSeriesOptions, i) {\n                navSeriesMixin.name =\n                    'Navigator ' + (navigatorSeries.length + 1);\n                mergedNavSeriesOptions = Navigator_merge(Navigator_defaultOptions.navigator.series, {\n                    // Since we don't have a base series to pull color from,\n                    // try to fake it by using color from series with same\n                    // index. Otherwise pull from the colors array. We need\n                    // an explicit color as otherwise updates will increment\n                    // color counter and we'll get a new color for each\n                    // update of the nav series.\n                    color: chart.series[i] &&\n                        !chart.series[i].options.isInternal &&\n                        chart.series[i].color ||\n                        chart.options.colors[i] ||\n                        chart.options.colors[0]\n                }, navSeriesMixin, userSeriesOptions);\n                mergedNavSeriesOptions.data = userSeriesOptions.data;\n                if (mergedNavSeriesOptions.data) {\n                    navigator.hasNavigatorData = true;\n                    navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));\n                }\n            });\n        }\n        if (addEvents) {\n            this.addBaseSeriesEvents();\n        }\n    };\n    /**\n     * Add data events.\n     * For example when main series is updated we need to recalculate extremes\n     *\n     * @private\n     * @function Highcharts.Navigator#addBaseSeriesEvent\n     */\n    Navigator.prototype.addBaseSeriesEvents = function () {\n        var _this = this;\n        var navigator = this,\n            baseSeries = navigator.baseSeries || [];\n        // Bind modified extremes event to first base's xAxis only.\n        // In event of > 1 base-xAxes, the navigator will ignore those.\n        // Adding this multiple times to the same axis is no problem, as\n        // duplicates should be discarded by the browser.\n        if (baseSeries[0] && baseSeries[0].xAxis) {\n            baseSeries[0].eventsToUnbind.push(Navigator_addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes));\n        }\n        baseSeries.forEach(function (base) {\n            // Link base series show/hide to navigator series visibility\n            base.eventsToUnbind.push(Navigator_addEvent(base, 'show', function () {\n                if (this.navigatorSeries) {\n                    this.navigatorSeries.setVisible(true, false);\n                }\n            }));\n            base.eventsToUnbind.push(Navigator_addEvent(base, 'hide', function () {\n                if (this.navigatorSeries) {\n                    this.navigatorSeries.setVisible(false, false);\n                }\n            }));\n            // Respond to updated data in the base series, unless explicitly\n            // not adapting to data changes.\n            if (_this.navigatorOptions.adaptToUpdatedData !== false) {\n                if (base.xAxis) {\n                    base.eventsToUnbind.push(Navigator_addEvent(base, 'updatedData', _this.updatedDataHandler));\n                }\n            }\n            // Handle series removal\n            base.eventsToUnbind.push(Navigator_addEvent(base, 'remove', function () {\n                if (baseSeries) {\n                    erase(baseSeries, base); // #21043\n                }\n                if (this.navigatorSeries && navigator.series) {\n                    erase(navigator.series, this.navigatorSeries);\n                    if (Navigator_defined(this.navigatorSeries.options)) {\n                        this.navigatorSeries.remove(false);\n                    }\n                    delete this.navigatorSeries;\n                }\n            }));\n        });\n    };\n    /**\n     * Get minimum from all base series connected to the navigator\n     * @private\n     * @param {number} currentSeriesMin\n     *        Minium from the current series\n     * @return {number}\n     *         Minimum from all series\n     */\n    Navigator.prototype.getBaseSeriesMin = function (currentSeriesMin) {\n        return this.baseSeries.reduce(function (min, series) {\n            var _a;\n            // #10193\n            return Math.min(min, (_a = series.getColumn('x')[0]) !== null && _a !== void 0 ? _a : min);\n        }, currentSeriesMin);\n    };\n    /**\n     * Set the navigator x axis extremes to reflect the total. The navigator\n     * extremes should always be the extremes of the union of all series in the\n     * chart as well as the navigator series.\n     *\n     * @private\n     * @function Highcharts.Navigator#modifyNavigatorAxisExtremes\n     */\n    Navigator.prototype.modifyNavigatorAxisExtremes = function () {\n        var xAxis = this.xAxis;\n        if (typeof xAxis.getExtremes !== 'undefined') {\n            var unionExtremes = this.getUnionExtremes(true);\n            if (unionExtremes &&\n                (unionExtremes.dataMin !== xAxis.min ||\n                    unionExtremes.dataMax !== xAxis.max)) {\n                xAxis.min = unionExtremes.dataMin;\n                xAxis.max = unionExtremes.dataMax;\n            }\n        }\n    };\n    /**\n     * Hook to modify the base axis extremes with information from the Navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#modifyBaseAxisExtremes\n     */\n    Navigator.prototype.modifyBaseAxisExtremes = function () {\n        var _a;\n        var baseXAxis = this,\n            navigator = baseXAxis.chart.navigator,\n            baseExtremes = baseXAxis.getExtremes(),\n            baseMin = baseExtremes.min,\n            baseMax = baseExtremes.max,\n            baseDataMin = baseExtremes.dataMin,\n            baseDataMax = baseExtremes.dataMax,\n            range = baseMax - baseMin,\n            stickToMin = navigator.stickToMin,\n            stickToMax = navigator.stickToMax,\n            overscroll = Navigator_pick((_a = baseXAxis.ordinal) === null || _a === void 0 ? void 0 : _a.convertOverscroll(baseXAxis.options.overscroll), 0),\n            navigatorSeries = navigator.series && navigator.series[0],\n            hasSetExtremes = !!baseXAxis.setExtremes, \n            // When the extremes have been set by range selector button, don't\n            // stick to min or max. The range selector buttons will handle the\n            // extremes. (#5489)\n            unmutable = baseXAxis.eventArgs &&\n                baseXAxis.eventArgs.trigger === 'rangeSelectorButton';\n        var newMax,\n            newMin;\n        if (!unmutable) {\n            // If the zoomed range is already at the min, move it to the right\n            // as new data comes in\n            if (stickToMin) {\n                newMin = baseDataMin;\n                newMax = newMin + range;\n            }\n            // If the zoomed range is already at the max, move it to the right\n            // as new data comes in\n            if (stickToMax) {\n                newMax = baseDataMax + overscroll;\n                // If stickToMin is true, the new min value is set above\n                if (!stickToMin) {\n                    newMin = Math.max(baseDataMin, // Don't go below data extremes (#13184)\n                    newMax - range, navigator.getBaseSeriesMin(navigatorSeries && navigatorSeries.xData ?\n                        navigatorSeries.xData[0] :\n                        -Number.MAX_VALUE));\n                }\n            }\n            // Update the extremes\n            if (hasSetExtremes && (stickToMin || stickToMax)) {\n                if (Navigator_isNumber(newMin)) {\n                    baseXAxis.min = baseXAxis.userMin = newMin;\n                    baseXAxis.max = baseXAxis.userMax = newMax;\n                }\n            }\n        }\n        // Reset\n        navigator.stickToMin =\n            navigator.stickToMax = null;\n    };\n    /**\n     * Handler for updated data on the base series. When data is modified, the\n     * navigator series must reflect it. This is called from the Chart.redraw\n     * function before axis and series extremes are computed.\n     *\n     * @private\n     * @function Highcharts.Navigator#updateDataHandler\n     */\n    Navigator.prototype.updatedDataHandler = function () {\n        var navigator = this.chart.navigator,\n            baseSeries = this,\n            navigatorSeries = this.navigatorSeries,\n            shouldStickToMax = navigator.reversedExtremes ?\n                Math.round(navigator.zoomedMin) === 0 :\n                Math.round(navigator.zoomedMax) >= Math.round(navigator.size);\n        // If the scrollbar is scrolled all the way to the right, keep right as\n        // new data comes in, unless user set navigator.stickToMax to false.\n        navigator.stickToMax = Navigator_pick(this.chart.options.navigator &&\n            this.chart.options.navigator.stickToMax, shouldStickToMax);\n        navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);\n        // Set the navigator series data to the new data of the base series\n        if (navigatorSeries && !navigator.hasNavigatorData) {\n            navigatorSeries.options.pointStart = baseSeries.getColumn('x')[0];\n            navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414\n        }\n    };\n    /**\n     * Detect if the zoomed area should stick to the minimum, #14742.\n     *\n     * @private\n     * @function Highcharts.Navigator#shouldStickToMin\n     */\n    Navigator.prototype.shouldStickToMin = function (baseSeries, navigator) {\n        var xDataMin = navigator.getBaseSeriesMin(baseSeries.getColumn('x')[0]),\n            xAxis = baseSeries.xAxis,\n            max = xAxis.max,\n            min = xAxis.min,\n            range = xAxis.options.range;\n        var stickToMin = true;\n        if (Navigator_isNumber(max) && Navigator_isNumber(min)) {\n            // If range declared, stick to the minimum only if the range\n            // is smaller than the data set range.\n            if (range && max - xDataMin > 0) {\n                stickToMin = max - xDataMin < range;\n            }\n            else {\n                // If the current axis minimum falls outside the new\n                // updated dataset, we must adjust.\n                stickToMin = min <= xDataMin;\n            }\n        }\n        else {\n            stickToMin = false; // #15864\n        }\n        return stickToMin;\n    };\n    /**\n     * Add chart events, like redrawing navigator, when chart requires that.\n     *\n     * @private\n     * @function Highcharts.Navigator#addChartEvents\n     */\n    Navigator.prototype.addChartEvents = function () {\n        if (!this.eventsToUnbind) {\n            this.eventsToUnbind = [];\n        }\n        this.eventsToUnbind.push(\n        // Move the scrollbar after redraw, like after data updata even if\n        // axes don't redraw\n        Navigator_addEvent(this.chart, 'redraw', function () {\n            var navigator = this.navigator,\n                xAxis = navigator && (navigator.baseSeries &&\n                    navigator.baseSeries[0] &&\n                    navigator.baseSeries[0].xAxis ||\n                    this.xAxis[0]); // #5709, #13114\n                if (xAxis) {\n                    navigator.render(xAxis.min,\n                xAxis.max);\n            }\n        }), \n        // Make room for the navigator, can be placed around the chart:\n        Navigator_addEvent(this.chart, 'getMargins', function () {\n            var chart = this,\n                navigator = chart.navigator;\n            var marginName = navigator.opposite ?\n                    'plotTop' : 'marginBottom';\n            if (chart.inverted) {\n                marginName = navigator.opposite ?\n                    'marginRight' : 'plotLeft';\n            }\n            chart[marginName] =\n                (chart[marginName] || 0) + (navigator.navigatorEnabled || !chart.inverted ?\n                    navigator.height + navigator.scrollbarHeight :\n                    0) + navigator.navigatorOptions.margin;\n        }), Navigator_addEvent(Navigator, 'setRange', function (e) {\n            this.chart.xAxis[0].setExtremes(e.min, e.max, e.redraw, e.animation, e.eventArguments);\n        }));\n    };\n    /**\n     * Destroys allocated elements.\n     *\n     * @private\n     * @function Highcharts.Navigator#destroy\n     */\n    Navigator.prototype.destroy = function () {\n        var _this = this;\n        // Disconnect events added in addEvents\n        this.removeEvents();\n        if (this.xAxis) {\n            erase(this.chart.xAxis, this.xAxis);\n            erase(this.chart.axes, this.xAxis);\n        }\n        if (this.yAxis) {\n            erase(this.chart.yAxis, this.yAxis);\n            erase(this.chart.axes, this.yAxis);\n        }\n        // Destroy series\n        (this.series || []).forEach(function (s) {\n            if (s.destroy) {\n                s.destroy();\n            }\n        });\n        // Destroy properties\n        [\n            'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',\n            'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',\n            'rendered'\n        ].forEach(function (prop) {\n            if (_this[prop] && _this[prop].destroy) {\n                _this[prop].destroy();\n            }\n            _this[prop] = null;\n        });\n        // Destroy elements in collection\n        [this.handles].forEach(function (coll) {\n            Navigator_destroyObjectProperties(coll);\n        });\n        this.navigatorEnabled = false;\n    };\n    return Navigator;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Navigator_Navigator = (Navigator);\n\n;// ./code/es5/es-modules/Accessibility/Components/NavigatorComponent.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  Accessibility component for the navigator.\n *\n *  Author: Øystein Moseng\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar NavigatorComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n/* *\n *\n *  Imports\n *\n * */\n\n\n\n\n\nvar NavigatorComponent_animObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).animObject;\n\nvar NavigatorComponent_format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar NavigatorComponent_clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, NavigatorComponent_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, NavigatorComponent_syncTimeout = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).syncTimeout;\n\nvar NavigatorComponent_getFakeMouseEvent = Utils_HTMLUtilities.getFakeMouseEvent;\n\nvar NavigatorComponent_getAxisRangeDescription = Utils_ChartUtilities.getAxisRangeDescription, NavigatorComponent_fireEventOnWrappedOrUnwrappedElement = Utils_ChartUtilities.fireEventOnWrappedOrUnwrappedElement;\n/**\n * The NavigatorComponent class\n *\n * @private\n * @class\n * @name Highcharts.NavigatorComponent\n */\nvar NavigatorComponent = /** @class */ (function (_super) {\n    NavigatorComponent_extends(NavigatorComponent, _super);\n    function NavigatorComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * Init the component\n     * @private\n     */\n    NavigatorComponent.prototype.init = function () {\n        var chart = this.chart,\n            component = this;\n        this.announcer = new Utils_Announcer(chart, 'polite');\n        // Update positions after render\n        this.addEvent(Navigator_Navigator, 'afterRender', function () {\n            if (this.chart === component.chart &&\n                this.chart.renderer) {\n                NavigatorComponent_syncTimeout(function () {\n                    component.proxyProvider\n                        .updateGroupProxyElementPositions('navigator');\n                    component.updateHandleValues();\n                }, NavigatorComponent_animObject(NavigatorComponent_pick(this.chart.renderer.globalAnimation, true)).duration);\n            }\n        });\n    };\n    /**\n     * Called on updates\n     * @private\n     */\n    NavigatorComponent.prototype.onChartUpdate = function () {\n        var _this = this;\n        var _a,\n            _b,\n            _c;\n        var chart = this.chart,\n            options = chart.options,\n            navigator = options.navigator;\n        if (navigator.enabled && ((_a = navigator.accessibility) === null || _a === void 0 ? void 0 : _a.enabled)) {\n            var verbosity = options.accessibility.landmarkVerbosity,\n                groupFormatStr = (_b = options.lang\n                    .accessibility) === null || _b === void 0 ? void 0 : _b.navigator.groupLabel;\n            // We just recreate the group for simplicity. Could consider\n            // updating the existing group if the verbosity has not changed.\n            this.proxyProvider.removeGroup('navigator');\n            this.proxyProvider.addGroup('navigator', 'div', {\n                role: verbosity === 'all' ? 'region' : 'group',\n                'aria-label': NavigatorComponent_format(groupFormatStr, { chart: chart }, chart)\n            });\n            var handleFormatStr_1 = (_c = options.lang\n                    .accessibility) === null || _c === void 0 ? void 0 : _c.navigator.handleLabel;\n            [0, 1].forEach(function (n) {\n                var handle = _this.getHandleByIx(n);\n                if (handle) {\n                    var proxyEl = _this.proxyProvider.addProxyElement('navigator', {\n                            click: handle\n                        }, 'input', {\n                            type: 'range',\n                            'aria-label': NavigatorComponent_format(handleFormatStr_1, { handleIx: n,\n                        chart: chart },\n                        chart)\n                        });\n                    _this[n ? 'maxHandleProxy' : 'minHandleProxy'] =\n                        proxyEl.innerElement;\n                    proxyEl.innerElement.style.pointerEvents = 'none';\n                    proxyEl.innerElement.oninput =\n                        function () { return _this.updateNavigator(); };\n                }\n            });\n            this.updateHandleValues();\n        }\n        else {\n            this.proxyProvider.removeGroup('navigator');\n        }\n    };\n    /**\n     * Get navigation for a navigator handle.\n     * @private\n     * @return {Highcharts.KeyboardNavigationHandler} The module object.\n     */\n    NavigatorComponent.prototype.getNavigatorHandleNavigation = function (handleIx) {\n        var _this = this;\n        var component = this,\n            chart = this.chart,\n            proxyEl = handleIx ? this.maxHandleProxy : this.minHandleProxy,\n            keys = this.keyCodes;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [[\n                    [keys.left, keys.right, keys.up, keys.down],\n                    function (keyCode) {\n                        if (proxyEl) {\n                            var delta = keyCode === keys.left ||\n                                    keyCode === keys.up ? -1 : 1;\n                            proxyEl.value = '' + NavigatorComponent_clamp(parseFloat(proxyEl.value) + delta, 0, 100);\n                            component.updateNavigator(function () {\n                                var handle = component.getHandleByIx(handleIx);\n                                if (handle) {\n                                    chart.setFocusToElement(handle, proxyEl);\n                                }\n                            });\n                        }\n                        return this.response.success;\n                    }\n                ]],\n            init: function () {\n                chart.setFocusToElement(_this.getHandleByIx(handleIx), proxyEl);\n            },\n            validate: function () {\n                var _a;\n                return !!(_this.getHandleByIx(handleIx) && proxyEl &&\n                    ((_a = chart.options.navigator.accessibility) === null || _a === void 0 ? void 0 : _a.enabled));\n            }\n        });\n    };\n    /**\n     * Get keyboard navigation handlers for this component.\n     * @return {Array<Highcharts.KeyboardNavigationHandler>}\n     *         List of module objects.\n     */\n    NavigatorComponent.prototype.getKeyboardNavigation = function () {\n        return [\n            this.getNavigatorHandleNavigation(0),\n            this.getNavigatorHandleNavigation(1)\n        ];\n    };\n    /**\n     * Remove component traces\n     */\n    NavigatorComponent.prototype.destroy = function () {\n        if (this.updateNavigatorThrottleTimer) {\n            clearTimeout(this.updateNavigatorThrottleTimer);\n        }\n        this.proxyProvider.removeGroup('navigator');\n        if (this.announcer) {\n            this.announcer.destroy();\n        }\n    };\n    /**\n     * Update the value of the handles to match current navigator pos.\n     * @private\n     */\n    NavigatorComponent.prototype.updateHandleValues = function () {\n        var navigator = this.chart.navigator;\n        if (navigator && this.minHandleProxy && this.maxHandleProxy) {\n            var length_1 = navigator.size;\n            this.minHandleProxy.value =\n                '' + Math.round(navigator.zoomedMin / length_1 * 100);\n            this.maxHandleProxy.value =\n                '' + Math.round(navigator.zoomedMax / length_1 * 100);\n        }\n    };\n    /**\n     * Get a navigator handle by its index\n     * @private\n     */\n    NavigatorComponent.prototype.getHandleByIx = function (ix) {\n        var navigator = this.chart.navigator;\n        return navigator && navigator.handles &&\n            navigator.handles[ix];\n    };\n    /**\n     * Update navigator to match changed proxy values.\n     * @private\n     */\n    NavigatorComponent.prototype.updateNavigator = function (beforeAnnounce) {\n        var _this = this;\n        var performUpdate = function (beforeAnnounce) {\n                var _a;\n            var chart = _this.chart,\n                navigator = chart.navigator,\n                pointer = chart.pointer;\n            if (navigator &&\n                pointer &&\n                _this.minHandleProxy &&\n                _this.maxHandleProxy) {\n                var chartPos_1 = pointer.getChartPosition(),\n                    minNewX = parseFloat(_this.minHandleProxy.value) /\n                        100 * navigator.size,\n                    maxNewX = parseFloat(_this.maxHandleProxy.value) /\n                        100 * navigator.size;\n                // Fire fake events in order for each handle.\n                [\n                    [0, 'mousedown', navigator.zoomedMin],\n                    [0, 'mousemove', minNewX],\n                    [0, 'mouseup', minNewX],\n                    [1, 'mousedown', navigator.zoomedMax],\n                    [1, 'mousemove', maxNewX],\n                    [1, 'mouseup', maxNewX]\n                ].forEach(function (_a) {\n                    var _b;\n                    var handleIx = _a[0],\n                        type = _a[1],\n                        x = _a[2];\n                    var handle = (_b = _this.getHandleByIx(handleIx)) === null || _b === void 0 ? void 0 : _b.element;\n                    if (handle) {\n                        NavigatorComponent_fireEventOnWrappedOrUnwrappedElement(handle, NavigatorComponent_getFakeMouseEvent(type, {\n                            x: chartPos_1.left + navigator.left + x,\n                            y: chartPos_1.top + navigator.top\n                        }, handle));\n                    }\n                });\n                if (beforeAnnounce) {\n                    beforeAnnounce();\n                }\n                // Announce the update\n                var announceFormatStr = (_a = chart.options.lang\n                        .accessibility) === null || _a === void 0 ? void 0 : _a.navigator.changeAnnouncement,\n                    axisRangeDescription = NavigatorComponent_getAxisRangeDescription(chart.xAxis[0]);\n                _this.announcer.announce(NavigatorComponent_format(announceFormatStr, { axisRangeDescription: axisRangeDescription, chart: chart }, chart));\n            }\n        };\n        // Throttle updates so as not to reduce performance with\n        // continuous keypress.\n        if (this.updateNavigatorThrottleTimer) {\n            clearTimeout(this.updateNavigatorThrottleTimer);\n        }\n        this.updateNavigatorThrottleTimer = setTimeout(performUpdate.bind(this, beforeAnnounce), 20);\n    };\n    return NavigatorComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Export Default\n *\n * */\n/* harmony default export */ var Components_NavigatorComponent = (NavigatorComponent);\n\n;// ./code/es5/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Place desriptions on a series and its points.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar SeriesDescriber_getPointAnnotationTexts = Components_AnnotationsA11y.getPointAnnotationTexts;\n\nvar SeriesDescriber_getAxisDescription = Utils_ChartUtilities.getAxisDescription, SeriesDescriber_getSeriesFirstPointElement = Utils_ChartUtilities.getSeriesFirstPointElement, SeriesDescriber_getSeriesA11yElement = Utils_ChartUtilities.getSeriesA11yElement, SeriesDescriber_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT;\n\nvar SeriesDescriber_format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format, numberFormat = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).numberFormat;\n\nvar SeriesDescriber_reverseChildNodes = Utils_HTMLUtilities.reverseChildNodes, SeriesDescriber_stripHTMLTags = Utils_HTMLUtilities.stripHTMLTagsFromString;\n\nvar SeriesDescriber_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, SeriesDescriber_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, SeriesDescriber_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, SeriesDescriber_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction findFirstPointWithGraphic(point) {\n    var sourcePointIndex = point.index;\n    if (!point.series || !point.series.data || !SeriesDescriber_defined(sourcePointIndex)) {\n        return null;\n    }\n    return SeriesDescriber_find(point.series.data, function (p) {\n        return !!(p &&\n            typeof p.index !== 'undefined' &&\n            p.index > sourcePointIndex &&\n            p.graphic &&\n            p.graphic.element);\n    }) || null;\n}\n/**\n * Whether or not we should add a mock point element in\n * order to describe a point that has no graphic.\n * @private\n */\nfunction shouldAddMockPoint(point) {\n    // Note: Sunburst series use isNull for hidden points on drilldown.\n    // Ignore these.\n    var series = point.series,\n        chart = series && series.chart,\n        isSunburst = series && series.is('sunburst'),\n        isNull = point.isNull,\n        shouldDescribeNull = chart &&\n            chart\n                .options.accessibility.point.describeNull;\n    return isNull && !isSunburst && shouldDescribeNull;\n}\n/**\n * @private\n */\nfunction makeMockElement(point, pos) {\n    var renderer = point.series.chart.renderer,\n        mock = renderer.rect(pos.x,\n        pos.y, 1, 1);\n    mock.attr({\n        'class': 'highcharts-a11y-mock-point',\n        fill: 'none',\n        opacity: 0,\n        'fill-opacity': 0,\n        'stroke-opacity': 0\n    });\n    return mock;\n}\n/**\n * @private\n */\nfunction addMockPointElement(point) {\n    var series = point.series,\n        firstPointWithGraphic = findFirstPointWithGraphic(point),\n        firstGraphic = firstPointWithGraphic && firstPointWithGraphic.graphic,\n        parentGroup = firstGraphic ?\n            firstGraphic.parentGroup :\n            series.graph || series.group,\n        mockPos = firstPointWithGraphic ? {\n            x: SeriesDescriber_pick(point.plotX,\n        firstPointWithGraphic.plotX, 0),\n            y: SeriesDescriber_pick(point.plotY,\n        firstPointWithGraphic.plotY, 0)\n        } : {\n            x: SeriesDescriber_pick(point.plotX, 0),\n            y: SeriesDescriber_pick(point.plotY, 0)\n        },\n        mockElement = makeMockElement(point,\n        mockPos);\n    if (parentGroup && parentGroup.element) {\n        point.graphic = mockElement;\n        point.hasMockGraphic = true;\n        mockElement.add(parentGroup);\n        // Move to correct pos in DOM\n        parentGroup.element.insertBefore(mockElement.element, firstGraphic ? firstGraphic.element : null);\n        return mockElement.element;\n    }\n}\n/**\n * @private\n */\nfunction hasMorePointsThanDescriptionThreshold(series) {\n    var chartA11yOptions = series.chart.options.accessibility,\n        threshold = (chartA11yOptions.series.pointDescriptionEnabledThreshold);\n    return !!(threshold !== false &&\n        series.points &&\n        series.points.length >= +threshold);\n}\n/**\n * @private\n */\nfunction shouldSetScreenReaderPropsOnPoints(series) {\n    var seriesA11yOptions = series.options.accessibility || {};\n    return !hasMorePointsThanDescriptionThreshold(series) &&\n        !seriesA11yOptions.exposeAsGroupOnly;\n}\n/**\n * @private\n */\nfunction shouldSetKeyboardNavPropsOnPoints(series) {\n    var chartA11yOptions = series.chart.options.accessibility,\n        seriesNavOptions = chartA11yOptions.keyboardNavigation.seriesNavigation;\n    return !!(series.points && (series.points.length <\n        +seriesNavOptions.pointNavigationEnabledThreshold ||\n        seriesNavOptions.pointNavigationEnabledThreshold === false));\n}\n/**\n * @private\n */\nfunction shouldDescribeSeriesElement(series) {\n    var chart = series.chart,\n        chartOptions = chart.options.chart,\n        chartHas3d = chartOptions.options3d && chartOptions.options3d.enabled,\n        hasMultipleSeries = chart.series.length > 1,\n        describeSingleSeriesOption = chart.options.accessibility.series.describeSingleSeries,\n        exposeAsGroupOnlyOption = (series.options.accessibility || {}).exposeAsGroupOnly,\n        noDescribe3D = chartHas3d && hasMultipleSeries;\n    return !noDescribe3D && (hasMultipleSeries || describeSingleSeriesOption ||\n        exposeAsGroupOnlyOption || hasMorePointsThanDescriptionThreshold(series));\n}\n/**\n * @private\n */\nfunction pointNumberToString(point, value) {\n    var series = point.series,\n        chart = series.chart,\n        a11yPointOptions = chart.options.accessibility.point || {},\n        seriesA11yPointOptions = series.options.accessibility &&\n            series.options.accessibility.point || {},\n        tooltipOptions = series.tooltipOptions || {},\n        lang = chart.options.lang;\n    if (SeriesDescriber_isNumber(value)) {\n        return numberFormat(value, seriesA11yPointOptions.valueDecimals ||\n            a11yPointOptions.valueDecimals ||\n            tooltipOptions.valueDecimals ||\n            -1, lang.decimalPoint, lang.accessibility.thousandsSep || lang.thousandsSep);\n    }\n    return value;\n}\n/**\n * @private\n */\nfunction getSeriesDescriptionText(series) {\n    var seriesA11yOptions = series.options.accessibility || {},\n        descOpt = seriesA11yOptions.description;\n    return descOpt && series.chart.langFormat('accessibility.series.description', {\n        description: descOpt,\n        series: series\n    }) || '';\n}\n/**\n * @private\n */\nfunction getSeriesAxisDescriptionText(series, axisCollection) {\n    var axis = series[axisCollection];\n    return series.chart.langFormat('accessibility.series.' + axisCollection + 'Description', {\n        name: SeriesDescriber_getAxisDescription(axis),\n        series: series\n    });\n}\n/**\n * Get accessible time description for a point on a datetime axis.\n *\n * @private\n */\nfunction getPointA11yTimeDescription(point) {\n    var series = point.series,\n        chart = series.chart,\n        seriesA11yOptions = series.options.accessibility &&\n            series.options.accessibility.point || {},\n        a11yOptions = chart.options.accessibility.point || {},\n        dateXAxis = series.xAxis && series.xAxis.dateTime;\n    if (dateXAxis) {\n        var tooltipDateFormat = dateXAxis.getXDateFormat(point.x || 0,\n            chart.options.tooltip.dateTimeLabelFormats),\n            dateFormat = seriesA11yOptions.dateFormatter &&\n                seriesA11yOptions.dateFormatter(point) ||\n                a11yOptions.dateFormatter && a11yOptions.dateFormatter(point) ||\n                seriesA11yOptions.dateFormat ||\n                a11yOptions.dateFormat ||\n                tooltipDateFormat;\n        return chart.time.dateFormat(dateFormat, point.x || 0, void 0);\n    }\n}\n/**\n * @private\n */\nfunction getPointXDescription(point) {\n    var timeDesc = getPointA11yTimeDescription(point), xAxis = point.series.xAxis || {}, pointCategory = xAxis.categories && SeriesDescriber_defined(point.category) &&\n            ('' + point.category).replace('<br/>', ' '), canUseId = SeriesDescriber_defined(point.id) &&\n            ('' + point.id).indexOf('highcharts-') < 0, fallback = 'x, ' + point.x;\n    return point.name || timeDesc || pointCategory ||\n        (canUseId ? point.id : fallback);\n}\n/**\n * @private\n */\nfunction getPointArrayMapValueDescription(point, prefix, suffix) {\n    var pre = prefix || '', suf = suffix || '', keyToValStr = function (key) {\n            var num = pointNumberToString(point, SeriesDescriber_pick(point[key], point.options[key]));\n        return num !== void 0 ?\n            key + ': ' + pre + num + suf :\n            num;\n    }, pointArrayMap = point.series.pointArrayMap;\n    return pointArrayMap.reduce(function (desc, key) {\n        var propDesc = keyToValStr(key);\n        return propDesc ?\n            (desc + (desc.length ? ', ' : '') + propDesc) :\n            desc;\n    }, '');\n}\n/**\n * @private\n */\nfunction getPointValue(point) {\n    var series = point.series,\n        a11yPointOpts = series.chart.options.accessibility.point || {},\n        seriesA11yPointOpts = series.chart.options.accessibility &&\n            series.chart.options.accessibility.point || {},\n        tooltipOptions = series.tooltipOptions || {},\n        valuePrefix = seriesA11yPointOpts.valuePrefix ||\n            a11yPointOpts.valuePrefix ||\n            tooltipOptions.valuePrefix ||\n            '',\n        valueSuffix = seriesA11yPointOpts.valueSuffix ||\n            a11yPointOpts.valueSuffix ||\n            tooltipOptions.valueSuffix ||\n            '',\n        fallbackKey = (typeof point.value !==\n            'undefined' ?\n            'value' : 'y'),\n        fallbackDesc = pointNumberToString(point,\n        point[fallbackKey]);\n    if (point.isNull) {\n        return series.chart.langFormat('accessibility.series.nullPointValue', {\n            point: point\n        });\n    }\n    if (series.pointArrayMap) {\n        return getPointArrayMapValueDescription(point, valuePrefix, valueSuffix);\n    }\n    return valuePrefix + fallbackDesc + valueSuffix;\n}\n/**\n * Return the description for the annotation(s) connected to a point, or\n * empty string if none.\n *\n * @private\n * @param {Highcharts.Point} point\n * The data point to get the annotation info from.\n * @return {string}\n * Annotation description\n */\nfunction getPointAnnotationDescription(point) {\n    var chart = point.series.chart;\n    var langKey = 'accessibility.series.pointAnnotationsDescription';\n    var annotations = SeriesDescriber_getPointAnnotationTexts(point);\n    var context = { point: point,\n        annotations: annotations };\n    return annotations.length ? chart.langFormat(langKey, context) : '';\n}\n/**\n * Return string with information about point.\n * @private\n */\nfunction getPointValueDescription(point) {\n    var series = point.series, chart = series.chart, seriesA11yOptions = series.options.accessibility, seriesValueDescFormat = seriesA11yOptions && seriesA11yOptions.point &&\n            seriesA11yOptions.point.valueDescriptionFormat, pointValueDescriptionFormat = seriesValueDescFormat ||\n            chart.options.accessibility.point.valueDescriptionFormat, showXDescription = SeriesDescriber_pick(series.xAxis &&\n            series.xAxis.options.accessibility &&\n            series.xAxis.options.accessibility.enabled, !chart.angular && series.type !== 'flowmap'), xDesc = showXDescription ? getPointXDescription(point) : '', context = {\n            point: point,\n            index: SeriesDescriber_defined(point.index) ? (point.index + 1) : '',\n            xDescription: xDesc,\n            value: getPointValue(point),\n            separator: showXDescription ? ', ' : ''\n        };\n    return SeriesDescriber_format(pointValueDescriptionFormat, context, chart);\n}\n/**\n * Return string with information about point.\n * @private\n */\nfunction defaultPointDescriptionFormatter(point) {\n    var series = point.series, shouldExposeSeriesName = series.chart.series.length > 1 ||\n            series.options.name, valText = getPointValueDescription(point), description = point.options && point.options.accessibility &&\n            point.options.accessibility.description, userDescText = description ? ' ' + description : '', seriesNameText = shouldExposeSeriesName ? ' ' + series.name + '.' : '', annotationsDesc = getPointAnnotationDescription(point), pointAnnotationsText = annotationsDesc ? ' ' + annotationsDesc : '';\n    point.accessibility = point.accessibility || {};\n    point.accessibility.valueDescription = valText;\n    return valText + userDescText + seriesNameText + pointAnnotationsText;\n}\n/**\n * Set a11y props on a point element\n * @private\n * @param {Highcharts.Point} point\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} pointElement\n */\nfunction setPointScreenReaderAttribs(point, pointElement) {\n    var _a,\n        _b,\n        _c;\n    var series = point.series,\n        seriesPointA11yOptions = ((_a = series.options.accessibility) === null || _a === void 0 ? void 0 : _a.point) || {},\n        a11yPointOptions = series.chart.options.accessibility.point || {},\n        label = SeriesDescriber_stripHTMLTags((isString(seriesPointA11yOptions.descriptionFormat) &&\n            SeriesDescriber_format(seriesPointA11yOptions.descriptionFormat,\n        point,\n        series.chart)) ||\n            ((_b = seriesPointA11yOptions.descriptionFormatter) === null || _b === void 0 ? void 0 : _b.call(seriesPointA11yOptions,\n        point)) ||\n            (isString(a11yPointOptions.descriptionFormat) &&\n                SeriesDescriber_format(a11yPointOptions.descriptionFormat,\n        point,\n        series.chart)) ||\n            ((_c = a11yPointOptions.descriptionFormatter) === null || _c === void 0 ? void 0 : _c.call(a11yPointOptions,\n        point)) ||\n            defaultPointDescriptionFormatter(point),\n        series.chart.renderer.forExport);\n    pointElement.setAttribute('role', 'img');\n    pointElement.setAttribute('aria-label', label);\n}\n/**\n * Add accessible info to individual point elements of a series\n * @private\n * @param {Highcharts.Series} series\n */\nfunction describePointsInSeries(series) {\n    var setScreenReaderProps = shouldSetScreenReaderPropsOnPoints(series),\n        setKeyboardProps = shouldSetKeyboardNavPropsOnPoints(series),\n        shouldDescribeNullPoints = series.chart.options.accessibility\n            .point.describeNull;\n    if (setScreenReaderProps || setKeyboardProps) {\n        series.points.forEach(function (point) {\n            var pointEl = point.graphic && point.graphic.element ||\n                    shouldAddMockPoint(point) && addMockPointElement(point),\n                pointA11yDisabled = (point.options &&\n                    point.options.accessibility &&\n                    point.options.accessibility.enabled === false);\n            if (pointEl) {\n                if (point.isNull && !shouldDescribeNullPoints) {\n                    pointEl.setAttribute('aria-hidden', true);\n                    return;\n                }\n                // We always set tabindex, as long as we are setting props.\n                // When setting tabindex, also remove default outline to\n                // avoid ugly border on click.\n                pointEl.setAttribute('tabindex', '-1');\n                if (!series.chart.styledMode) {\n                    pointEl.style.outline = 'none';\n                }\n                if (setScreenReaderProps && !pointA11yDisabled) {\n                    setPointScreenReaderAttribs(point, pointEl);\n                }\n                else {\n                    pointEl.setAttribute('aria-hidden', true);\n                }\n            }\n        });\n    }\n}\n/**\n * Return string with information about series.\n * @private\n */\nfunction defaultSeriesDescriptionFormatter(series) {\n    var chart = series.chart,\n        chartTypes = chart.types || [],\n        description = getSeriesDescriptionText(series),\n        shouldDescribeAxis = function (coll) {\n            return chart[coll] && chart[coll].length > 1 && series[coll];\n    }, seriesNumber = series.index + 1, xAxisInfo = getSeriesAxisDescriptionText(series, 'xAxis'), yAxisInfo = getSeriesAxisDescriptionText(series, 'yAxis'), summaryContext = {\n        seriesNumber: seriesNumber,\n        series: series,\n        chart: chart\n    }, combinationSuffix = chartTypes.length > 1 ? 'Combination' : '', summary = chart.langFormat('accessibility.series.summary.' + series.type + combinationSuffix, summaryContext) || chart.langFormat('accessibility.series.summary.default' + combinationSuffix, summaryContext), axisDescription = (shouldDescribeAxis('yAxis') ? ' ' + yAxisInfo + '.' : '') + (shouldDescribeAxis('xAxis') ? ' ' + xAxisInfo + '.' : ''), formatStr = SeriesDescriber_pick(series.options.accessibility &&\n        series.options.accessibility.descriptionFormat, chart.options.accessibility.series.descriptionFormat, '');\n    return SeriesDescriber_format(formatStr, {\n        seriesDescription: summary,\n        authorDescription: (description ? ' ' + description : ''),\n        axisDescription: axisDescription,\n        series: series,\n        chart: chart,\n        seriesNumber: seriesNumber\n    }, void 0);\n}\n/**\n * Set a11y props on a series element\n * @private\n * @param {Highcharts.Series} series\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} seriesElement\n */\nfunction describeSeriesElement(series, seriesElement) {\n    var seriesA11yOptions = series.options.accessibility || {},\n        a11yOptions = series.chart.options.accessibility,\n        landmarkVerbosity = a11yOptions.landmarkVerbosity;\n    // Handle role attribute\n    if (seriesA11yOptions.exposeAsGroupOnly) {\n        seriesElement.setAttribute('role', 'img');\n    }\n    else if (landmarkVerbosity === 'all') {\n        seriesElement.setAttribute('role', 'region');\n    }\n    else {\n        seriesElement.setAttribute('role', 'group');\n    }\n    seriesElement.setAttribute('tabindex', '-1');\n    if (!series.chart.styledMode) {\n        // Don't show browser outline on click, despite tabindex\n        seriesElement.style.outline = 'none';\n    }\n    seriesElement.setAttribute('aria-label', SeriesDescriber_stripHTMLTags(a11yOptions.series.descriptionFormatter &&\n        a11yOptions.series.descriptionFormatter(series) ||\n        defaultSeriesDescriptionFormatter(series), series.chart.renderer.forExport));\n}\n/**\n * Put accessible info on series and points of a series.\n * @param {Highcharts.Series} series The series to add info on.\n */\nfunction describeSeries(series) {\n    var chart = series.chart,\n        firstPointEl = SeriesDescriber_getSeriesFirstPointElement(series),\n        seriesEl = SeriesDescriber_getSeriesA11yElement(series),\n        is3d = chart.is3d && chart.is3d();\n    if (seriesEl) {\n        // For some series types the order of elements do not match the\n        // order of points in series. In that case we have to reverse them\n        // in order for AT to read them out in an understandable order.\n        // Due to z-index issues we cannot do this for 3D charts.\n        if (seriesEl.lastChild === firstPointEl && !is3d) {\n            SeriesDescriber_reverseChildNodes(seriesEl);\n        }\n        describePointsInSeries(series);\n        SeriesDescriber_unhideChartElementFromAT(chart, seriesEl);\n        if (shouldDescribeSeriesElement(series)) {\n            describeSeriesElement(series, seriesEl);\n        }\n        else {\n            seriesEl.removeAttribute('aria-label');\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar SeriesDescriber = {\n    defaultPointDescriptionFormatter: defaultPointDescriptionFormatter,\n    defaultSeriesDescriptionFormatter: defaultSeriesDescriptionFormatter,\n    describeSeries: describeSeries\n};\n/* harmony default export */ var SeriesComponent_SeriesDescriber = (SeriesDescriber);\n\n;// ./code/es5/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Handle announcing new data for a chart.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar NewDataAnnouncer_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar NewDataAnnouncer_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, NewDataAnnouncer_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, NewDataAnnouncer_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n\n\nvar NewDataAnnouncer_getChartTitle = Utils_ChartUtilities.getChartTitle;\n\n\nvar NewDataAnnouncer_defaultPointDescriptionFormatter = SeriesComponent_SeriesDescriber.defaultPointDescriptionFormatter, NewDataAnnouncer_defaultSeriesDescriptionFormatter = SeriesComponent_SeriesDescriber.defaultSeriesDescriptionFormatter;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * @private\n */\nfunction chartHasAnnounceEnabled(chart) {\n    return !!chart.options.accessibility.announceNewData.enabled;\n}\n/**\n * @private\n */\nfunction findPointInDataArray(point) {\n    var candidates = point.series.data.filter(function (candidate) { return (point.x === candidate.x && point.y === candidate.y); });\n    return candidates.length === 1 ? candidates[0] : point;\n}\n/**\n * Get array of unique series from two arrays\n * @private\n */\nfunction getUniqueSeries(arrayA, arrayB) {\n    var uniqueSeries = (arrayA || []).concat(arrayB || []).reduce(function (acc,\n        cur) {\n            acc[cur.name + cur.index] = cur;\n        return acc;\n    }, {});\n    return Object\n        .keys(uniqueSeries)\n        .map(function (ix) { return uniqueSeries[ix]; });\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nvar NewDataAnnouncer = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function NewDataAnnouncer(chart) {\n        this.dirty = {\n            allSeries: {}\n        };\n        this.lastAnnouncementTime = 0;\n        this.chart = chart;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * Initialize the new data announcer.\n     * @private\n     */\n    NewDataAnnouncer.prototype.init = function () {\n        var chart = this.chart;\n        var announceOptions = (chart.options.accessibility.announceNewData);\n        var announceType = announceOptions.interruptUser ?\n                'assertive' : 'polite';\n        this.lastAnnouncementTime = 0;\n        this.dirty = {\n            allSeries: {}\n        };\n        this.eventProvider = new Utils_EventProvider();\n        this.announcer = new Utils_Announcer(chart, announceType);\n        this.addEventListeners();\n    };\n    /**\n     * Remove traces of announcer.\n     * @private\n     */\n    NewDataAnnouncer.prototype.destroy = function () {\n        this.eventProvider.removeAddedEvents();\n        this.announcer.destroy();\n    };\n    /**\n     * Add event listeners for the announcer\n     * @private\n     */\n    NewDataAnnouncer.prototype.addEventListeners = function () {\n        var announcer = this,\n            chart = this.chart,\n            e = this.eventProvider;\n        e.addEvent(chart, 'afterApplyDrilldown', function () {\n            announcer.lastAnnouncementTime = 0;\n        });\n        e.addEvent(chart, 'afterAddSeries', function (e) {\n            announcer.onSeriesAdded(e.series);\n        });\n        e.addEvent(chart, 'redraw', function () {\n            announcer.announceDirtyData();\n        });\n    };\n    /**\n     * On new data series added, update dirty list.\n     * @private\n     * @param {Highcharts.Series} series\n     */\n    NewDataAnnouncer.prototype.onSeriesAdded = function (series) {\n        if (chartHasAnnounceEnabled(this.chart)) {\n            this.dirty.hasDirty = true;\n            this.dirty.allSeries[series.name + series.index] = series;\n            // Add it to newSeries storage unless we already have one\n            this.dirty.newSeries = NewDataAnnouncer_defined(this.dirty.newSeries) ?\n                void 0 : series;\n        }\n    };\n    /**\n     * Gather what we know and announce the data to user.\n     * @private\n     */\n    NewDataAnnouncer.prototype.announceDirtyData = function () {\n        var chart = this.chart,\n            announcer = this;\n        if (chart.options.accessibility.announceNewData &&\n            this.dirty.hasDirty) {\n            var newPoint = this.dirty.newPoint;\n            // If we have a single new point, see if we can find it in the\n            // data array. Otherwise we can only pass through options to\n            // the description builder, and it is a bit sparse in info.\n            if (newPoint) {\n                newPoint = findPointInDataArray(newPoint);\n            }\n            this.queueAnnouncement(Object\n                .keys(this.dirty.allSeries)\n                .map(function (ix) {\n                return announcer.dirty.allSeries[ix];\n            }), this.dirty.newSeries, newPoint);\n            // Reset\n            this.dirty = {\n                allSeries: {}\n            };\n        }\n    };\n    /**\n     * Announce to user that there is new data.\n     * @private\n     * @param {Array<Highcharts.Series>} dirtySeries\n     *          Array of series with new data.\n     * @param {Highcharts.Series} [newSeries]\n     *          If a single new series was added, a reference to this series.\n     * @param {Highcharts.Point} [newPoint]\n     *          If a single point was added, a reference to this point.\n     */\n    NewDataAnnouncer.prototype.queueAnnouncement = function (dirtySeries, newSeries, newPoint) {\n        var _this = this;\n        var chart = this.chart;\n        var annOptions = chart.options.accessibility.announceNewData;\n        if (annOptions.enabled) {\n            var now = +new Date();\n            var dTime = now - this.lastAnnouncementTime;\n            var time = Math.max(0,\n                annOptions.minAnnounceInterval - dTime);\n            // Add series from previously queued announcement.\n            var allSeries = getUniqueSeries(this.queuedAnnouncement && this.queuedAnnouncement.series,\n                dirtySeries);\n            // Build message and announce\n            var message = this.buildAnnouncementMessage(allSeries,\n                newSeries,\n                newPoint);\n            if (message) {\n                // Is there already one queued?\n                if (this.queuedAnnouncement) {\n                    clearTimeout(this.queuedAnnouncementTimer);\n                }\n                // Build the announcement\n                this.queuedAnnouncement = {\n                    time: now,\n                    message: message,\n                    series: allSeries\n                };\n                // Queue the announcement\n                this.queuedAnnouncementTimer = setTimeout(function () {\n                    if (_this && _this.announcer) {\n                        _this.lastAnnouncementTime = +new Date();\n                        _this.announcer.announce(_this.queuedAnnouncement.message);\n                        delete _this.queuedAnnouncement;\n                        delete _this.queuedAnnouncementTimer;\n                    }\n                }, time);\n            }\n        }\n    };\n    /**\n     * Get announcement message for new data.\n     * @private\n     * @param {Array<Highcharts.Series>} dirtySeries\n     *          Array of series with new data.\n     * @param {Highcharts.Series} [newSeries]\n     *          If a single new series was added, a reference to this series.\n     * @param {Highcharts.Point} [newPoint]\n     *          If a single point was added, a reference to this point.\n     *\n     * @return {string|null}\n     * The announcement message to give to user.\n     */\n    NewDataAnnouncer.prototype.buildAnnouncementMessage = function (dirtySeries, newSeries, newPoint) {\n        var chart = this.chart,\n            annOptions = chart.options.accessibility.announceNewData;\n        // User supplied formatter?\n        if (annOptions.announcementFormatter) {\n            var formatterRes = annOptions.announcementFormatter(dirtySeries,\n                newSeries,\n                newPoint);\n            if (formatterRes !== false) {\n                return formatterRes.length ? formatterRes : null;\n            }\n        }\n        // Default formatter - use lang options\n        var multiple = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).charts && (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).charts.length > 1 ?\n                'Multiple' : 'Single', langKey = newSeries ? 'newSeriesAnnounce' + multiple :\n                newPoint ? 'newPointAnnounce' + multiple : 'newDataAnnounce', chartTitle = NewDataAnnouncer_getChartTitle(chart);\n        return chart.langFormat('accessibility.announceNewData.' + langKey, {\n            chartTitle: chartTitle,\n            seriesDesc: newSeries ?\n                NewDataAnnouncer_defaultSeriesDescriptionFormatter(newSeries) :\n                null,\n            pointDesc: newPoint ?\n                NewDataAnnouncer_defaultPointDescriptionFormatter(newPoint) :\n                null,\n            point: newPoint,\n            series: newSeries\n        });\n    };\n    return NewDataAnnouncer;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (NewDataAnnouncer) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(SeriesClass) {\n        if (NewDataAnnouncer_pushUnique(NewDataAnnouncer_composed, 'A11y.NDA')) {\n            NewDataAnnouncer_addEvent(SeriesClass, 'addPoint', seriesOnAddPoint);\n            NewDataAnnouncer_addEvent(SeriesClass, 'updatedData', seriesOnUpdatedData);\n        }\n    }\n    NewDataAnnouncer.compose = compose;\n    /**\n     * On new point added, update dirty list.\n     * @private\n     * @param {Highcharts.Point} point\n     */\n    function seriesOnAddPoint(e) {\n        var _a;\n        var chart = this.chart,\n            newDataAnnouncer = (_a = chart.accessibility) === null || _a === void 0 ? void 0 : _a.components.series.newDataAnnouncer;\n        if (newDataAnnouncer &&\n            newDataAnnouncer.chart === chart &&\n            chartHasAnnounceEnabled(chart)) {\n            // Add it to newPoint storage unless we already have one\n            newDataAnnouncer.dirty.newPoint = (NewDataAnnouncer_defined(newDataAnnouncer.dirty.newPoint) ?\n                void 0 :\n                e.point);\n        }\n    }\n    /**\n     * On new data in the series, make sure we add it to the dirty list.\n     * @private\n     * @param {Highcharts.Series} series\n     */\n    function seriesOnUpdatedData() {\n        var _a;\n        var chart = this.chart,\n            newDataAnnouncer = (_a = chart.accessibility) === null || _a === void 0 ? void 0 : _a.components.series.newDataAnnouncer;\n        if (newDataAnnouncer &&\n            newDataAnnouncer.chart === chart &&\n            chartHasAnnounceEnabled(chart)) {\n            newDataAnnouncer.dirty.hasDirty = true;\n            newDataAnnouncer.dirty.allSeries[this.name + this.index] = this;\n        }\n    }\n})(NewDataAnnouncer || (NewDataAnnouncer = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var SeriesComponent_NewDataAnnouncer = (NewDataAnnouncer);\n\n;// ./code/es5/es-modules/Accessibility/ProxyElement.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Proxy elements are used to shadow SVG elements in HTML for assistive\n *  technology, such as screen readers or voice input software.\n *\n *  The ProxyElement class represents such an element, and deals with\n *  overlay positioning and mirroring events for the target.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ProxyElement_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar ProxyElement_attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr, ProxyElement_css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css, ProxyElement_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n\n\nvar ProxyElement_fireEventOnWrappedOrUnwrappedElement = Utils_ChartUtilities.fireEventOnWrappedOrUnwrappedElement;\n\nvar ProxyElement_cloneMouseEvent = Utils_HTMLUtilities.cloneMouseEvent, ProxyElement_cloneTouchEvent = Utils_HTMLUtilities.cloneTouchEvent, ProxyElement_getFakeMouseEvent = Utils_HTMLUtilities.getFakeMouseEvent, ProxyElement_removeElement = Utils_HTMLUtilities.removeElement;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Represents a proxy element that overlays a target and relays events\n * to its target.\n *\n * @private\n * @class\n */\nvar ProxyElement = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function ProxyElement(chart, target, proxyElementType, wrapperElementType, attributes) {\n        if (proxyElementType === void 0) { proxyElementType = 'button'; }\n        this.chart = chart;\n        this.target = target;\n        this.eventProvider = new Utils_EventProvider();\n        var innerEl = this.innerElement =\n                ProxyElement_doc.createElement(proxyElementType),\n            wrapperEl = this.element = wrapperElementType ?\n                ProxyElement_doc.createElement(wrapperElementType) : innerEl;\n        if (!chart.styledMode) {\n            this.hideElementVisually(innerEl);\n        }\n        if (wrapperElementType) {\n            if (wrapperElementType === 'li' && !chart.styledMode) {\n                wrapperEl.style.listStyle = 'none';\n            }\n            wrapperEl.appendChild(innerEl);\n            this.element = wrapperEl;\n        }\n        this.updateTarget(target, attributes);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Fake a click event on the target.\n     */\n    ProxyElement.prototype.click = function () {\n        var pos = this.getTargetPosition();\n        pos.x += pos.width / 2;\n        pos.y += pos.height / 2;\n        var fakeEventObject = ProxyElement_getFakeMouseEvent('click',\n            pos);\n        ProxyElement_fireEventOnWrappedOrUnwrappedElement(this.target.click, fakeEventObject);\n    };\n    /**\n     * Update the target to be proxied. The position and events are updated to\n     * match the new target.\n     * @param target The new target definition\n     * @param attributes New HTML attributes to apply to the proxy. Set an\n     * attribute to null to remove.\n     */\n    ProxyElement.prototype.updateTarget = function (target, attributes) {\n        this.target = target;\n        this.updateCSSClassName();\n        var attrs = attributes || {};\n        Object.keys(attrs).forEach(function (a) {\n            if (attrs[a] === null) {\n                delete attrs[a];\n            }\n        });\n        var targetAriaLabel = this.getTargetAttr(target.click, 'aria-label');\n        ProxyElement_attr(this.innerElement, ProxyElement_merge(targetAriaLabel ? {\n            'aria-label': targetAriaLabel\n        } : {}, attrs));\n        this.eventProvider.removeAddedEvents();\n        this.addProxyEventsToElement(this.innerElement, target.click);\n        this.refreshPosition();\n    };\n    /**\n     * Refresh the position of the proxy element to match the current target\n     */\n    ProxyElement.prototype.refreshPosition = function () {\n        var bBox = this.getTargetPosition();\n        ProxyElement_css(this.innerElement, {\n            width: (bBox.width || 1) + 'px',\n            height: (bBox.height || 1) + 'px',\n            left: (Math.round(bBox.x) || 0) + 'px',\n            top: (Math.round(bBox.y) || 0) + 'px'\n        });\n    };\n    /**\n     * Remove button from DOM, and clear events.\n     */\n    ProxyElement.prototype.remove = function () {\n        this.eventProvider.removeAddedEvents();\n        ProxyElement_removeElement(this.element);\n    };\n    // -------------------------- private ------------------------------------\n    /**\n     * Update the CSS class name to match target\n     */\n    ProxyElement.prototype.updateCSSClassName = function () {\n        var stringHasNoTooltip = function (s) { return (s.indexOf('highcharts-no-tooltip') > -1); };\n        var legend = this.chart.legend;\n        var groupDiv = legend.group && legend.group.div;\n        var noTooltipOnGroup = stringHasNoTooltip(groupDiv && groupDiv.className || '');\n        var targetClassName = this.getTargetAttr(this.target.click, 'class') || '';\n        var noTooltipOnTarget = stringHasNoTooltip(targetClassName);\n        this.innerElement.className = noTooltipOnGroup || noTooltipOnTarget ?\n            'highcharts-a11y-proxy-element highcharts-no-tooltip' :\n            'highcharts-a11y-proxy-element';\n    };\n    /**\n     * Mirror events for a proxy element to a target\n     */\n    ProxyElement.prototype.addProxyEventsToElement = function (element, target) {\n        var _this = this;\n        [\n            'click', 'touchstart', 'touchend', 'touchcancel', 'touchmove',\n            'mouseover', 'mouseenter', 'mouseleave', 'mouseout'\n        ].forEach(function (evtType) {\n            var isTouchEvent = evtType.indexOf('touch') === 0;\n            _this.eventProvider.addEvent(element, evtType, function (e) {\n                var clonedEvent = isTouchEvent ?\n                        ProxyElement_cloneTouchEvent(e) :\n                        ProxyElement_cloneMouseEvent(e);\n                if (target) {\n                    ProxyElement_fireEventOnWrappedOrUnwrappedElement(target, clonedEvent);\n                }\n                e.stopPropagation();\n                // #9682, #15318: Touch scrolling didn't work when touching\n                // proxy\n                if (!isTouchEvent) {\n                    e.preventDefault();\n                }\n            }, { passive: false });\n        });\n    };\n    /**\n     * Set visually hidden style on a proxy element\n     */\n    ProxyElement.prototype.hideElementVisually = function (el) {\n        ProxyElement_css(el, {\n            borderWidth: 0,\n            backgroundColor: 'transparent',\n            cursor: 'pointer',\n            outline: 'none',\n            opacity: 0.001,\n            filter: 'alpha(opacity=1)',\n            zIndex: 999,\n            overflow: 'hidden',\n            padding: 0,\n            margin: 0,\n            display: 'block',\n            position: 'absolute',\n            '-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=1)'\n        });\n    };\n    /**\n     * Get the position relative to chart container for the target\n     */\n    ProxyElement.prototype.getTargetPosition = function () {\n        var clickTarget = this.target.click;\n        // We accept both DOM elements and wrapped elements as click targets.\n        var clickTargetElement = clickTarget.element ?\n                clickTarget.element :\n                clickTarget;\n        var posElement = this.target.visual || clickTargetElement;\n        var chartDiv = this.chart.renderTo,\n            pointer = this.chart.pointer;\n        if (chartDiv && (posElement === null || posElement === void 0 ? void 0 : posElement.getBoundingClientRect) && pointer) {\n            var rectEl = posElement.getBoundingClientRect(),\n                chartPos = pointer.getChartPosition();\n            return {\n                x: (rectEl.left - chartPos.left) / chartPos.scaleX,\n                y: (rectEl.top - chartPos.top) / chartPos.scaleY,\n                width: rectEl.right / chartPos.scaleX -\n                    rectEl.left / chartPos.scaleX,\n                height: rectEl.bottom / chartPos.scaleY -\n                    rectEl.top / chartPos.scaleY\n            };\n        }\n        return { x: 0, y: 0, width: 1, height: 1 };\n    };\n    /**\n     * Get an attribute value of a target\n     */\n    ProxyElement.prototype.getTargetAttr = function (target, key) {\n        if (target.element) {\n            return target.element.getAttribute(key);\n        }\n        return target.getAttribute(key);\n    };\n    return ProxyElement;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Accessibility_ProxyElement = (ProxyElement);\n\n;// ./code/es5/es-modules/Accessibility/ProxyProvider.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Proxy elements are used to shadow SVG elements in HTML for assistive\n *  technology, such as screen readers or voice input software.\n *\n *  The ProxyProvider keeps track of all proxy elements of the a11y module,\n *  and updating their order and positioning.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ProxyProvider_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar ProxyProvider_attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr, ProxyProvider_css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css;\n\nvar ProxyProvider_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT;\n\n\nvar ProxyProvider_removeChildNodes = Utils_HTMLUtilities.removeChildNodes;\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * Keeps track of all proxy elements and proxy groups.\n *\n * @private\n * @class\n */\nvar ProxyProvider = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function ProxyProvider(chart) {\n        this.chart = chart;\n        this.domElementProvider = new Utils_DOMElementProvider();\n        this.groups = {};\n        this.groupOrder = [];\n        this.beforeChartProxyPosContainer = this.createProxyPosContainer('before');\n        this.afterChartProxyPosContainer = this.createProxyPosContainer('after');\n        this.update();\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable */\n    /**\n     * Add a new proxy element to a group, proxying a target control.\n     */\n    ProxyProvider.prototype.addProxyElement = function (groupKey, target, proxyElementType, attributes) {\n        if (proxyElementType === void 0) { proxyElementType = 'button'; }\n        var group = this.groups[groupKey];\n        if (!group) {\n            throw new Error('ProxyProvider.addProxyElement: Invalid group key ' + groupKey);\n        }\n        var wrapperElementType = group.type === 'ul' || group.type === 'ol' ?\n                'li' : void 0,\n            proxy = new Accessibility_ProxyElement(this.chart,\n            target,\n            proxyElementType,\n            wrapperElementType,\n            attributes);\n        group.proxyContainerElement.appendChild(proxy.element);\n        group.proxyElements.push(proxy);\n        return proxy;\n    };\n    /**\n     * Create a group that will contain proxy elements. The group order is\n     * automatically updated according to the last group order keys.\n     *\n     * Returns the added group.\n     */\n    ProxyProvider.prototype.addGroup = function (groupKey, groupElementType, attributes) {\n        if (groupElementType === void 0) { groupElementType = 'div'; }\n        var existingGroup = this.groups[groupKey];\n        if (existingGroup) {\n            return existingGroup.groupElement;\n        }\n        var proxyContainer = this.domElementProvider\n                .createElement(groupElementType);\n        // If we want to add a role to the group, and still use e.g.\n        // a list group, we need a wrapper div around the proxyContainer.\n        // Used for setting region role on legend.\n        var groupElement;\n        if (attributes && attributes.role && groupElementType !== 'div') {\n            groupElement = this.domElementProvider.createElement('div');\n            groupElement.appendChild(proxyContainer);\n        }\n        else {\n            groupElement = proxyContainer;\n        }\n        groupElement.className = 'highcharts-a11y-proxy-group highcharts-a11y-proxy-group-' +\n            groupKey.replace(/\\W/g, '-');\n        this.groups[groupKey] = {\n            proxyContainerElement: proxyContainer,\n            groupElement: groupElement,\n            type: groupElementType,\n            proxyElements: []\n        };\n        ProxyProvider_attr(groupElement, attributes || {});\n        if (groupElementType === 'ul') {\n            proxyContainer.setAttribute('role', 'list'); // Needed for webkit\n        }\n        // Add the group to the end by default, and perhaps then we\n        // won't have to reorder the whole set of groups.\n        this.afterChartProxyPosContainer.appendChild(groupElement);\n        this.updateGroupOrder(this.groupOrder);\n        return groupElement;\n    };\n    /**\n     * Update HTML attributes of a group.\n     */\n    ProxyProvider.prototype.updateGroupAttrs = function (groupKey, attributes) {\n        var group = this.groups[groupKey];\n        if (!group) {\n            throw new Error('ProxyProvider.updateGroupAttrs: Invalid group key ' + groupKey);\n        }\n        ProxyProvider_attr(group.groupElement, attributes);\n    };\n    /**\n     * Reorder the proxy groups.\n     *\n     * The group key \"series\" refers to the chart's data points / <svg> element.\n     * This is so that the keyboardNavigation.order option can be used to\n     * determine the proxy group order.\n     */\n    ProxyProvider.prototype.updateGroupOrder = function (groupKeys) {\n        var _this = this;\n        // Store so that we can update order when a new group is created\n        this.groupOrder = groupKeys.slice();\n        // Don't unnecessarily reorder, because keyboard focus is lost\n        if (this.isDOMOrderGroupOrder()) {\n            return;\n        }\n        var seriesIx = groupKeys.indexOf('series');\n        var beforeKeys = seriesIx > -1 ? groupKeys.slice(0,\n            seriesIx) : groupKeys;\n        var afterKeys = seriesIx > -1 ? groupKeys.slice(seriesIx + 1) : [];\n        // Store focused element since it will be lost when reordering\n        var activeElement = ProxyProvider_doc.activeElement;\n        // Add groups to correct container\n        ['before', 'after'].forEach(function (pos) {\n            var posContainer = _this[pos === 'before' ?\n                    'beforeChartProxyPosContainer' :\n                    'afterChartProxyPosContainer'];\n            var keys = pos === 'before' ? beforeKeys : afterKeys;\n            ProxyProvider_removeChildNodes(posContainer);\n            keys.forEach(function (groupKey) {\n                var group = _this.groups[groupKey];\n                if (group) {\n                    posContainer.appendChild(group.groupElement);\n                }\n            });\n        });\n        // Attempt to restore focus after reordering, but note that this may\n        // cause screen readers re-announcing the button.\n        if ((this.beforeChartProxyPosContainer.contains(activeElement) ||\n            this.afterChartProxyPosContainer.contains(activeElement)) &&\n            activeElement && activeElement.focus) {\n            activeElement.focus();\n        }\n    };\n    /**\n     * Remove all proxy elements in a group\n     */\n    ProxyProvider.prototype.clearGroup = function (groupKey) {\n        var group = this.groups[groupKey];\n        if (!group) {\n            throw new Error('ProxyProvider.clearGroup: Invalid group key ' + groupKey);\n        }\n        ProxyProvider_removeChildNodes(group.proxyContainerElement);\n    };\n    /**\n     * Remove a group from the DOM and from the proxy provider's group list.\n     * All child elements are removed.\n     * If the group does not exist, nothing happens.\n     */\n    ProxyProvider.prototype.removeGroup = function (groupKey) {\n        var group = this.groups[groupKey];\n        if (group) {\n            // Remove detached HTML elements to prevent memory leak (#20329).\n            this.domElementProvider.removeElement(group.groupElement);\n            // Sometimes groupElement is a wrapper around the proxyContainer, so\n            // the real one proxyContainer needs to be removed also.\n            if (group.groupElement !== group.proxyContainerElement) {\n                this.domElementProvider.removeElement(group.proxyContainerElement);\n            }\n            delete this.groups[groupKey];\n        }\n    };\n    /**\n     * Update the position and order of all proxy groups and elements\n     */\n    ProxyProvider.prototype.update = function () {\n        this.updatePosContainerPositions();\n        this.updateGroupOrder(this.groupOrder);\n        this.updateProxyElementPositions();\n    };\n    /**\n     * Update all proxy element positions\n     */\n    ProxyProvider.prototype.updateProxyElementPositions = function () {\n        Object.keys(this.groups).forEach(this.updateGroupProxyElementPositions.bind(this));\n    };\n    /**\n     * Update a group's proxy elements' positions.\n     * If the group does not exist, nothing happens.\n     */\n    ProxyProvider.prototype.updateGroupProxyElementPositions = function (groupKey) {\n        var group = this.groups[groupKey];\n        if (group) {\n            group.proxyElements.forEach(function (el) { return el.refreshPosition(); });\n        }\n    };\n    /**\n     * Remove all added elements\n     */\n    ProxyProvider.prototype.destroy = function () {\n        this.domElementProvider.destroyCreatedElements();\n    };\n    // -------------------------- private ------------------------------------\n    /**\n     * Create and return a pos container element (the overall containers for\n     * the proxy groups).\n     */\n    ProxyProvider.prototype.createProxyPosContainer = function (classNamePostfix) {\n        var el = this.domElementProvider.createElement('div');\n        el.setAttribute('aria-hidden', 'false');\n        el.className = 'highcharts-a11y-proxy-container' + (classNamePostfix ? '-' + classNamePostfix : '');\n        ProxyProvider_css(el, {\n            top: '0',\n            left: '0'\n        });\n        if (!this.chart.styledMode) {\n            el.style.whiteSpace = 'nowrap';\n            el.style.position = 'absolute';\n        }\n        return el;\n    };\n    /**\n     * Get an array of group keys that corresponds to the current group order\n     * in the DOM.\n     */\n    ProxyProvider.prototype.getCurrentGroupOrderInDOM = function () {\n        var _this = this;\n        var getGroupKeyFromElement = function (el) {\n                var allGroups = Object.keys(_this.groups);\n            var i = allGroups.length;\n            while (i--) {\n                var groupKey = allGroups[i];\n                var group = _this.groups[groupKey];\n                if (group && el === group.groupElement) {\n                    return groupKey;\n                }\n            }\n        };\n        var getChildrenGroupOrder = function (el) {\n                var childrenOrder = [];\n            var children = el.children;\n            for (var i = 0; i < children.length; ++i) {\n                var groupKey = getGroupKeyFromElement(children[i]);\n                if (groupKey) {\n                    childrenOrder.push(groupKey);\n                }\n            }\n            return childrenOrder;\n        };\n        var before = getChildrenGroupOrder(this.beforeChartProxyPosContainer);\n        var after = getChildrenGroupOrder(this.afterChartProxyPosContainer);\n        before.push('series');\n        return before.concat(after);\n    };\n    /**\n     * Check if the current DOM order matches the current group order, so that\n     * a reordering/update is unnecessary.\n     */\n    ProxyProvider.prototype.isDOMOrderGroupOrder = function () {\n        var _this = this;\n        var domOrder = this.getCurrentGroupOrderInDOM();\n        var groupOrderWithGroups = this.groupOrder.filter(function (x) { return x === 'series' || !!_this.groups[x]; });\n        var i = domOrder.length;\n        if (i !== groupOrderWithGroups.length) {\n            return false;\n        }\n        while (i--) {\n            if (domOrder[i] !== groupOrderWithGroups[i]) {\n                return false;\n            }\n        }\n        return true;\n    };\n    /**\n     * Update the DOM positions of the before/after proxy\n     * positioning containers for the groups.\n     */\n    ProxyProvider.prototype.updatePosContainerPositions = function () {\n        var chart = this.chart;\n        // If exporting, don't add these containers to the DOM.\n        if (chart.renderer.forExport) {\n            return;\n        }\n        var rendererSVGEl = chart.renderer.box;\n        chart.container.insertBefore(this.afterChartProxyPosContainer, rendererSVGEl.nextSibling);\n        chart.container.insertBefore(this.beforeChartProxyPosContainer, rendererSVGEl);\n        ProxyProvider_unhideChartElementFromAT(this.chart, this.afterChartProxyPosContainer);\n        ProxyProvider_unhideChartElementFromAT(this.chart, this.beforeChartProxyPosContainer);\n    };\n    return ProxyProvider;\n}());\n/* *\n *\n *  Export Default\n *\n * */\n/* harmony default export */ var Accessibility_ProxyProvider = (ProxyProvider);\n\n;// ./code/es5/es-modules/Accessibility/Components/RangeSelectorComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for the range selector.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar RangeSelectorComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar RangeSelectorComponent_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT, RangeSelectorComponent_getAxisRangeDescription = Utils_ChartUtilities.getAxisRangeDescription;\n\n\nvar RangeSelectorComponent_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, RangeSelectorComponent_attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Do we want date input navigation\n * @private\n */\nfunction shouldRunInputNavigation(chart) {\n    return Boolean(chart.rangeSelector &&\n        chart.rangeSelector.inputGroup &&\n        chart.rangeSelector.inputGroup.element.style.visibility !== 'hidden' &&\n        chart.options.rangeSelector.inputEnabled !== false &&\n        chart.rangeSelector.minInput &&\n        chart.rangeSelector.maxInput);\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The RangeSelectorComponent class\n *\n * @private\n * @class\n * @name Highcharts.RangeSelectorComponent\n */\nvar RangeSelectorComponent = /** @class */ (function (_super) {\n    RangeSelectorComponent_extends(RangeSelectorComponent, _super);\n    function RangeSelectorComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * Init the component\n     * @private\n     */\n    RangeSelectorComponent.prototype.init = function () {\n        var chart = this.chart;\n        this.announcer = new Utils_Announcer(chart, 'polite');\n    };\n    /**\n     * Called on first render/updates to the chart, including options changes.\n     */\n    RangeSelectorComponent.prototype.onChartUpdate = function () {\n        var chart = this.chart,\n            component = this,\n            rangeSelector = chart.rangeSelector;\n        if (!rangeSelector) {\n            return;\n        }\n        this.updateSelectorVisibility();\n        this.setDropdownAttrs();\n        if (rangeSelector.buttons &&\n            rangeSelector.buttons.length) {\n            rangeSelector.buttons.forEach(function (button) {\n                component.setRangeButtonAttrs(button);\n            });\n        }\n        // Make sure input boxes are accessible and focusable\n        if (rangeSelector.maxInput && rangeSelector.minInput) {\n            ['minInput', 'maxInput'].forEach(function (key, i) {\n                var input = rangeSelector[key];\n                if (input) {\n                    RangeSelectorComponent_unhideChartElementFromAT(chart, input);\n                    component.setRangeInputAttrs(input, 'accessibility.rangeSelector.' + (i ? 'max' : 'min') +\n                        'InputLabel');\n                }\n            });\n        }\n    };\n    /**\n     * Hide buttons from AT when showing dropdown, and vice versa.\n     * @private\n     */\n    RangeSelectorComponent.prototype.updateSelectorVisibility = function () {\n        var chart = this.chart;\n        var rangeSelector = chart.rangeSelector;\n        var dropdown = (rangeSelector &&\n                rangeSelector.dropdown);\n        var buttons = (rangeSelector &&\n                rangeSelector.buttons ||\n                []);\n        var hideFromAT = function (el) { return el.setAttribute('aria-hidden',\n            true); };\n        if (rangeSelector &&\n            rangeSelector.hasVisibleDropdown &&\n            dropdown) {\n            RangeSelectorComponent_unhideChartElementFromAT(chart, dropdown);\n            buttons.forEach(function (btn) { return hideFromAT(btn.element); });\n        }\n        else {\n            if (dropdown) {\n                hideFromAT(dropdown);\n            }\n            buttons.forEach(function (btn) { return RangeSelectorComponent_unhideChartElementFromAT(chart, btn.element); });\n        }\n    };\n    /**\n     * Set accessibility related attributes on dropdown element.\n     * @private\n     */\n    RangeSelectorComponent.prototype.setDropdownAttrs = function () {\n        var chart = this.chart;\n        var dropdown = (chart.rangeSelector &&\n                chart.rangeSelector.dropdown);\n        if (dropdown) {\n            var label = chart.langFormat('accessibility.rangeSelector.dropdownLabel', { rangeTitle: chart.options.lang.rangeSelectorZoom });\n            dropdown.setAttribute('aria-label', label);\n            dropdown.setAttribute('tabindex', -1);\n        }\n    };\n    /**\n     * Set attrs for a range button\n     * @private\n     */\n    RangeSelectorComponent.prototype.setRangeButtonAttrs = function (button) {\n        RangeSelectorComponent_attr(button.element, {\n            tabindex: -1,\n            role: 'button'\n        });\n    };\n    /**\n     * Set attrs for a date input\n     * @private\n     */\n    RangeSelectorComponent.prototype.setRangeInputAttrs = function (input, langKey) {\n        var chart = this.chart;\n        RangeSelectorComponent_attr(input, {\n            tabindex: -1,\n            'aria-label': chart.langFormat(langKey, { chart: chart })\n        });\n    };\n    /**\n     * Handle arrow key nav\n     * @private\n     */\n    RangeSelectorComponent.prototype.onButtonNavKbdArrowKey = function (keyboardNavigationHandler, keyCode) {\n        var response = keyboardNavigationHandler.response,\n            keys = this.keyCodes,\n            chart = this.chart,\n            wrapAround = chart.options.accessibility\n                .keyboardNavigation.wrapAround,\n            direction = (keyCode === keys.left || keyCode === keys.up) ? -1 : 1,\n            didHighlight = chart.highlightRangeSelectorButton(chart.highlightedRangeSelectorItemIx + direction);\n        if (!didHighlight) {\n            if (wrapAround) {\n                keyboardNavigationHandler.init(direction);\n                return response.success;\n            }\n            return response[direction > 0 ? 'next' : 'prev'];\n        }\n        return response.success;\n    };\n    /**\n     * Handle keyboard click\n     * @private\n     */\n    RangeSelectorComponent.prototype.onButtonNavKbdClick = function (keyboardNavigationHandler) {\n        var response = keyboardNavigationHandler.response,\n            chart = this.chart,\n            wasDisabled = chart.oldRangeSelectorItemState === 3;\n        if (!wasDisabled) {\n            this.fakeClickEvent(chart.rangeSelector.buttons[chart.highlightedRangeSelectorItemIx].element);\n        }\n        return response.success;\n    };\n    /**\n     * Called whenever a range selector button has been clicked, either by\n     * mouse, touch, or kbd/voice/other.\n     * @private\n     */\n    RangeSelectorComponent.prototype.onAfterBtnClick = function () {\n        var chart = this.chart;\n        var axisRangeDescription = RangeSelectorComponent_getAxisRangeDescription(chart.xAxis[0]);\n        var announcement = chart.langFormat('accessibility.rangeSelector.clickButtonAnnouncement', { chart: chart,\n            axisRangeDescription: axisRangeDescription });\n        if (announcement) {\n            this.announcer.announce(announcement);\n        }\n    };\n    /**\n     * Handle move between input elements with Tab key\n     * @private\n     */\n    RangeSelectorComponent.prototype.onInputKbdMove = function (direction) {\n        var chart = this.chart;\n        var rangeSel = chart.rangeSelector;\n        var newIx = chart.highlightedInputRangeIx = (chart.highlightedInputRangeIx || 0) + direction;\n        var newIxOutOfRange = newIx > 1 || newIx < 0;\n        if (newIxOutOfRange) {\n            if (chart.accessibility) {\n                // Ignore focus\n                chart.accessibility.keyboardNavigation.exiting = true;\n                chart.accessibility.keyboardNavigation.tabindexContainer\n                    .focus();\n                return chart.accessibility.keyboardNavigation.move(direction);\n            }\n        }\n        else if (rangeSel) {\n            var svgEl = rangeSel[newIx ? 'maxDateBox' : 'minDateBox'];\n            var inputEl = rangeSel[newIx ? 'maxInput' : 'minInput'];\n            if (svgEl && inputEl) {\n                chart.setFocusToElement(svgEl, inputEl);\n            }\n        }\n        return true;\n    };\n    /**\n     * Init date input navigation\n     * @private\n     */\n    RangeSelectorComponent.prototype.onInputNavInit = function (direction) {\n        var _this = this;\n        var component = this;\n        var chart = this.chart;\n        var buttonIxToHighlight = direction > 0 ? 0 : 1;\n        var rangeSel = chart.rangeSelector;\n        var svgEl = (rangeSel &&\n                rangeSel[buttonIxToHighlight ? 'maxDateBox' : 'minDateBox']);\n        var minInput = (rangeSel && rangeSel.minInput);\n        var maxInput = (rangeSel && rangeSel.maxInput);\n        var inputEl = buttonIxToHighlight ? maxInput : minInput;\n        chart.highlightedInputRangeIx = buttonIxToHighlight;\n        if (svgEl && minInput && maxInput) {\n            chart.setFocusToElement(svgEl, inputEl);\n            // Tab-press with the input focused does not propagate to chart\n            // automatically, so we manually catch and handle it when relevant.\n            if (this.removeInputKeydownHandler) {\n                this.removeInputKeydownHandler();\n            }\n            var keydownHandler = function (e) {\n                    var isTab = (e.which || e.keyCode) === _this.keyCodes.tab;\n                if (isTab &&\n                    component.onInputKbdMove(e.shiftKey ? -1 : 1)) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                }\n            };\n            var minRemover_1 = RangeSelectorComponent_addEvent(minInput, 'keydown',\n                keydownHandler);\n            var maxRemover_1 = RangeSelectorComponent_addEvent(maxInput, 'keydown',\n                keydownHandler);\n            this.removeInputKeydownHandler = function () {\n                minRemover_1();\n                maxRemover_1();\n            };\n        }\n    };\n    /**\n     * Terminate date input nav\n     * @private\n     */\n    RangeSelectorComponent.prototype.onInputNavTerminate = function () {\n        var rangeSel = (this.chart.rangeSelector || {});\n        if (rangeSel.maxInput) {\n            rangeSel.hideInput('max');\n        }\n        if (rangeSel.minInput) {\n            rangeSel.hideInput('min');\n        }\n        if (this.removeInputKeydownHandler) {\n            this.removeInputKeydownHandler();\n            delete this.removeInputKeydownHandler;\n        }\n    };\n    /**\n     * Init range selector dropdown nav\n     * @private\n     */\n    RangeSelectorComponent.prototype.initDropdownNav = function () {\n        var _this = this;\n        var chart = this.chart;\n        var rangeSelector = chart.rangeSelector;\n        var dropdown = (rangeSelector && rangeSelector.dropdown);\n        if (rangeSelector && dropdown) {\n            chart.setFocusToElement(rangeSelector.buttonGroup, dropdown);\n            if (this.removeDropdownKeydownHandler) {\n                this.removeDropdownKeydownHandler();\n            }\n            // Tab-press with dropdown focused does not propagate to chart\n            // automatically, so we manually catch and handle it when relevant.\n            this.removeDropdownKeydownHandler = RangeSelectorComponent_addEvent(dropdown, 'keydown', function (e) {\n                var isTab = (e.which || e.keyCode) === _this.keyCodes.tab,\n                    a11y = chart.accessibility;\n                if (isTab) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    if (a11y) {\n                        a11y.keyboardNavigation.move(e.shiftKey ? -1 : 1);\n                    }\n                }\n            });\n        }\n    };\n    /**\n     * Get navigation for the range selector buttons.\n     * @private\n     * @return {Highcharts.KeyboardNavigationHandler} The module object.\n     */\n    RangeSelectorComponent.prototype.getRangeSelectorButtonNavigation = function () {\n        var chart = this.chart;\n        var keys = this.keyCodes;\n        var component = this;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [\n                [\n                    [keys.left, keys.right, keys.up, keys.down],\n                    function (keyCode) {\n                        return component.onButtonNavKbdArrowKey(this, keyCode);\n                    }\n                ],\n                [\n                    [keys.enter, keys.space],\n                    function () {\n                        return component.onButtonNavKbdClick(this);\n                    }\n                ]\n            ],\n            validate: function () {\n                return !!(chart.rangeSelector &&\n                    chart.rangeSelector.buttons &&\n                    chart.rangeSelector.buttons.length);\n            },\n            init: function (direction) {\n                var rangeSelector = chart.rangeSelector;\n                if (rangeSelector && rangeSelector.hasVisibleDropdown) {\n                    component.initDropdownNav();\n                }\n                else if (rangeSelector) {\n                    var lastButtonIx = rangeSelector.buttons.length - 1;\n                    chart.highlightRangeSelectorButton(direction > 0 ? 0 : lastButtonIx);\n                }\n            },\n            terminate: function () {\n                if (component.removeDropdownKeydownHandler) {\n                    component.removeDropdownKeydownHandler();\n                    delete component.removeDropdownKeydownHandler;\n                }\n            }\n        });\n    };\n    /**\n     * Get navigation for the range selector input boxes.\n     * @private\n     * @return {Highcharts.KeyboardNavigationHandler}\n     *         The module object.\n     */\n    RangeSelectorComponent.prototype.getRangeSelectorInputNavigation = function () {\n        var chart = this.chart;\n        var component = this;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [],\n            validate: function () {\n                return shouldRunInputNavigation(chart);\n            },\n            init: function (direction) {\n                component.onInputNavInit(direction);\n            },\n            terminate: function () {\n                component.onInputNavTerminate();\n            }\n        });\n    };\n    /**\n     * Get keyboard navigation handlers for this component.\n     * @return {Array<Highcharts.KeyboardNavigationHandler>}\n     *         List of module objects.\n     */\n    RangeSelectorComponent.prototype.getKeyboardNavigation = function () {\n        return [\n            this.getRangeSelectorButtonNavigation(),\n            this.getRangeSelectorInputNavigation()\n        ];\n    };\n    /**\n     * Remove component traces\n     */\n    RangeSelectorComponent.prototype.destroy = function () {\n        if (this.removeDropdownKeydownHandler) {\n            this.removeDropdownKeydownHandler();\n        }\n        if (this.removeInputKeydownHandler) {\n            this.removeInputKeydownHandler();\n        }\n        if (this.announcer) {\n            this.announcer.destroy();\n        }\n    };\n    return RangeSelectorComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (RangeSelectorComponent) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Highlight range selector button by index.\n     *\n     * @private\n     * @function Highcharts.Chart#highlightRangeSelectorButton\n     */\n    function chartHighlightRangeSelectorButton(ix) {\n        var buttons = (this.rangeSelector &&\n                this.rangeSelector.buttons ||\n                []);\n        var curHighlightedIx = this.highlightedRangeSelectorItemIx;\n        var curSelectedIx = (this.rangeSelector &&\n                this.rangeSelector.selected);\n        // Deselect old\n        if (typeof curHighlightedIx !== 'undefined' &&\n            buttons[curHighlightedIx] &&\n            curHighlightedIx !== curSelectedIx) {\n            buttons[curHighlightedIx].setState(this.oldRangeSelectorItemState || 0);\n        }\n        // Select new\n        this.highlightedRangeSelectorItemIx = ix;\n        if (buttons[ix]) {\n            this.setFocusToElement(buttons[ix].box, buttons[ix].element);\n            if (ix !== curSelectedIx) {\n                this.oldRangeSelectorItemState = buttons[ix].state;\n                buttons[ix].setState(1);\n            }\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Build compositions\n     * @private\n     */\n    function compose(ChartClass, RangeSelectorClass) {\n        var chartProto = ChartClass.prototype;\n        if (!chartProto.highlightRangeSelectorButton) {\n            chartProto.highlightRangeSelectorButton = (chartHighlightRangeSelectorButton);\n            RangeSelectorComponent_addEvent(RangeSelectorClass, 'afterBtnClick', rangeSelectorAfterBtnClick);\n        }\n    }\n    RangeSelectorComponent.compose = compose;\n    /**\n     * Range selector does not have destroy-setup for class instance events - so\n     * we set it on the class and call the component from here.\n     * @private\n     */\n    function rangeSelectorAfterBtnClick() {\n        var a11y = this.chart.accessibility;\n        if (a11y && a11y.components.rangeSelector) {\n            return a11y.components.rangeSelector.onAfterBtnClick();\n        }\n    }\n})(RangeSelectorComponent || (RangeSelectorComponent = {}));\n/* *\n *\n *  Export Default\n *\n * */\n/* harmony default export */ var Components_RangeSelectorComponent = (RangeSelectorComponent);\n\n;// ./code/es5/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Handle forcing series markers.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ForcedMarkers_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar ForcedMarkers_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, ForcedMarkers_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, ForcedMarkers_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Composition\n *\n * */\nvar ForcedMarkersComposition;\n(function (ForcedMarkersComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(SeriesClass) {\n        if (ForcedMarkers_pushUnique(ForcedMarkers_composed, 'A11y.FM')) {\n            ForcedMarkers_addEvent(SeriesClass, 'afterSetOptions', seriesOnAfterSetOptions);\n            ForcedMarkers_addEvent(SeriesClass, 'render', seriesOnRender);\n            ForcedMarkers_addEvent(SeriesClass, 'afterRender', seriesOnAfterRender);\n            ForcedMarkers_addEvent(SeriesClass, 'renderCanvas', seriesOnRenderCanvas);\n        }\n    }\n    ForcedMarkersComposition.compose = compose;\n    /**\n     * @private\n     */\n    function forceZeroOpacityMarkerOptions(options) {\n        ForcedMarkers_merge(true, options, {\n            marker: {\n                enabled: true,\n                states: {\n                    normal: {\n                        opacity: 0\n                    }\n                }\n            }\n        });\n    }\n    /**\n     * @private\n     */\n    function getPointMarkerOpacity(pointOptions) {\n        return pointOptions.marker.states &&\n            pointOptions.marker.states.normal &&\n            pointOptions.marker.states.normal.opacity;\n    }\n    /**\n     * @private\n     */\n    function handleForcePointMarkers(series) {\n        var i = series.points.length;\n        while (i--) {\n            var point = series.points[i];\n            var pointOptions = point.options;\n            var hadForcedMarker = point.hasForcedA11yMarker;\n            delete point.hasForcedA11yMarker;\n            if (pointOptions.marker) {\n                var isStillForcedMarker = hadForcedMarker &&\n                        getPointMarkerOpacity(pointOptions) === 0;\n                if (pointOptions.marker.enabled && !isStillForcedMarker) {\n                    unforcePointMarkerOptions(pointOptions);\n                    point.hasForcedA11yMarker = false;\n                }\n                else if (pointOptions.marker.enabled === false) {\n                    forceZeroOpacityMarkerOptions(pointOptions);\n                    point.hasForcedA11yMarker = true;\n                }\n            }\n        }\n    }\n    /**\n     * @private\n     */\n    function hasIndividualPointMarkerOptions(series) {\n        return !!(series._hasPointMarkers &&\n            series.points &&\n            series.points.length);\n    }\n    /**\n     * @private\n     */\n    function isWithinDescriptionThreshold(series) {\n        var a11yOptions = series.chart.options.accessibility;\n        return series.points.length <\n            a11yOptions.series.pointDescriptionEnabledThreshold ||\n            a11yOptions.series\n                .pointDescriptionEnabledThreshold === false;\n    }\n    /**\n     * Process marker graphics after render\n     * @private\n     */\n    function seriesOnAfterRender() {\n        var series = this;\n        // For styled mode the rendered graphic does not reflect the style\n        // options, and we need to add/remove classes to achieve the same.\n        if (series.chart.styledMode) {\n            if (series.markerGroup) {\n                series.markerGroup[series.a11yMarkersForced ? 'addClass' : 'removeClass']('highcharts-a11y-markers-hidden');\n            }\n            // Do we need to handle individual points?\n            if (hasIndividualPointMarkerOptions(series)) {\n                series.points.forEach(function (point) {\n                    if (point.graphic) {\n                        point.graphic[point.hasForcedA11yMarker ?\n                            'addClass' : 'removeClass']('highcharts-a11y-marker-hidden');\n                        point.graphic[point.hasForcedA11yMarker === false ?\n                            'addClass' :\n                            'removeClass']('highcharts-a11y-marker-visible');\n                    }\n                });\n            }\n        }\n    }\n    /**\n     * Keep track of options to reset markers to if no longer forced.\n     * @private\n     */\n    function seriesOnAfterSetOptions(e) {\n        this.resetA11yMarkerOptions = ForcedMarkers_merge(e.options.marker || {}, this.userOptions.marker || {});\n    }\n    /**\n     * Keep track of forcing markers.\n     * @private\n     */\n    function seriesOnRender() {\n        var series = this,\n            options = series.options;\n        if (shouldForceMarkers(series)) {\n            if (options.marker && options.marker.enabled === false) {\n                series.a11yMarkersForced = true;\n                forceZeroOpacityMarkerOptions(series.options);\n            }\n            if (hasIndividualPointMarkerOptions(series)) {\n                handleForcePointMarkers(series);\n            }\n        }\n        else if (series.a11yMarkersForced) {\n            delete series.a11yMarkersForced;\n            unforceSeriesMarkerOptions(series);\n            delete series.resetA11yMarkerOptions;\n        }\n    }\n    /**\n     * @private\n     */\n    function shouldForceMarkers(series) {\n        var chart = series.chart,\n            chartA11yEnabled = chart.options.accessibility.enabled,\n            seriesA11yEnabled = (series.options.accessibility &&\n                series.options.accessibility.enabled) !== false;\n        return (chartA11yEnabled &&\n            seriesA11yEnabled &&\n            isWithinDescriptionThreshold(series));\n    }\n    /**\n     * @private\n     */\n    function unforcePointMarkerOptions(pointOptions) {\n        ForcedMarkers_merge(true, pointOptions.marker, {\n            states: {\n                normal: {\n                    opacity: getPointMarkerOpacity(pointOptions) || 1\n                }\n            }\n        });\n    }\n    /**\n     * Reset markers to normal\n     * @private\n     */\n    function unforceSeriesMarkerOptions(series) {\n        var resetMarkerOptions = series.resetA11yMarkerOptions;\n        if (resetMarkerOptions) {\n            var originalOpacity = resetMarkerOptions.states &&\n                    resetMarkerOptions.states.normal &&\n                    resetMarkerOptions.states.normal.opacity;\n            // Temporarily set the old marker options to enabled in order to\n            // trigger destruction of the markers in Series.update.\n            if (series.userOptions && series.userOptions.marker) {\n                series.userOptions.marker.enabled = true;\n            }\n            series.update({\n                marker: {\n                    enabled: resetMarkerOptions.enabled,\n                    states: {\n                        normal: { opacity: originalOpacity }\n                    }\n                }\n            });\n        }\n    }\n    /**\n     * Reset markers if series is boosted and had forced markers (#17320).\n     * @private\n     */\n    function seriesOnRenderCanvas() {\n        if (this.boosted && this.a11yMarkersForced) {\n            ForcedMarkers_merge(true, this.options, {\n                marker: {\n                    enabled: false\n                }\n            });\n            delete this.a11yMarkersForced;\n        }\n    }\n})(ForcedMarkersComposition || (ForcedMarkersComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var ForcedMarkers = (ForcedMarkersComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Point\"],\"commonjs\":[\"highcharts\",\"Point\"],\"commonjs2\":[\"highcharts\",\"Point\"],\"root\":[\"Highcharts\",\"Point\"]}\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_ = __webpack_require__(260);\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default = /*#__PURE__*/__webpack_require__.n(highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\"],\"commonjs\":[\"highcharts\",\"Series\"],\"commonjs2\":[\"highcharts\",\"Series\"],\"root\":[\"Highcharts\",\"Series\"]}\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_ = __webpack_require__(820);\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default = /*#__PURE__*/__webpack_require__.n(highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_);\n;// ./code/es5/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Handle keyboard navigation for series.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar SeriesKeyboardNavigation_assign = (undefined && undefined.__assign) || function () {\n    SeriesKeyboardNavigation_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return SeriesKeyboardNavigation_assign.apply(this, arguments);\n};\n\n\n\nvar SeriesKeyboardNavigation_seriesTypes = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nvar SeriesKeyboardNavigation_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar SeriesKeyboardNavigation_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, SeriesKeyboardNavigation_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent;\n\n\n\nvar SeriesKeyboardNavigation_getPointFromXY = Utils_ChartUtilities.getPointFromXY, SeriesKeyboardNavigation_getSeriesFromName = Utils_ChartUtilities.getSeriesFromName, SeriesKeyboardNavigation_scrollAxisToPoint = Utils_ChartUtilities.scrollAxisToPoint;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * Get the index of a point in a series. This is needed when using e.g. data\n * grouping.\n *\n * @private\n * @function getPointIndex\n * @param {Highcharts.AccessibilityPoint} point\n * The point to find index of.\n * @return {number|undefined}\n * The index in the series.points array of the point.\n */\nfunction getPointIndex(point) {\n    var index = point.index,\n        points = point.series.points;\n    var i = points.length;\n    if (points[index] !== point) {\n        while (i--) {\n            if (points[i] === point) {\n                return i;\n            }\n        }\n    }\n    else {\n        return index;\n    }\n}\n/**\n * Determine if series navigation should be skipped\n * @private\n */\nfunction isSkipSeries(series) {\n    var a11yOptions = series.chart.options.accessibility,\n        seriesNavOptions = a11yOptions.keyboardNavigation.seriesNavigation,\n        seriesA11yOptions = series.options.accessibility || {},\n        seriesKbdNavOptions = seriesA11yOptions.keyboardNavigation;\n    return seriesKbdNavOptions && seriesKbdNavOptions.enabled === false ||\n        seriesA11yOptions.enabled === false ||\n        series.options.enableMouseTracking === false || // #8440\n        !series.visible ||\n        // Skip all points in a series where pointNavigationEnabledThreshold is\n        // reached\n        (seriesNavOptions.pointNavigationEnabledThreshold &&\n            +seriesNavOptions.pointNavigationEnabledThreshold <=\n                series.points.length);\n}\n/**\n * Determine if navigation for a point should be skipped\n * @private\n */\nfunction isSkipPoint(point) {\n    var a11yOptions = point.series.chart.options.accessibility;\n    var pointA11yDisabled = (point.options.accessibility &&\n            point.options.accessibility.enabled === false);\n    return point.isNull &&\n        a11yOptions.keyboardNavigation.seriesNavigation.skipNullPoints ||\n        point.visible === false ||\n        point.isInside === false ||\n        pointA11yDisabled ||\n        isSkipSeries(point.series);\n}\n/**\n * Get the first point that is not a skip point in this series.\n * @private\n */\nfunction getFirstValidPointInSeries(series) {\n    var points = series.points || [],\n        len = points.length;\n    for (var i = 0; i < len; ++i) {\n        if (!isSkipPoint(points[i])) {\n            return points[i];\n        }\n    }\n    return null;\n}\n/**\n * Get the first point that is not a skip point in this chart.\n * @private\n */\nfunction getFirstValidPointInChart(chart) {\n    var series = chart.series || [],\n        len = series.length;\n    for (var i = 0; i < len; ++i) {\n        if (!isSkipSeries(series[i])) {\n            var point = getFirstValidPointInSeries(series[i]);\n            if (point) {\n                return point;\n            }\n        }\n    }\n    return null;\n}\n/**\n * @private\n */\nfunction highlightLastValidPointInChart(chart) {\n    var numSeries = chart.series.length;\n    var i = numSeries,\n        res = false;\n    while (i--) {\n        chart.highlightedPoint = chart.series[i].points[chart.series[i].points.length - 1];\n        // Highlight first valid point in the series will also\n        // look backwards. It always starts from currently\n        // highlighted point.\n        res = chart.series[i].highlightNextValidPoint();\n        if (res) {\n            break;\n        }\n    }\n    return res;\n}\n/**\n * After drilling down/up, we need to set focus to the first point for\n * screen readers and keyboard nav.\n * @private\n */\nfunction updateChartFocusAfterDrilling(chart) {\n    var point = getFirstValidPointInChart(chart);\n    if (point) {\n        point.highlight(false); // Do not visually highlight\n    }\n}\n/**\n * Highlight the first point in chart that is not a skip point\n * @private\n */\nfunction highlightFirstValidPointInChart(chart) {\n    delete chart.highlightedPoint;\n    var point = getFirstValidPointInChart(chart);\n    return point ? point.highlight() : false;\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.SeriesKeyboardNavigation\n */\nvar SeriesKeyboardNavigation = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function SeriesKeyboardNavigation(chart, keyCodes) {\n        this.keyCodes = keyCodes;\n        this.chart = chart;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * Init the keyboard navigation\n     */\n    SeriesKeyboardNavigation.prototype.init = function () {\n        var keyboardNavigation = this,\n            chart = this.chart,\n            e = this.eventProvider = new Utils_EventProvider();\n        e.addEvent((highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default()), 'destroy', function () {\n            return keyboardNavigation.onSeriesDestroy(this);\n        });\n        e.addEvent(chart, 'afterApplyDrilldown', function () {\n            updateChartFocusAfterDrilling(this);\n        });\n        e.addEvent(chart, 'drilldown', function (e) {\n            var point = e.point,\n                series = point.series;\n            keyboardNavigation.lastDrilledDownPoint = {\n                x: point.x,\n                y: point.y,\n                seriesName: series ? series.name : ''\n            };\n        });\n        e.addEvent(chart, 'drillupall', function () {\n            setTimeout(function () {\n                keyboardNavigation.onDrillupAll();\n            }, 10);\n        });\n        // Heatmaps et al. alter z-index in setState, causing elements\n        // to lose focus\n        e.addEvent((highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default()), 'afterSetState', function () {\n            var point = this;\n            var pointEl = point.graphic && point.graphic.element;\n            var focusedElement = SeriesKeyboardNavigation_doc.activeElement;\n            // VO brings focus with it to container, causing series nav to run.\n            // If then navigating with virtual cursor, it is possible to leave\n            // keyboard nav module state on the data points and still activate\n            // proxy buttons.\n            var focusedElClassName = (focusedElement && focusedElement.getAttribute('class'));\n            var isProxyFocused = focusedElClassName &&\n                    focusedElClassName.indexOf('highcharts-a11y-proxy-element') > -1;\n            if (chart.highlightedPoint === point &&\n                focusedElement !== pointEl &&\n                !isProxyFocused &&\n                pointEl &&\n                pointEl.focus) {\n                pointEl.focus();\n            }\n        });\n    };\n    /**\n     * After drillup we want to find the point that was drilled down to and\n     * highlight it.\n     * @private\n     */\n    SeriesKeyboardNavigation.prototype.onDrillupAll = function () {\n        var last = this.lastDrilledDownPoint,\n            chart = this.chart,\n            series = last && SeriesKeyboardNavigation_getSeriesFromName(chart,\n            last.seriesName);\n        var point;\n        if (last && series && SeriesKeyboardNavigation_defined(last.x) && SeriesKeyboardNavigation_defined(last.y)) {\n            point = SeriesKeyboardNavigation_getPointFromXY(series, last.x, last.y);\n        }\n        point = point || getFirstValidPointInChart(chart);\n        // Container focus can be lost on drillup due to deleted elements.\n        if (chart.container) {\n            chart.container.focus();\n        }\n        if (point && point.highlight) {\n            point.highlight(false); // Do not visually highlight\n        }\n    };\n    /**\n     * @private\n     */\n    SeriesKeyboardNavigation.prototype.getKeyboardNavigationHandler = function () {\n        var keyboardNavigation = this,\n            keys = this.keyCodes,\n            chart = this.chart,\n            inverted = chart.inverted;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [\n                [\n                    inverted ? [keys.up, keys.down] : [keys.left, keys.right],\n                    function (keyCode) {\n                        return keyboardNavigation.onKbdSideways(this, keyCode);\n                    }\n                ],\n                [\n                    inverted ? [keys.left, keys.right] : [keys.up, keys.down],\n                    function (keyCode) {\n                        return keyboardNavigation.onKbdVertical(this, keyCode);\n                    }\n                ],\n                [\n                    [keys.enter, keys.space],\n                    function (keyCode, event) {\n                        var _a;\n                        var point = chart.highlightedPoint;\n                        if (point) {\n                            var _b = this.chart,\n                                plotLeft = _b.plotLeft,\n                                plotTop = _b.plotTop,\n                                _c = point.plotX,\n                                plotX = _c === void 0 ? 0 : _c,\n                                _d = point.plotY,\n                                plotY = _d === void 0 ? 0 : _d;\n                            event = SeriesKeyboardNavigation_assign(SeriesKeyboardNavigation_assign({}, event), { chartX: plotLeft + plotX, chartY: plotTop + plotY, point: point, target: ((_a = point.graphic) === null || _a === void 0 ? void 0 : _a.element) || event.target });\n                            SeriesKeyboardNavigation_fireEvent(point.series, 'click', event);\n                            point.firePointEvent('click', event);\n                        }\n                        return this.response.success;\n                    }\n                ],\n                [\n                    [keys.home],\n                    function () {\n                        highlightFirstValidPointInChart(chart);\n                        return this.response.success;\n                    }\n                ],\n                [\n                    [keys.end],\n                    function () {\n                        highlightLastValidPointInChart(chart);\n                        return this.response.success;\n                    }\n                ],\n                [\n                    [keys.pageDown, keys.pageUp],\n                    function (keyCode) {\n                        chart.highlightAdjacentSeries(keyCode === keys.pageDown);\n                        return this.response.success;\n                    }\n                ]\n            ],\n            init: function () {\n                return keyboardNavigation.onHandlerInit(this);\n            },\n            validate: function () {\n                return !!getFirstValidPointInChart(chart);\n            },\n            terminate: function () {\n                return keyboardNavigation.onHandlerTerminate();\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} handler\n     * @param {number} keyCode\n     * @return {number}\n     * response\n     */\n    SeriesKeyboardNavigation.prototype.onKbdSideways = function (handler, keyCode) {\n        var keys = this.keyCodes,\n            isNext = keyCode === keys.right || keyCode === keys.down;\n        return this.attemptHighlightAdjacentPoint(handler, isNext);\n    };\n    /**\n     * When keyboard navigation inits.\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} handler The handler object\n     * @return {number}\n     * response\n     */\n    SeriesKeyboardNavigation.prototype.onHandlerInit = function (handler) {\n        var chart = this.chart,\n            kbdNavOptions = chart.options.accessibility.keyboardNavigation;\n        if (kbdNavOptions.seriesNavigation.rememberPointFocus &&\n            chart.highlightedPoint) {\n            chart.highlightedPoint.highlight();\n        }\n        else {\n            highlightFirstValidPointInChart(chart);\n        }\n        return handler.response.success;\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} handler\n     * @param {number} keyCode\n     * @return {number}\n     * response\n     */\n    SeriesKeyboardNavigation.prototype.onKbdVertical = function (handler, keyCode) {\n        var chart = this.chart,\n            keys = this.keyCodes,\n            isNext = keyCode === keys.down || keyCode === keys.right,\n            navOptions = chart.options.accessibility.keyboardNavigation\n                .seriesNavigation;\n        // Handle serialized mode, act like left/right\n        if (navOptions.mode && navOptions.mode === 'serialize') {\n            return this.attemptHighlightAdjacentPoint(handler, isNext);\n        }\n        // Normal mode, move between series\n        var highlightMethod = (chart.highlightedPoint &&\n                chart.highlightedPoint.series.keyboardMoveVertical) ?\n                'highlightAdjacentPointVertical' :\n                'highlightAdjacentSeries';\n        chart[highlightMethod](isNext);\n        return handler.response.success;\n    };\n    /**\n     * @private\n     */\n    SeriesKeyboardNavigation.prototype.onHandlerTerminate = function () {\n        var chart = this.chart,\n            kbdNavOptions = chart.options.accessibility.keyboardNavigation;\n        if (chart.tooltip) {\n            chart.tooltip.hide(0);\n        }\n        var hoverSeries = (chart.highlightedPoint && chart.highlightedPoint.series);\n        if (hoverSeries && hoverSeries.onMouseOut) {\n            hoverSeries.onMouseOut();\n        }\n        if (chart.highlightedPoint && chart.highlightedPoint.onMouseOut) {\n            chart.highlightedPoint.onMouseOut();\n        }\n        if (!kbdNavOptions.seriesNavigation.rememberPointFocus) {\n            delete chart.highlightedPoint;\n        }\n    };\n    /**\n     * Function that attempts to highlight next/prev point. Handles wrap around.\n     * @private\n     */\n    SeriesKeyboardNavigation.prototype.attemptHighlightAdjacentPoint = function (handler, directionIsNext) {\n        var chart = this.chart,\n            wrapAround = chart.options.accessibility.keyboardNavigation\n                .wrapAround,\n            highlightSuccessful = chart.highlightAdjacentPoint(directionIsNext);\n        if (!highlightSuccessful) {\n            if (wrapAround && (directionIsNext ?\n                highlightFirstValidPointInChart(chart) :\n                highlightLastValidPointInChart(chart))) {\n                return handler.response.success;\n            }\n            return handler.response[directionIsNext ? 'next' : 'prev'];\n        }\n        return handler.response.success;\n    };\n    /**\n     * @private\n     */\n    SeriesKeyboardNavigation.prototype.onSeriesDestroy = function (series) {\n        var chart = this.chart,\n            currentHighlightedPointDestroyed = chart.highlightedPoint &&\n                chart.highlightedPoint.series === series;\n        if (currentHighlightedPointDestroyed) {\n            delete chart.highlightedPoint;\n            if (chart.focusElement) {\n                chart.focusElement.removeFocusBorder();\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    SeriesKeyboardNavigation.prototype.destroy = function () {\n        this.eventProvider.removeAddedEvents();\n    };\n    return SeriesKeyboardNavigation;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (SeriesKeyboardNavigation) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Function to highlight next/previous point in chart.\n     *\n     * @private\n     * @function Highcharts.Chart#highlightAdjacentPoint\n     *\n     * @param {boolean} next\n     * Flag for the direction.\n     *\n     * @return {Highcharts.Point|boolean}\n     * Returns highlighted point on success, false on failure (no adjacent point\n     * to highlight in chosen direction).\n     */\n    function chartHighlightAdjacentPoint(next) {\n        var chart = this,\n            series = chart.series,\n            curPoint = chart.highlightedPoint,\n            curPointIndex = curPoint && getPointIndex(curPoint) || 0,\n            curPoints = curPoint && curPoint.series.points || [],\n            lastSeries = chart.series && chart.series[chart.series.length - 1],\n            lastPoint = lastSeries &&\n                lastSeries.points &&\n                lastSeries.points[lastSeries.points.length - 1];\n        var newSeries,\n            newPoint;\n        // If no points, return false\n        if (!series[0] || !series[0].points) {\n            return false;\n        }\n        if (!curPoint) {\n            // No point is highlighted yet. Try first/last point depending on\n            // move direction\n            newPoint = next ? series[0].points[0] : lastPoint;\n        }\n        else {\n            // We have a highlighted point. Grab next/prev point & series.\n            newSeries = series[curPoint.series.index + (next ? 1 : -1)];\n            newPoint = curPoints[curPointIndex + (next ? 1 : -1)];\n            if (!newPoint && newSeries) {\n                // Done with this series, try next one\n                newPoint = newSeries.points[next ? 0 : newSeries.points.length - 1];\n            }\n            // If there is no adjacent point, we return false\n            if (!newPoint) {\n                return false;\n            }\n        }\n        // Recursively skip points\n        if (isSkipPoint(newPoint)) {\n            // If we skip this whole series, move to the end of the series\n            // before we recurse, just to optimize\n            newSeries = newPoint.series;\n            if (isSkipSeries(newSeries)) {\n                chart.highlightedPoint = next ?\n                    newSeries.points[newSeries.points.length - 1] :\n                    newSeries.points[0];\n            }\n            else {\n                // Otherwise, just move one point\n                chart.highlightedPoint = newPoint;\n            }\n            // Retry\n            return chart.highlightAdjacentPoint(next);\n        }\n        // There is an adjacent point, highlight it\n        return newPoint.highlight();\n    }\n    /**\n     * Highlight the closest point vertically.\n     * @private\n     */\n    function chartHighlightAdjacentPointVertical(down) {\n        var curPoint = this.highlightedPoint;\n        var minDistance = Infinity,\n            bestPoint;\n        if (!SeriesKeyboardNavigation_defined(curPoint.plotX) || !SeriesKeyboardNavigation_defined(curPoint.plotY)) {\n            return false;\n        }\n        this.series.forEach(function (series) {\n            if (isSkipSeries(series)) {\n                return;\n            }\n            series.points.forEach(function (point) {\n                if (!SeriesKeyboardNavigation_defined(point.plotY) || !SeriesKeyboardNavigation_defined(point.plotX) ||\n                    point === curPoint) {\n                    return;\n                }\n                var yDistance = point.plotY - curPoint.plotY;\n                var width = Math.abs(point.plotX - curPoint.plotX),\n                    distance = Math.abs(yDistance) * Math.abs(yDistance) +\n                        width * width * 4; // Weigh horizontal distance highly\n                    // Reverse distance number if axis is reversed\n                    if (series.yAxis && series.yAxis.reversed) {\n                        yDistance *= -1;\n                }\n                if (yDistance <= 0 && down || yDistance >= 0 && !down ||\n                    distance < 5 || // Points in same spot => infinite loop\n                    isSkipPoint(point)) {\n                    return;\n                }\n                if (distance < minDistance) {\n                    minDistance = distance;\n                    bestPoint = point;\n                }\n            });\n        });\n        return bestPoint ? bestPoint.highlight() : false;\n    }\n    /**\n     * Highlight next/previous series in chart. Returns false if no adjacent\n     * series in the direction, otherwise returns new highlighted point.\n     * @private\n     */\n    function chartHighlightAdjacentSeries(down) {\n        var chart = this,\n            curPoint = chart.highlightedPoint,\n            lastSeries = chart.series && chart.series[chart.series.length - 1],\n            lastPoint = lastSeries && lastSeries.points &&\n                lastSeries.points[lastSeries.points.length - 1];\n        var newSeries,\n            newPoint,\n            adjacentNewPoint;\n        // If no point is highlighted, highlight the first/last point\n        if (!chart.highlightedPoint) {\n            newSeries = down ? (chart.series && chart.series[0]) : lastSeries;\n            newPoint = down ?\n                (newSeries && newSeries.points && newSeries.points[0]) :\n                lastPoint;\n            return newPoint ? newPoint.highlight() : false;\n        }\n        newSeries = (chart.series[curPoint.series.index + (down ? -1 : 1)]);\n        if (!newSeries) {\n            return false;\n        }\n        // We have a new series in this direction, find the right point\n        // Weigh xDistance as counting much higher than Y distance\n        newPoint = getClosestPoint(curPoint, newSeries, 4);\n        if (!newPoint) {\n            return false;\n        }\n        // New series and point exists, but we might want to skip it\n        if (isSkipSeries(newSeries)) {\n            // Skip the series\n            newPoint.highlight();\n            // Try recurse\n            adjacentNewPoint = chart.highlightAdjacentSeries(down);\n            if (!adjacentNewPoint) {\n                // Recurse failed\n                curPoint.highlight();\n                return false;\n            }\n            // Recurse succeeded\n            return adjacentNewPoint;\n        }\n        // Highlight the new point or any first valid point back or forwards\n        // from it\n        newPoint.highlight();\n        return newPoint.series.highlightNextValidPoint();\n    }\n    /**\n     * @private\n     */\n    function compose(ChartClass, PointClass, SeriesClass) {\n        var chartProto = ChartClass.prototype,\n            pointProto = PointClass.prototype,\n            seriesProto = SeriesClass.prototype;\n        if (!chartProto.highlightAdjacentPoint) {\n            chartProto.highlightAdjacentPoint = chartHighlightAdjacentPoint;\n            chartProto.highlightAdjacentPointVertical = (chartHighlightAdjacentPointVertical);\n            chartProto.highlightAdjacentSeries = chartHighlightAdjacentSeries;\n            pointProto.highlight = pointHighlight;\n            /**\n             * Set for which series types it makes sense to move to the closest\n             * point with up/down arrows, and which series types should just\n             * move to next series.\n             * @private\n             */\n            seriesProto.keyboardMoveVertical = true;\n            [\n                'column',\n                'gantt',\n                'pie'\n            ].forEach(function (type) {\n                if (SeriesKeyboardNavigation_seriesTypes[type]) {\n                    SeriesKeyboardNavigation_seriesTypes[type].prototype.keyboardMoveVertical = false;\n                }\n            });\n            seriesProto.highlightNextValidPoint = (seriesHighlightNextValidPoint);\n        }\n    }\n    SeriesKeyboardNavigation.compose = compose;\n    /**\n     * Get the point in a series that is closest (in pixel distance) to a\n     * reference point. Optionally supply weight factors for x and y directions.\n     * @private\n     */\n    function getClosestPoint(point, series, xWeight, yWeight) {\n        var minDistance = Infinity,\n            dPoint,\n            minIx,\n            distance,\n            i = series.points.length;\n        var hasUndefinedPosition = function (point) { return (!(SeriesKeyboardNavigation_defined(point.plotX) && SeriesKeyboardNavigation_defined(point.plotY))); };\n        if (hasUndefinedPosition(point)) {\n            return;\n        }\n        while (i--) {\n            dPoint = series.points[i];\n            if (hasUndefinedPosition(dPoint)) {\n                continue;\n            }\n            distance = (point.plotX - dPoint.plotX) *\n                (point.plotX - dPoint.plotX) *\n                (xWeight || 1) +\n                (point.plotY - dPoint.plotY) *\n                    (point.plotY - dPoint.plotY) *\n                    (yWeight || 1);\n            if (distance < minDistance) {\n                minDistance = distance;\n                minIx = i;\n            }\n        }\n        return SeriesKeyboardNavigation_defined(minIx) ? series.points[minIx] : void 0;\n    }\n    /**\n     * Highlights a point (show tooltip, display hover state, focus element).\n     *\n     * @private\n     * @function Highcharts.Point#highlight\n     *\n     * @return {Highcharts.Point}\n     *         This highlighted point.\n     */\n    function pointHighlight(highlightVisually) {\n        var _a,\n            _b;\n        if (highlightVisually === void 0) { highlightVisually = true; }\n        var chart = this.series.chart,\n            tooltipElement = (_b = (_a = chart.tooltip) === null || _a === void 0 ? void 0 : _a.label) === null || _b === void 0 ? void 0 : _b.element;\n        if (!this.isNull && highlightVisually) {\n            this.onMouseOver(); // Show the hover marker and tooltip\n        }\n        else {\n            if (chart.tooltip) {\n                chart.tooltip.hide(0);\n            }\n            // Do not call blur on the element, as it messes up the focus of the\n            // div element of the chart\n        }\n        SeriesKeyboardNavigation_scrollAxisToPoint(this);\n        // We focus only after calling onMouseOver because the state change can\n        // change z-index and mess up the element.\n        if (this.graphic) {\n            chart.setFocusToElement(this.graphic);\n            if (!highlightVisually && chart.focusElement) {\n                chart.focusElement.removeFocusBorder();\n            }\n        }\n        chart.highlightedPoint = this;\n        // Get position of the tooltip.\n        var tooltipTop = tooltipElement === null || tooltipElement === void 0 ? void 0 : tooltipElement.getBoundingClientRect().top;\n        if (tooltipElement && tooltipTop && tooltipTop < 0) {\n            // Calculate scroll position.\n            var scrollTop = window.scrollY,\n                newScrollTop = scrollTop + tooltipTop;\n            // Scroll window to new position.\n            window.scrollTo({\n                behavior: 'smooth',\n                top: newScrollTop\n            });\n        }\n        return this;\n    }\n    /**\n     * Highlight first valid point in a series. Returns the point if\n     * successfully highlighted, otherwise false. If there is a highlighted\n     * point in the series, use that as starting point.\n     *\n     * @private\n     * @function Highcharts.Series#highlightNextValidPoint\n     */\n    function seriesHighlightNextValidPoint() {\n        var curPoint = this.chart.highlightedPoint,\n            start = (curPoint && curPoint.series) === this ?\n                getPointIndex(curPoint) :\n                0,\n            points = this.points,\n            len = points.length;\n        if (points && len) {\n            for (var i = start; i < len; ++i) {\n                if (!isSkipPoint(points[i])) {\n                    return points[i].highlight();\n                }\n            }\n            for (var j = start; j >= 0; --j) {\n                if (!isSkipPoint(points[j])) {\n                    return points[j].highlight();\n                }\n            }\n        }\n        return false;\n    }\n})(SeriesKeyboardNavigation || (SeriesKeyboardNavigation = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var SeriesComponent_SeriesKeyboardNavigation = (SeriesKeyboardNavigation);\n\n;// ./code/es5/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for series and points.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar SeriesComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar SeriesComponent_hideSeriesFromAT = Utils_ChartUtilities.hideSeriesFromAT;\n\n\n\nvar SeriesComponent_describeSeries = SeriesComponent_SeriesDescriber.describeSeries;\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * The SeriesComponent class\n *\n * @private\n * @class\n * @name Highcharts.SeriesComponent\n */\nvar SeriesComponent = /** @class */ (function (_super) {\n    SeriesComponent_extends(SeriesComponent, _super);\n    function SeriesComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * @private\n     */\n    SeriesComponent.compose = function (ChartClass, PointClass, SeriesClass) {\n        SeriesComponent_NewDataAnnouncer.compose(SeriesClass);\n        ForcedMarkers.compose(SeriesClass);\n        SeriesComponent_SeriesKeyboardNavigation.compose(ChartClass, PointClass, SeriesClass);\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Init the component.\n     */\n    SeriesComponent.prototype.init = function () {\n        this.newDataAnnouncer = new SeriesComponent_NewDataAnnouncer(this.chart);\n        this.newDataAnnouncer.init();\n        this.keyboardNavigation = new SeriesComponent_SeriesKeyboardNavigation(this.chart, this.keyCodes);\n        this.keyboardNavigation.init();\n        this.hideTooltipFromATWhenShown();\n        this.hideSeriesLabelsFromATWhenShown();\n    };\n    /**\n     * @private\n     */\n    SeriesComponent.prototype.hideTooltipFromATWhenShown = function () {\n        var component = this;\n        if (this.chart.tooltip) {\n            this.addEvent(this.chart.tooltip.constructor, 'refresh', function () {\n                if (this.chart === component.chart &&\n                    this.label &&\n                    this.label.element) {\n                    this.label.element.setAttribute('aria-hidden', true);\n                }\n            });\n        }\n    };\n    /**\n     * @private\n     */\n    SeriesComponent.prototype.hideSeriesLabelsFromATWhenShown = function () {\n        this.addEvent(this.chart, 'afterDrawSeriesLabels', function () {\n            this.series.forEach(function (series) {\n                if (series.labelBySeries) {\n                    series.labelBySeries.attr('aria-hidden', true);\n                }\n            });\n        });\n    };\n    /**\n     * Called on chart render. It is necessary to do this for render in case\n     * markers change on zoom/pixel density.\n     */\n    SeriesComponent.prototype.onChartRender = function () {\n        var chart = this.chart;\n        chart.series.forEach(function (series) {\n            var shouldDescribeSeries = (series.options.accessibility &&\n                    series.options.accessibility.enabled) !== false &&\n                    series.visible && series.getPointsCollection().length !== 0;\n            if (shouldDescribeSeries) {\n                SeriesComponent_describeSeries(series);\n            }\n            else {\n                SeriesComponent_hideSeriesFromAT(series);\n            }\n        });\n    };\n    /**\n     * Get keyboard navigation handler for this component.\n     * @private\n     */\n    SeriesComponent.prototype.getKeyboardNavigation = function () {\n        return this.keyboardNavigation.getKeyboardNavigationHandler();\n    };\n    /**\n     * Remove traces\n     * @private\n     */\n    SeriesComponent.prototype.destroy = function () {\n        this.newDataAnnouncer.destroy();\n        this.keyboardNavigation.destroy();\n    };\n    return SeriesComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var SeriesComponent_SeriesComponent = (SeriesComponent);\n\n;// ./code/es5/es-modules/Accessibility/Components/ZoomComponent.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility component for chart zoom.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar ZoomComponent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar ZoomComponent_unhideChartElementFromAT = Utils_ChartUtilities.unhideChartElementFromAT;\n\nvar ZoomComponent_getFakeMouseEvent = Utils_HTMLUtilities.getFakeMouseEvent;\n\n\nvar ZoomComponent_attr = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).attr, ZoomComponent_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction chartHasMapZoom(chart) {\n    return !!((chart.mapView) &&\n        chart.mapNavigation &&\n        chart.mapNavigation.navButtons.length);\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The ZoomComponent class\n *\n * @private\n * @class\n * @name Highcharts.ZoomComponent\n */\nvar ZoomComponent = /** @class */ (function (_super) {\n    ZoomComponent_extends(ZoomComponent, _super);\n    function ZoomComponent() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        var _this = _super !== null && _super.apply(this,\n            arguments) || this;\n        _this.focusedMapNavButtonIx = -1;\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initialize the component\n     */\n    ZoomComponent.prototype.init = function () {\n        var component = this,\n            chart = this.chart;\n        this.proxyProvider.addGroup('zoom', 'div');\n        [\n            'afterShowResetZoom', 'afterApplyDrilldown', 'drillupall'\n        ].forEach(function (eventType) {\n            component.addEvent(chart, eventType, function () {\n                component.updateProxyOverlays();\n            });\n        });\n    };\n    /**\n     * Called when chart is updated\n     */\n    ZoomComponent.prototype.onChartUpdate = function () {\n        var chart = this.chart,\n            component = this;\n        // Make map zoom buttons accessible\n        if (chart.mapNavigation) {\n            chart.mapNavigation.navButtons.forEach(function (button, i) {\n                ZoomComponent_unhideChartElementFromAT(chart, button.element);\n                component.setMapNavButtonAttrs(button.element, 'accessibility.zoom.mapZoom' + (i ? 'Out' : 'In'));\n            });\n        }\n    };\n    /**\n     * @private\n     * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} button\n     * @param {string} labelFormatKey\n     */\n    ZoomComponent.prototype.setMapNavButtonAttrs = function (button, labelFormatKey) {\n        var chart = this.chart,\n            label = chart.langFormat(labelFormatKey, { chart: chart });\n        ZoomComponent_attr(button, {\n            tabindex: -1,\n            role: 'button',\n            'aria-label': label\n        });\n    };\n    /**\n     * Update the proxy overlays on every new render to ensure positions are\n     * correct.\n     */\n    ZoomComponent.prototype.onChartRender = function () {\n        this.updateProxyOverlays();\n    };\n    /**\n     * Update proxy overlays, recreating the buttons.\n     */\n    ZoomComponent.prototype.updateProxyOverlays = function () {\n        var chart = this.chart;\n        // Always start with a clean slate\n        this.proxyProvider.clearGroup('zoom');\n        if (chart.resetZoomButton) {\n            this.createZoomProxyButton(chart.resetZoomButton, 'resetZoomProxyButton', chart.langFormat('accessibility.zoom.resetZoomButton', { chart: chart }));\n        }\n        if (chart.drillUpButton &&\n            chart.breadcrumbs &&\n            chart.breadcrumbs.list) {\n            var lastBreadcrumb = chart.breadcrumbs.list[chart.breadcrumbs.list.length - 1];\n            this.createZoomProxyButton(chart.drillUpButton, 'drillUpProxyButton', chart.langFormat('accessibility.drillUpButton', {\n                chart: chart,\n                buttonText: chart.breadcrumbs.getButtonText(lastBreadcrumb)\n            }));\n        }\n    };\n    /**\n     * @private\n     * @param {Highcharts.SVGElement} buttonEl\n     * @param {string} buttonProp\n     * @param {string} label\n     */\n    ZoomComponent.prototype.createZoomProxyButton = function (buttonEl, buttonProp, label) {\n        this[buttonProp] = this.proxyProvider.addProxyElement('zoom', {\n            click: buttonEl\n        }, 'button', {\n            'aria-label': label,\n            tabindex: -1\n        });\n    };\n    /**\n     * Get keyboard navigation handler for map zoom.\n     * @private\n     * @return {Highcharts.KeyboardNavigationHandler} The module object\n     */\n    ZoomComponent.prototype.getMapZoomNavigation = function () {\n        var keys = this.keyCodes,\n            chart = this.chart,\n            component = this;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [\n                [\n                    [keys.up, keys.down, keys.left, keys.right],\n                    function (keyCode) {\n                        return component.onMapKbdArrow(this, keyCode);\n                    }\n                ],\n                [\n                    [keys.tab],\n                    function (_keyCode, e) {\n                        return component.onMapKbdTab(this, e);\n                    }\n                ],\n                [\n                    [keys.space, keys.enter],\n                    function () {\n                        return component.onMapKbdClick(this);\n                    }\n                ]\n            ],\n            validate: function () {\n                return chartHasMapZoom(chart);\n            },\n            init: function (direction) {\n                return component.onMapNavInit(direction);\n            }\n        });\n    };\n    /**\n     * Arrow key panning for maps.\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler The handler context.\n     * @param {number} keyCode Key pressed.\n     * @return {number} Response code\n     */\n    ZoomComponent.prototype.onMapKbdArrow = function (keyboardNavigationHandler, keyCode) {\n        var chart = this.chart,\n            keys = this.keyCodes,\n            target = chart.container,\n            isY = keyCode === keys.up || keyCode === keys.down,\n            stepDirection = (keyCode === keys.left || keyCode === keys.up) ?\n                1 : -1,\n            granularity = 10,\n            diff = (isY ? chart.plotHeight : chart.plotWidth) /\n                granularity * stepDirection, \n            // Randomize since same mousedown coords twice is ignored in MapView\n            r = Math.random() * 10,\n            startPos = {\n                x: target.offsetLeft + chart.plotLeft + chart.plotWidth / 2 + r,\n                y: target.offsetTop + chart.plotTop + chart.plotHeight / 2 + r\n            },\n            endPos = isY ? { x: startPos.x,\n            y: startPos.y + diff } :\n                { x: startPos.x + diff,\n            y: startPos.y };\n        [\n            ZoomComponent_getFakeMouseEvent('mousedown', startPos),\n            ZoomComponent_getFakeMouseEvent('mousemove', endPos),\n            ZoomComponent_getFakeMouseEvent('mouseup', endPos)\n        ].forEach(function (e) { return target.dispatchEvent(e); });\n        return keyboardNavigationHandler.response.success;\n    };\n    /**\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler\n     * @param {global.KeyboardEvent} event\n     * @return {number} Response code\n     */\n    ZoomComponent.prototype.onMapKbdTab = function (keyboardNavigationHandler, event) {\n        var chart = this.chart;\n        var response = keyboardNavigationHandler.response;\n        var isBackwards = event.shiftKey;\n        var isMoveOutOfRange = isBackwards && !this.focusedMapNavButtonIx ||\n                !isBackwards && this.focusedMapNavButtonIx;\n        // Deselect old\n        chart.mapNavigation.navButtons[this.focusedMapNavButtonIx].setState(0);\n        if (isMoveOutOfRange) {\n            if (chart.mapView) {\n                chart.mapView.zoomBy(); // Reset zoom\n            }\n            return response[isBackwards ? 'prev' : 'next'];\n        }\n        // Select other button\n        this.focusedMapNavButtonIx += isBackwards ? -1 : 1;\n        var button = chart.mapNavigation.navButtons[this.focusedMapNavButtonIx];\n        chart.setFocusToElement(button.box, button.element);\n        button.setState(2);\n        return response.success;\n    };\n    /**\n     * Called on map button click.\n     * @private\n     * @param {Highcharts.KeyboardNavigationHandler} keyboardNavigationHandler The handler context object\n     * @return {number} Response code\n     */\n    ZoomComponent.prototype.onMapKbdClick = function (keyboardNavigationHandler) {\n        var el = this.chart.mapNavigation.navButtons[this.focusedMapNavButtonIx].element;\n        this.fakeClickEvent(el);\n        return keyboardNavigationHandler.response.success;\n    };\n    /**\n     * @private\n     * @param {number} direction\n     */\n    ZoomComponent.prototype.onMapNavInit = function (direction) {\n        var chart = this.chart,\n            zoomIn = chart.mapNavigation.navButtons[0],\n            zoomOut = chart.mapNavigation.navButtons[1],\n            initialButton = direction > 0 ? zoomIn : zoomOut;\n        chart.setFocusToElement(initialButton.box, initialButton.element);\n        initialButton.setState(2);\n        this.focusedMapNavButtonIx = direction > 0 ? 0 : 1;\n    };\n    /**\n     * Get keyboard navigation handler for a simple chart button. Provide the\n     * button reference for the chart, and a function to call on click.\n     *\n     * @private\n     * @param {string} buttonProp The property on chart referencing the button.\n     * @return {Highcharts.KeyboardNavigationHandler} The module object\n     */\n    ZoomComponent.prototype.simpleButtonNavigation = function (buttonProp, proxyProp, onClick) {\n        var keys = this.keyCodes,\n            component = this,\n            chart = this.chart;\n        return new Accessibility_KeyboardNavigationHandler(chart, {\n            keyCodeMap: [\n                [\n                    [keys.tab, keys.up, keys.down, keys.left, keys.right],\n                    function (keyCode, e) {\n                        var isBackwards = (keyCode === keys.tab && e.shiftKey ||\n                                keyCode === keys.left ||\n                                keyCode === keys.up);\n                        // Arrow/tab => just move\n                        return this.response[isBackwards ? 'prev' : 'next'];\n                    }\n                ],\n                [\n                    [keys.space, keys.enter],\n                    function () {\n                        var res = onClick(this,\n                            chart);\n                        return ZoomComponent_pick(res, this.response.success);\n                    }\n                ]\n            ],\n            validate: function () {\n                var hasButton = (chart[buttonProp] &&\n                        chart[buttonProp].box &&\n                        component[proxyProp].innerElement);\n                return hasButton;\n            },\n            init: function () {\n                chart.setFocusToElement(chart[buttonProp].box, component[proxyProp].innerElement);\n            }\n        });\n    };\n    /**\n     * Get keyboard navigation handlers for this component.\n     * @return {Array<Highcharts.KeyboardNavigationHandler>}\n     *         List of module objects\n     */\n    ZoomComponent.prototype.getKeyboardNavigation = function () {\n        return [\n            this.simpleButtonNavigation('resetZoomButton', 'resetZoomProxyButton', function (_handler, chart) {\n                chart.zoomOut();\n            }),\n            this.simpleButtonNavigation('drillUpButton', 'drillUpProxyButton', function (handler, chart) {\n                chart.drillUp();\n                return handler.response.prev;\n            }),\n            this.getMapZoomNavigation()\n        ];\n    };\n    return ZoomComponent;\n}(Accessibility_AccessibilityComponent));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Components_ZoomComponent = (ZoomComponent);\n\n;// ./code/es5/es-modules/Accessibility/HighContrastMode.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Handling for Windows High Contrast Mode.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar HighContrastMode_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc, isMS = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS, HighContrastMode_win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Detect WHCM in the browser.\n *\n * @function Highcharts#isHighContrastModeActive\n * @private\n * @return {boolean} Returns true if the browser is in High Contrast mode.\n */\nfunction isHighContrastModeActive() {\n    // Use media query on Edge, but not on IE\n    var isEdge = /(Edg)/.test(HighContrastMode_win.navigator.userAgent);\n    if (HighContrastMode_win.matchMedia && isEdge) {\n        return HighContrastMode_win.matchMedia('(-ms-high-contrast: active)').matches;\n    }\n    // Test BG image for IE\n    if (isMS && HighContrastMode_win.getComputedStyle) {\n        var testDiv = HighContrastMode_doc.createElement('div');\n        var imageSrc = 'data:image/gif;base64,' +\n                'R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n        testDiv.style.backgroundImage = \"url(\".concat(imageSrc, \")\"); // #13071\n        HighContrastMode_doc.body.appendChild(testDiv);\n        var bi = (testDiv.currentStyle ||\n                HighContrastMode_win.getComputedStyle(testDiv)).backgroundImage;\n        HighContrastMode_doc.body.removeChild(testDiv);\n        return bi === 'none';\n    }\n    // Other browsers use the forced-colors standard\n    return HighContrastMode_win.matchMedia && HighContrastMode_win.matchMedia('(forced-colors: active)').matches;\n}\n/**\n * Force high contrast theme for the chart. The default theme is defined in\n * a separate file.\n *\n * @function Highcharts#setHighContrastTheme\n * @private\n * @param {Highcharts.AccessibilityChart} chart The chart to set the theme of.\n * @return {void}\n */\nfunction setHighContrastTheme(chart) {\n    // We might want to add additional functionality here in the future for\n    // storing the old state so that we can reset the theme if HC mode is\n    // disabled. For now, the user will have to reload the page.\n    var _a;\n    chart.highContrastModeActive = true;\n    // Apply theme to chart\n    var theme = (chart.options.accessibility.highContrastTheme);\n    chart.update(theme, false);\n    var hasCustomColors = ((_a = theme.colors) === null || _a === void 0 ? void 0 : _a.length) > 1;\n    // Force series colors (plotOptions is not enough)\n    chart.series.forEach(function (s) {\n        var plotOpts = theme.plotOptions[s.type] || {};\n        var fillColor = hasCustomColors && s.colorIndex !== void 0 ?\n                theme.colors[s.colorIndex] :\n                plotOpts.color || 'window';\n        var seriesOptions = {\n                color: plotOpts.color || 'windowText',\n                colors: hasCustomColors ?\n                    theme.colors : [plotOpts.color || 'windowText'],\n                borderColor: plotOpts.borderColor || 'window',\n                fillColor: fillColor\n            };\n        s.update(seriesOptions, false);\n        if (s.points) {\n            // Force point colors if existing\n            s.points.forEach(function (p) {\n                if (p.options && p.options.color) {\n                    p.update({\n                        color: plotOpts.color || 'windowText',\n                        borderColor: plotOpts.borderColor || 'window'\n                    }, false);\n                }\n            });\n        }\n    });\n    // The redraw for each series and after is required for 3D pie\n    // (workaround)\n    chart.redraw();\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar whcm = {\n    isHighContrastModeActive: isHighContrastModeActive,\n    setHighContrastTheme: setHighContrastTheme\n};\n/* harmony default export */ var HighContrastMode = (whcm);\n\n;// ./code/es5/es-modules/Accessibility/HighContrastTheme.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Default theme for Windows High Contrast Mode.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar theme = {\n    chart: {\n        backgroundColor: 'window'\n    },\n    title: {\n        style: {\n            color: 'windowText'\n        }\n    },\n    subtitle: {\n        style: {\n            color: 'windowText'\n        }\n    },\n    colorAxis: {\n        minColor: 'windowText',\n        maxColor: 'windowText',\n        stops: [],\n        dataClasses: []\n    },\n    colors: ['windowText'],\n    xAxis: {\n        gridLineColor: 'windowText',\n        labels: {\n            style: {\n                color: 'windowText'\n            }\n        },\n        lineColor: 'windowText',\n        minorGridLineColor: 'windowText',\n        tickColor: 'windowText',\n        title: {\n            style: {\n                color: 'windowText'\n            }\n        }\n    },\n    yAxis: {\n        gridLineColor: 'windowText',\n        labels: {\n            style: {\n                color: 'windowText'\n            }\n        },\n        lineColor: 'windowText',\n        minorGridLineColor: 'windowText',\n        tickColor: 'windowText',\n        title: {\n            style: {\n                color: 'windowText'\n            }\n        }\n    },\n    tooltip: {\n        backgroundColor: 'window',\n        borderColor: 'windowText',\n        style: {\n            color: 'windowText'\n        }\n    },\n    plotOptions: {\n        series: {\n            lineColor: 'windowText',\n            fillColor: 'window',\n            borderColor: 'windowText',\n            edgeColor: 'windowText',\n            borderWidth: 1,\n            dataLabels: {\n                connectorColor: 'windowText',\n                color: 'windowText',\n                style: {\n                    color: 'windowText',\n                    textOutline: 'none'\n                }\n            },\n            marker: {\n                lineColor: 'windowText',\n                fillColor: 'windowText'\n            }\n        },\n        pie: {\n            color: 'window',\n            colors: ['window'],\n            borderColor: 'windowText',\n            borderWidth: 1\n        },\n        boxplot: {\n            fillColor: 'window'\n        },\n        candlestick: {\n            lineColor: 'windowText',\n            fillColor: 'window'\n        },\n        errorbar: {\n            fillColor: 'window'\n        }\n    },\n    legend: {\n        backgroundColor: 'window',\n        itemStyle: {\n            color: 'windowText'\n        },\n        itemHoverStyle: {\n            color: 'windowText'\n        },\n        itemHiddenStyle: {\n            color: '#555'\n        },\n        title: {\n            style: {\n                color: 'windowText'\n            }\n        }\n    },\n    credits: {\n        style: {\n            color: 'windowText'\n        }\n    },\n    drilldown: {\n        activeAxisLabelStyle: {\n            color: 'windowText'\n        },\n        activeDataLabelStyle: {\n            color: 'windowText'\n        }\n    },\n    navigation: {\n        buttonOptions: {\n            symbolStroke: 'windowText',\n            theme: {\n                fill: 'window'\n            }\n        }\n    },\n    rangeSelector: {\n        buttonTheme: {\n            fill: 'window',\n            stroke: 'windowText',\n            style: {\n                color: 'windowText'\n            },\n            states: {\n                hover: {\n                    fill: 'window',\n                    stroke: 'windowText',\n                    style: {\n                        color: 'windowText'\n                    }\n                },\n                select: {\n                    fill: '#444',\n                    stroke: 'windowText',\n                    style: {\n                        color: 'windowText'\n                    }\n                }\n            }\n        },\n        inputBoxBorderColor: 'windowText',\n        inputStyle: {\n            backgroundColor: 'window',\n            color: 'windowText'\n        },\n        labelStyle: {\n            color: 'windowText'\n        }\n    },\n    navigator: {\n        handles: {\n            backgroundColor: 'window',\n            borderColor: 'windowText'\n        },\n        outlineColor: 'windowText',\n        maskFill: 'transparent',\n        series: {\n            color: 'windowText',\n            lineColor: 'windowText'\n        },\n        xAxis: {\n            gridLineColor: 'windowText'\n        }\n    },\n    scrollbar: {\n        barBackgroundColor: '#444',\n        barBorderColor: 'windowText',\n        buttonArrowColor: 'windowText',\n        buttonBackgroundColor: 'window',\n        buttonBorderColor: 'windowText',\n        rifleColor: 'windowText',\n        trackBackgroundColor: 'window',\n        trackBorderColor: 'windowText'\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var HighContrastTheme = (theme);\n\n;// ./code/es5/es-modules/Accessibility/Options/A11yDefaults.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Default options for accessibility.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Formatter callback for the accessibility announcement.\n *\n * @callback Highcharts.AccessibilityAnnouncementFormatter\n *\n * @param {Array<Highcharts.Series>} updatedSeries\n * Array of all series that received updates. If an announcement is already\n * queued, the series that received updates for that announcement are also\n * included in this array.\n *\n * @param {Highcharts.Series} [addedSeries]\n * This is provided if {@link Highcharts.Chart#addSeries} was called, and there\n * is a new series. In that case, this argument is a reference to the new\n * series.\n *\n * @param {Highcharts.Point} [addedPoint]\n * This is provided if {@link Highcharts.Series#addPoint} was called, and there\n * is a new point. In that case, this argument is a reference to the new point.\n *\n * @return {false|string}\n * The function should return a string with the text to announce to the user.\n * Return empty string to not announce anything. Return `false` to use the\n * default announcement format.\n */\n/**\n * @interface Highcharts.PointAccessibilityOptionsObject\n */ /**\n* Provide a description of the data point, announced to screen readers.\n* @name Highcharts.PointAccessibilityOptionsObject#description\n* @type {string|undefined}\n* @requires modules/accessibility\n* @since 7.1.0\n*/ /**\n* Enable or disable exposing the point to assistive technology\n* @name Highcharts.PointAccessibilityOptionsObject#enabled\n* @type {boolean|undefined}\n* @requires modules/accessibility\n* @since 9.0.1\n*/\n/* *\n * @interface Highcharts.PointOptionsObject in parts/Point.ts\n */ /**\n* @name Highcharts.PointOptionsObject#accessibility\n* @type {Highcharts.PointAccessibilityOptionsObject|undefined}\n* @requires modules/accessibility\n* @since 7.1.0\n*/\n/**\n * @callback Highcharts.ScreenReaderClickCallbackFunction\n *\n * @param {global.MouseEvent} evt\n *        Mouse click event\n *\n * @return {void}\n */\n/**\n * Creates a formatted string for the screen reader module.\n *\n * @callback Highcharts.ScreenReaderFormatterCallbackFunction<T>\n *\n * @param {T} context\n *        Context to format\n *\n * @return {string}\n *         Formatted string for the screen reader module.\n */\nvar Options = {\n    /**\n     * Options for configuring accessibility for the chart. Requires the\n     * [accessibility module](https://code.highcharts.com/modules/accessibility.js)\n     * to be loaded. For a description of the module and information\n     * on its features, see\n     * [Highcharts Accessibility](https://www.highcharts.com/docs/accessibility/accessibility-module).\n     *\n     * @since        5.0.0\n     * @requires     modules/accessibility\n     * @optionparent accessibility\n     */\n    accessibility: {\n        /**\n         * Enable accessibility functionality for the chart. For more\n         * information on how to include these features, and why this is\n         * recommended, see [Highcharts Accessibility](https://www.highcharts.com/docs/accessibility/accessibility-module).\n         *\n         * Highcharts will by default emit a warning to the console if\n         * the [accessibility module](https://code.highcharts.com/modules/accessibility.js)\n         * is not loaded. Setting this option to `false` will override\n         * and silence the warning.\n         *\n         * Once the module is loaded, setting this option to `false`\n         * will disable the module for this chart.\n         *\n         * @since 5.0.0\n         */\n        enabled: true,\n        /**\n         * Accessibility options for the screen reader information sections\n         * added before and after the chart.\n         *\n         * @since 8.0.0\n         */\n        screenReaderSection: {\n            /**\n             * Function to run upon clicking the \"View as Data Table\" link in\n             * the screen reader region.\n             *\n             * By default Highcharts will insert and set focus to a data table\n             * representation of the chart.\n             *\n             * @type      {Highcharts.ScreenReaderClickCallbackFunction}\n             * @since 8.0.0\n             * @apioption accessibility.screenReaderSection.onViewDataTableClick\n             */\n            /**\n             * Function to run upon clicking the \"Play as sound\" button in\n             * the screen reader region.\n             *\n             * By default Highcharts will call the `chart.sonify` function.\n             *\n             * @type      {Highcharts.ScreenReaderClickCallbackFunction}\n             * @since 8.0.1\n             * @apioption accessibility.screenReaderSection.onPlayAsSoundClick\n             */\n            /**\n             * A formatter function to create the HTML contents of the hidden\n             * screen reader information region before the chart. Receives one\n             * argument, `chart`, referring to the chart object. Should return a\n             * string with the HTML content of the region. By default this\n             * returns an automatic description of the chart based on\n             * [beforeChartFormat](#accessibility.screenReaderSection.beforeChartFormat).\n             *\n             * @type      {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Chart>}\n             * @since 8.0.0\n             * @apioption accessibility.screenReaderSection.beforeChartFormatter\n             */\n            /**\n             * Format for the screen reader information region before the chart.\n             * Supported HTML tags are `<h1-6>`, `<p>`, `<div>`, `<a>`, `<ul>`,\n             * `<ol>`, `<li>`, and `<button>`. Attributes are not supported,\n             * except for id on `<div>`, `<a>`, and `<button>`. Id is required\n             * on `<a>` and `<button>` in the format `<tag id=\"abcd\">`. Numbers,\n             * lower- and uppercase letters, \"-\" and \"#\" are valid characters in\n             * IDs.\n             *\n             * The headingTagName is an auto-detected heading (h1-h6) that\n             * corresponds to the heading level below the previous heading in\n             * the DOM.\n             *\n             * Set to empty string to remove the region altogether.\n             *\n             * @since 8.0.0\n             */\n            beforeChartFormat: '<{headingTagName}>{chartTitle}</{headingTagName}>' +\n                '<div>{typeDescription}</div>' +\n                '<div>{chartSubtitle}</div>' +\n                '<div>{chartLongdesc}</div>' +\n                '<div>{playAsSoundButton}</div>' +\n                '<div>{viewTableButton}</div>' +\n                '<div>{xAxisDescription}</div>' +\n                '<div>{yAxisDescription}</div>' +\n                '<div>{annotationsTitle}{annotationsList}</div>',\n            /**\n             * A formatter function to create the HTML contents of the hidden\n             * screen reader information region after the chart. Analogous to\n             * [beforeChartFormatter](#accessibility.screenReaderSection.beforeChartFormatter).\n             *\n             * @type      {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Chart>}\n             * @since 8.0.0\n             * @apioption accessibility.screenReaderSection.afterChartFormatter\n             */\n            /**\n             * Format for the screen reader information region after the chart.\n             * Analogous to [beforeChartFormat](#accessibility.screenReaderSection.beforeChartFormat).\n             *\n             * @since 8.0.0\n             */\n            afterChartFormat: '{endOfChartMarker}',\n            /**\n             * Date format to use to describe range of datetime axes.\n             *\n             * For an overview of the replacement codes, see\n             * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n             *\n             * @see [point.dateFormat](#accessibility.point.dateFormat)\n             *\n             * @since 8.0.0\n             */\n            axisRangeDateFormat: '%Y-%m-%d %H:%M:%S'\n        },\n        /**\n         * Accessibility options global to all data series. Individual series\n         * can also have specific [accessibility options](#plotOptions.series.accessibility)\n         * set.\n         *\n         * @since 8.0.0\n         */\n        series: {\n            /**\n             * Formatter function to use instead of the default for series\n             * descriptions. Receives one argument, `series`, referring to the\n             * series to describe. Should return a string with the description\n             * of the series for a screen reader user. If `false` is returned,\n             * the default formatter will be used for that series.\n             *\n             * @see [series.descriptionFormat](#accessibility.series.descriptionFormat)\n             * @see [series.description](#plotOptions.series.description)\n             *\n             * @type      {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Series>}\n             * @since 8.0.0\n             * @apioption accessibility.series.descriptionFormatter\n             */\n            /**\n             * Format to use for describing the data series group to assistive\n             * technology - including screen readers.\n             *\n             * The series context and its subproperties are available under the\n             * variable `{series}`, for example `{series.name}` for the series\n             * name, and `{series.points.length}` for the number of data points.\n             *\n             * The chart context and its subproperties are available under the\n             * variable `{chart}`, for example `{chart.series.length}` for the\n             * number of series in the chart.\n             *\n             * `{seriesDescription}` refers to the automatic description of the\n             * series type and number of points added by Highcharts by default.\n             * `{authorDescription}` refers to the description added in\n             * [series.description](#plotOptions.series.description) if one is\n             * present. `{axisDescription}` refers to the description added if\n             * the chart has multiple X or Y axes.\n             *\n             * Note that if [series.descriptionFormatter](#accessibility.series.descriptionFormatter)\n             * is declared it will take precedence, and this option will be\n             * overridden.\n             *\n             * @sample highcharts/accessibility/advanced-accessible\n             *  Accessible low-medium-high chart\n             *\n             * @type      {string}\n             * @since 10.1.0\n             */\n            descriptionFormat: '{seriesDescription}{authorDescription}{axisDescription}',\n            /**\n             * Whether or not to add series descriptions to charts with a single\n             * series.\n             *\n             * @since 8.0.0\n             */\n            describeSingleSeries: false,\n            /**\n             * When a series contains more points than this, we no longer expose\n             * information about individual points to screen readers.\n             * Note that the keyboard navigation remains functional, but points\n             * won't have accessible descriptions unless handled separately.\n             *\n             * Set to `false` to disable.\n             *\n             * @type  {boolean|number}\n             * @since 8.0.0\n             */\n            pointDescriptionEnabledThreshold: 200\n        },\n        /**\n         * Options for descriptions of individual data points.\n         *\n         * @since 8.0.0\n         */\n        point: {\n            /**\n             * Date format to use for points on datetime axes when describing\n             * them to screen reader users.\n             *\n             * Defaults to the same format as in tooltip.\n             *\n             * For an overview of the replacement codes, see\n             * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n             *\n             * @see [dateFormatter](#accessibility.point.dateFormatter)\n             *\n             * @type      {string}\n             * @since 8.0.0\n             * @apioption accessibility.point.dateFormat\n             */\n            /**\n             * Formatter function to determine the date/time format used with\n             * points on datetime axes when describing them to screen reader\n             * users. Receives one argument, `point`, referring to the point\n             * to describe. Should return a date format string compatible with\n             * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n             *\n             * @see [dateFormat](#accessibility.point.dateFormat)\n             *\n             * @type      {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Point>}\n             * @since 8.0.0\n             * @apioption accessibility.point.dateFormatter\n             */\n            /**\n             * Prefix to add to the values in the point descriptions. Uses\n             * [tooltip.valuePrefix](#tooltip.valuePrefix) if not defined.\n             *\n             * @type        {string}\n             * @since 8.0.0\n             * @apioption   accessibility.point.valuePrefix\n             */\n            /**\n             * Suffix to add to the values in the point descriptions. Uses\n             * [tooltip.valueSuffix](#tooltip.valueSuffix) if not defined.\n             *\n             * @type        {string}\n             * @since 8.0.0\n             * @apioption   accessibility.point.valueSuffix\n             */\n            /**\n             * Decimals to use for the values in the point descriptions. Uses\n             * [tooltip.valueDecimals](#tooltip.valueDecimals) if not defined.\n             *\n             * @type        {number}\n             * @since 8.0.0\n             * @apioption   accessibility.point.valueDecimals\n             */\n            /**\n             * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n             * to use instead of the default for point descriptions.\n             *\n             * The context of the format string is the point instance.\n             *\n             * As opposed to [accessibility.point.valueDescriptionFormat](#accessibility.point.valueDescriptionFormat),\n             * this option replaces the whole description.\n             *\n             * @type      {string}\n             * @since 11.1.0\n             * @sample highcharts/demo/advanced-accessible\n             *      Description format\n             * @apioption accessibility.point.descriptionFormat\n             */\n            /**\n             * Formatter function to use instead of the default for point\n             * descriptions.\n             *\n             * Receives one argument, `point`, referring to the point to\n             * describe. Should return a string with the description of the\n             * point for a screen reader user. If `false` is returned, the\n             * default formatter will be used for that point.\n             *\n             * Note: Prefer using [accessibility.point.valueDescriptionFormat](#accessibility.point.valueDescriptionFormat)\n             * instead if possible, as default functionality such as describing\n             * annotations will be preserved.\n             *\n             * @see [accessibility.point.valueDescriptionFormat](#accessibility.point.valueDescriptionFormat)\n             * @see [point.accessibility.description](#series.line.data.accessibility.description)\n             *\n             * @type      {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Point>}\n             * @since 8.0.0\n             * @apioption accessibility.point.descriptionFormatter\n             */\n            /**\n             * Format to use for describing the values of data points\n             * to assistive technology - including screen readers.\n             * The point context is available as `{point}`.\n             *\n             * Other available context variables include `{index}`, `{value}`, and `{xDescription}`.\n             *\n             * Additionally, the series name, annotation info, and\n             * description added in `point.accessibility.description`\n             * is added by default if relevant. To override this, use the\n             * [accessibility.point.descriptionFormatter](#accessibility.point.descriptionFormatter)\n             * option.\n             *\n             * @see [point.accessibility.description](#series.line.data.accessibility.description)\n             * @see [accessibility.point.descriptionFormatter](#accessibility.point.descriptionFormatter)\n             *\n             * @type      {string}\n             * @since 8.0.1\n             */\n            valueDescriptionFormat: '{xDescription}{separator}{value}.',\n            /**\n             * Whether or not to describe points with the value `null` to\n             * assistive technology, such as screen readers.\n             *\n             * @sample {highmaps} maps/demo/all-areas-as-null\n             *         Accessible map with null points\n             *\n             * @type      {boolean}\n             * @since 10.1.0\n             */\n            describeNull: true\n        },\n        /**\n         * Amount of landmarks/regions to create for screen reader users. More\n         * landmarks can make navigation with screen readers easier, but can\n         * be distracting if there are lots of charts on the page. Three modes\n         * are available:\n         *  - `all`: Adds regions for all series, legend, information\n         *      region.\n         *  - `one`: Adds a single landmark per chart.\n         *  - `disabled`: No landmarks are added.\n         *\n         * @since 7.1.0\n         * @validvalue [\"all\", \"one\", \"disabled\"]\n         */\n        landmarkVerbosity: 'all',\n        /**\n         * Link the chart to an HTML element describing the contents of the\n         * chart.\n         *\n         * It is always recommended to describe charts using visible text, to\n         * improve SEO as well as accessibility for users with disabilities.\n         * This option lets an HTML element with a description be linked to the\n         * chart, so that screen reader users can connect the two.\n         *\n         * By setting this option to a string, Highcharts runs the string as an\n         * HTML selector query on the entire document. If there is only a single\n         * match, this element is linked to the chart. The content of the linked\n         * element will be included in the chart description for screen reader\n         * users.\n         *\n         * By default, the chart looks for an adjacent sibling element with the\n         * `highcharts-description` class.\n         *\n         * The feature can be disabled by setting the option to an empty string,\n         * or overridden by providing the\n         * [accessibility.description](#accessibility.description) option.\n         * Alternatively, the HTML element to link can be passed in directly as\n         * an HTML node.\n         *\n         * If you need the description to be part of the exported image,\n         * consider using the [caption](#caption) feature.\n         *\n         * If you need the description to be hidden visually, use the\n         * [accessibility.description](#accessibility.description) option.\n         *\n         * @see [caption](#caption)\n         * @see [description](#accessibility.description)\n         * @see [typeDescription](#accessibility.typeDescription)\n         *\n         * @sample highcharts/accessibility/accessible-line\n         *         Accessible line chart\n         *\n         * @type  {string|Highcharts.HTMLDOMElement}\n         * @since 8.0.0\n         */\n        linkedDescription: '*[data-highcharts-chart=\"{index}\"] + .highcharts-description', // eslint-disable-line\n        /**\n         * A hook for adding custom components to the accessibility module.\n         * Should be an object mapping component names to instances of classes\n         * inheriting from the Highcharts.AccessibilityComponent base class.\n         * Remember to add the component to the\n         * [keyboardNavigation.order](#accessibility.keyboardNavigation.order)\n         * for the keyboard navigation to be usable.\n         *\n         * @sample highcharts/accessibility/custom-component\n         *         Custom accessibility component\n         *\n         * @type      {*}\n         * @since     7.1.0\n         * @apioption accessibility.customComponents\n         */\n        /**\n         * Theme to apply to the chart when Windows High Contrast Mode is\n         * detected. By default, a high contrast theme matching the high\n         * contrast system colors is used.\n         *\n         * @type      {*}\n         * @since     7.1.3\n         * @apioption accessibility.highContrastTheme\n         */\n        /**\n         * Controls how [highContrastTheme](#accessibility.highContrastTheme)\n         * is applied.\n         *\n         * The default option is `auto`, which applies the high contrast theme\n         * the user's system has a high contrast theme active.\n         *\n         * @since 11.4.0\n         */\n        highContrastMode: 'auto',\n        /**\n         * A text description of the chart.\n         *\n         * **Note: Prefer using [linkedDescription](#accessibility.linkedDescription)\n         * or [caption](#caption.text) instead.**\n         *\n         * If the Accessibility module is loaded, this option is included by\n         * default as a long description of the chart in the hidden screen\n         * reader information region.\n         *\n         * Note: Since Highcharts now supports captions and linked descriptions,\n         * it is preferred to define the description using those methods, as a\n         * visible caption/description benefits all users. If the\n         * `accessibility.description` option is defined, the linked description\n         * is ignored, and the caption is hidden from screen reader users.\n         *\n         * @see [linkedDescription](#accessibility.linkedDescription)\n         * @see [caption](#caption)\n         * @see [typeDescription](#accessibility.typeDescription)\n         *\n         * @type      {string}\n         * @since     5.0.0\n         * @apioption accessibility.description\n         */\n        /**\n         * A text description of the chart type.\n         *\n         * If the Accessibility module is loaded, this will be included in the\n         * description of the chart in the screen reader information region.\n         *\n         * Highcharts will by default attempt to guess the chart type, but for\n         * more complex charts it is recommended to specify this property for\n         * clarity.\n         *\n         * @type      {string}\n         * @since     5.0.0\n         * @apioption accessibility.typeDescription\n         */\n        /**\n         * Options for keyboard navigation.\n         *\n         * @declare Highcharts.KeyboardNavigationOptionsObject\n         * @since   5.0.0\n         */\n        keyboardNavigation: {\n            /**\n             * Enable keyboard navigation for the chart.\n             *\n             * @since 5.0.0\n             */\n            enabled: true,\n            /**\n             * Options for the focus border drawn around elements while\n             * navigating through them.\n             *\n             * @sample highcharts/accessibility/custom-focus\n             *         Custom focus ring\n             *\n             * @declare Highcharts.KeyboardNavigationFocusBorderOptionsObject\n             * @since   6.0.3\n             */\n            focusBorder: {\n                /**\n                 * Enable/disable focus border for chart.\n                 *\n                 * @since 6.0.3\n                 */\n                enabled: true,\n                /**\n                 * Hide the browser's default focus indicator.\n                 *\n                 * @since 6.0.4\n                 */\n                hideBrowserFocusOutline: true,\n                /**\n                 * Style options for the focus border drawn around elements\n                 * while navigating through them. Note that some browsers in\n                 * addition draw their own borders for focused elements. These\n                 * automatic borders cannot be styled by Highcharts.\n                 *\n                 * In styled mode, the border is given the\n                 * `.highcharts-focus-border` class.\n                 *\n                 * @type    {Highcharts.CSSObject}\n                 * @since   6.0.3\n                 */\n                style: {\n                    /** @internal */\n                    color: \"#334eff\" /* Palette.highlightColor80 */,\n                    /** @internal */\n                    lineWidth: 2,\n                    /** @internal */\n                    borderRadius: 3\n                },\n                /**\n                 * Focus border margin around the elements.\n                 *\n                 * @since 6.0.3\n                 */\n                margin: 2\n            },\n            /**\n             * Order of tab navigation in the chart. Determines which elements\n             * are tabbed to first. Available elements are: `series`, `zoom`,\n             * `rangeSelector`, `navigator`, `chartMenu`, `legend` and `container`.\n             * In addition, any custom components can be added here. Adding\n             * `container` first in order will make the keyboard focus stop on\n             * the chart container first, requiring the user to tab again to\n             * enter the chart.\n             *\n             * @type  {Array<string>}\n             * @since 7.1.0\n             */\n            order: [\n                'series', 'zoom', 'rangeSelector',\n                'navigator', 'legend', 'chartMenu'\n            ],\n            /**\n             * Whether or not to wrap around when reaching the end of arrow-key\n             * navigation for an element in the chart.\n             * @since 7.1.0\n             */\n            wrapAround: true,\n            /**\n             * Options for the keyboard navigation of data points and series.\n             *\n             * @declare Highcharts.KeyboardNavigationSeriesNavigationOptionsObject\n             * @since 8.0.0\n             */\n            seriesNavigation: {\n                /**\n                 * Set the keyboard navigation mode for the chart. Can be\n                 * \"normal\" or \"serialize\". In normal mode, left/right arrow\n                 * keys move between points in a series, while up/down arrow\n                 * keys move between series. Up/down navigation acts\n                 * intelligently to figure out which series makes sense to move\n                 * to from any given point.\n                 *\n                 * In \"serialize\" mode, points are instead navigated as a single\n                 * list. Left/right behaves as in \"normal\" mode. Up/down arrow\n                 * keys will behave like left/right. This can be useful for\n                 * unifying navigation behavior with/without screen readers\n                 * enabled.\n                 *\n                 * @type       {string}\n                 * @default    normal\n                 * @since 8.0.0\n                 * @validvalue [\"normal\", \"serialize\"]\n                 * @apioption  accessibility.keyboardNavigation.seriesNavigation.mode\n                 */\n                /**\n                 * Skip null points when navigating through points with the\n                 * keyboard.\n                 *\n                 * @since 8.0.0\n                 */\n                skipNullPoints: true,\n                /**\n                 * When a series contains more points than this, we no longer\n                 * allow keyboard navigation for it.\n                 *\n                 * Set to `false` to disable.\n                 *\n                 * @type  {boolean|number}\n                 * @since 8.0.0\n                 */\n                pointNavigationEnabledThreshold: false,\n                /**\n                 * Remember which point was focused even after navigating away\n                 * from the series, so that when navigating back to the series\n                 * you start at the last focused point.\n                 *\n                 * @type  {boolean}\n                 * @since 10.1.0\n                 */\n                rememberPointFocus: false\n            }\n        },\n        /**\n         * Options for announcing new data to screen reader users. Useful\n         * for dynamic data applications and drilldown.\n         *\n         * Keep in mind that frequent announcements will not be useful to\n         * users, as they won't have time to explore the new data. For these\n         * applications, consider making snapshots of the data accessible, and\n         * do the announcements in batches.\n         *\n         * @declare Highcharts.AccessibilityAnnounceNewDataOptionsObject\n         * @since   7.1.0\n         */\n        announceNewData: {\n            /**\n             * Optional formatter callback for the announcement. Receives\n             * up to three arguments. The first argument is always an array\n             * of all series that received updates. If an announcement is\n             * already queued, the series that received updates for that\n             * announcement are also included in this array. The second\n             * argument is provided if `chart.addSeries` was called, and\n             * there is a new series. In that case, this argument is a\n             * reference to the new series. The third argument, similarly,\n             * is provided if `series.addPoint` was called, and there is a\n             * new point. In that case, this argument is a reference to the\n             * new point.\n             *\n             * The function should return a string with the text to announce\n             * to the user. Return empty string to not announce anything.\n             * Return `false` to use the default announcement format.\n             *\n             * @sample highcharts/accessibility/custom-dynamic\n             *         High priority live alerts\n             *\n             * @type      {Highcharts.AccessibilityAnnouncementFormatter}\n             * @apioption accessibility.announceNewData.announcementFormatter\n             */\n            /**\n             * Enable announcing new data to screen reader users\n             * @sample highcharts/accessibility/accessible-dynamic\n             *         Dynamic data accessible\n             */\n            enabled: false,\n            /**\n             * Minimum interval between announcements in milliseconds. If\n             * new data arrives before this amount of time has passed, it is\n             * queued for announcement. If another new data event happens\n             * while an announcement is queued, the queued announcement is\n             * dropped, and the latest announcement is queued instead. Set\n             * to 0 to allow all announcements, but be warned that frequent\n             * announcements are disturbing to users.\n             */\n            minAnnounceInterval: 5000,\n            /**\n             * Choose whether or not the announcements should interrupt the\n             * screen reader. If not enabled, the user will be notified once\n             * idle. It is recommended not to enable this setting unless\n             * there is a specific reason to do so.\n             */\n            interruptUser: false\n        }\n    },\n    /**\n     * Accessibility options for a data point.\n     *\n     * @declare   Highcharts.PointAccessibilityOptionsObject\n     * @since     7.1.0\n     * @apioption series.line.data.accessibility\n     */\n    /**\n     * Provide a description of the data point, announced to screen readers.\n     *\n     * @type      {string}\n     * @since     7.1.0\n     * @apioption series.line.data.accessibility.description\n     */\n    /**\n     * Set to false to disable accessibility functionality for a specific point.\n     * The point will not be included in keyboard navigation, and will not be\n     * exposed to assistive technology.\n     *\n     * @type      {boolean}\n     * @since 9.0.1\n     * @apioption series.line.data.accessibility.enabled\n     */\n    /**\n     * Accessibility options for a series.\n     *\n     * @declare    Highcharts.SeriesAccessibilityOptionsObject\n     * @since      7.1.0\n     * @requires   modules/accessibility\n     * @apioption  plotOptions.series.accessibility\n     */\n    /**\n     * Enable/disable accessibility functionality for a specific series.\n     *\n     * @type       {boolean}\n     * @since      7.1.0\n     * @apioption  plotOptions.series.accessibility.enabled\n     */\n    /**\n     * Provide a description of the series, announced to screen readers.\n     *\n     * @type       {string}\n     * @since      7.1.0\n     * @apioption  plotOptions.series.accessibility.description\n     */\n    /**\n     * Format to use for describing the data series group to assistive\n     * technology - including screen readers.\n     *\n     * @see [series.descriptionFormat](#accessibility.series.descriptionFormat)\n     * @type       {string}\n     * @since 11.0.0\n     * @apioption  plotOptions.series.accessibility.descriptionFormat\n     */\n    /**\n     * Expose only the series element to screen readers, not its points.\n     *\n     * @type       {boolean}\n     * @since      7.1.0\n     * @apioption  plotOptions.series.accessibility.exposeAsGroupOnly\n     */\n    /**\n     * Point accessibility options for a series.\n     *\n     * @extends    accessibility.point\n     * @since 9.3.0\n     * @requires   modules/accessibility\n     * @apioption  plotOptions.series.accessibility.point\n     */\n    /**\n     * Formatter function to use instead of the default for point\n     * descriptions. Same as `accessibility.point.descriptionFormatter`, but\n     * applies to a series instead of the whole chart.\n     *\n     * Note: Prefer using [accessibility.point.valueDescriptionFormat](#plotOptions.series.accessibility.point.valueDescriptionFormat)\n     * instead if possible, as default functionality such as describing\n     * annotations will be preserved.\n     *\n     * @see [accessibility.point.valueDescriptionFormat](#plotOptions.series.accessibility.point.valueDescriptionFormat)\n     * @see [point.accessibility.description](#series.line.data.accessibility.description)\n     * @see [accessibility.point.descriptionFormatter](#accessibility.point.descriptionFormatter)\n     *\n     * @type      {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Point>}\n     * @since 9.3.0\n     * @apioption plotOptions.series.accessibility.point.descriptionFormatter\n     */\n    /**\n     * Keyboard navigation for a series\n     *\n     * @declare    Highcharts.SeriesAccessibilityKeyboardNavigationOptionsObject\n     * @since      7.1.0\n     * @apioption  plotOptions.series.accessibility.keyboardNavigation\n     */\n    /**\n     * Enable/disable keyboard navigation support for a specific series.\n     *\n     * @type       {boolean}\n     * @since      7.1.0\n     * @apioption  plotOptions.series.accessibility.keyboardNavigation.enabled\n     */\n    /**\n     * Accessibility options for an annotation label.\n     *\n     * @declare    Highcharts.AnnotationLabelAccessibilityOptionsObject\n     * @since 8.0.1\n     * @requires   modules/accessibility\n     * @apioption  annotations.labelOptions.accessibility\n     */\n    /**\n     * Description of an annotation label for screen readers and other assistive\n     * technology.\n     *\n     * @type       {string}\n     * @since 8.0.1\n     * @apioption  annotations.labelOptions.accessibility.description\n     */\n    /**\n     * Accessibility options for an axis. Requires the accessibility module.\n     *\n     * @declare    Highcharts.AxisAccessibilityOptionsObject\n     * @since      7.1.0\n     * @requires   modules/accessibility\n     * @apioption  xAxis.accessibility\n     */\n    /**\n     * Enable axis accessibility features, including axis information in the\n     * screen reader information region. If this is disabled on the xAxis, the\n     * x values are not exposed to screen readers for the individual data points\n     * by default.\n     *\n     * @type       {boolean}\n     * @since      7.1.0\n     * @apioption  xAxis.accessibility.enabled\n     */\n    /**\n     * Description for an axis to expose to screen reader users.\n     *\n     * @type       {string}\n     * @since      7.1.0\n     * @apioption  xAxis.accessibility.description\n     */\n    /**\n     * Range description for an axis. Overrides the default range description.\n     * Set to empty to disable range description for this axis.\n     *\n     * @type       {string}\n     * @since      7.1.0\n     * @apioption  xAxis.accessibility.rangeDescription\n     */\n    /**\n     * @optionparent legend\n     */\n    legend: {\n        /**\n         * Accessibility options for the legend. Requires the Accessibility\n         * module.\n         *\n         * @since     7.1.0\n         * @requires  modules/accessibility\n         */\n        accessibility: {\n            /**\n             * Enable accessibility support for the legend.\n             *\n             * @since  7.1.0\n             */\n            enabled: true,\n            /**\n             * Options for keyboard navigation for the legend.\n             *\n             * @since     7.1.0\n             * @requires  modules/accessibility\n             */\n            keyboardNavigation: {\n                /**\n                 * Enable keyboard navigation for the legend.\n                 *\n                 * @see [accessibility.keyboardNavigation](#accessibility.keyboardNavigation.enabled)\n                 *\n                 * @since  7.1.0\n                 */\n                enabled: true\n            }\n        }\n    },\n    /**\n     * @optionparent exporting\n     */\n    exporting: {\n        /**\n         * Accessibility options for the exporting menu. Requires the\n         * Accessibility module.\n         *\n         * @since    7.1.0\n         * @requires modules/accessibility\n         */\n        accessibility: {\n            /**\n             * Enable accessibility support for the export menu.\n             *\n             * @since 7.1.0\n             */\n            enabled: true\n        }\n    },\n    /**\n     * @optionparent navigator\n     */\n    navigator: {\n        /**\n         * Accessibility options for the navigator. Requires the\n         * Accessibility module.\n         *\n         * @since 11.2.0\n         * @requires modules/accessibility\n         */\n        accessibility: {\n            /**\n             * Enable accessibility support for the navigator.\n             *\n             * @since 11.2.0\n             */\n            enabled: true\n        }\n    }\n};\n/* harmony default export */ var A11yDefaults = (Options);\n\n;// ./code/es5/es-modules/Accessibility/Options/LangDefaults.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Default lang/i18n options for accessibility.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\nvar langOptions = {\n    /**\n     * Configure the accessibility strings in the chart. Requires the\n     * [accessibility module](https://code.highcharts.com/modules/accessibility.js)\n     * to be loaded. For a description of the module and information on its\n     * features, see\n     * [Highcharts Accessibility](https://www.highcharts.com/docs/chart-concepts/accessibility).\n     *\n     * The lang options use [Format Strings](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#format-strings)\n     * with variables that are replaced at run time. These variables should be\n     * used when available, to avoid duplicating text that is defined elsewhere.\n     *\n     * For more dynamic control over the accessibility functionality, see\n     * [accessibility.point.descriptionFormatter](#accessibility.point.descriptionFormatter),\n     * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n     * and\n     * [accessibility.screenReaderSection.beforeChartFormatter](#accessibility.screenReaderSection.beforeChartFormatter).\n     *\n     * @since        6.0.6\n     * @optionparent lang.accessibility\n     */\n    accessibility: {\n        /**\n         * @deprecated 10.2.1\n         * @type       {string}\n         * @apioption  lang.accessibility.resetZoomButton\n         */\n        /**\n         * Default title of the chart for assistive technology, for charts\n         * without a chart title.\n         */\n        defaultChartTitle: 'Chart',\n        /**\n         * Accessible label for the chart container HTML element.\n         * `{title}` refers to the chart title.\n         */\n        chartContainerLabel: '{title}. Highcharts interactive chart.',\n        /**\n         * Accessible label for the chart SVG element.\n         * `{chartTitle}` refers to the chart title.\n         */\n        svgContainerLabel: 'Interactive chart',\n        /**\n         * Accessible label for the drill-up button.\n         * `{buttonText}` refers to the visual text on the button.\n         */\n        drillUpButton: '{buttonText}',\n        /**\n         * Accessible label for the chart credits.\n         * `{creditsStr}` refers to the visual text in the credits.\n         */\n        credits: 'Chart credits: {creditsStr}',\n        /**\n         * Thousands separator to use when formatting numbers for screen\n         * readers. Note that many screen readers will not handle space as a\n         * thousands separator, and will consider \"11 700\" as two numbers.\n         *\n         * Set to `null` to use the separator defined in\n         * [lang.thousandsSep](lang.thousandsSep).\n         *\n         * @since 7.1.0\n         */\n        thousandsSep: ',',\n        /**\n         * Title element text for the chart SVG element. Leave this\n         * empty to disable adding the title element. Browsers will display\n         * this content when hovering over elements in the chart. Assistive\n         * technology may use this element to label the chart.\n         *\n         * @since 6.0.8\n         */\n        svgContainerTitle: '',\n        /**\n         * Set a label on the container wrapping the SVG.\n         *\n         * @see [chartContainerLabel](#lang.accessibility.chartContainerLabel)\n         *\n         * @since 8.0.0\n         */\n        graphicContainerLabel: '',\n        /**\n         * Language options for the screen reader information sections added\n         * before and after the charts.\n         *\n         * @since 8.0.0\n         */\n        screenReaderSection: {\n            beforeRegionLabel: '',\n            afterRegionLabel: '',\n            /**\n             * Language options for annotation descriptions.\n             *\n             * @since 8.0.1\n             */\n            annotations: {\n                heading: 'Chart annotations summary',\n                descriptionSinglePoint: ('{annotationText}. Related to {annotationPoint}'),\n                descriptionMultiplePoints: ('{annotationText}. Related to {annotationPoint}' +\n                    '{#each additionalAnnotationPoints}' +\n                    ', also related to {this}' +\n                    '{/each}'),\n                descriptionNoPoints: '{annotationText}'\n            },\n            /**\n             * Label for the end of the chart. Announced by screen readers.\n             *\n             * @since 8.0.0\n             */\n            endOfChartMarker: 'End of interactive chart.'\n        },\n        /**\n         * Language options for sonification.\n         *\n         * @since 8.0.1\n         */\n        sonification: {\n            playAsSoundButtonText: 'Play as sound, {chartTitle}',\n            playAsSoundClickAnnouncement: 'Play'\n        },\n        /**\n         * Language options for accessibility of the legend.\n         *\n         * @since 8.0.0\n         */\n        legend: {\n            /**\n             * Accessible label for the legend, for charts where there is no\n             * legend title defined.\n             */\n            legendLabelNoTitle: 'Toggle series visibility, {chartTitle}',\n            /**\n             * Accessible label for the legend, for charts where there is a\n             * legend title defined. `{legendTitle}` refers to the visual text\n             * in the legend title.\n             */\n            legendLabel: 'Chart legend: {legendTitle}',\n            /**\n             * Accessible label for individual legend items. `{itemName}` refers\n             * to the visual text in the legend for that item.\n             */\n            legendItem: 'Show {itemName}'\n        },\n        /**\n         * Chart and map zoom accessibility language options.\n         *\n         * @since 8.0.0\n         */\n        zoom: {\n            mapZoomIn: 'Zoom chart',\n            mapZoomOut: 'Zoom out chart',\n            resetZoomButton: 'Reset zoom'\n        },\n        /**\n         * Range selector language options for accessibility.\n         *\n         * @since 8.0.0\n         */\n        rangeSelector: {\n            dropdownLabel: '{rangeTitle}',\n            minInputLabel: 'Select start date.',\n            maxInputLabel: 'Select end date.',\n            clickButtonAnnouncement: 'Viewing {axisRangeDescription}'\n        },\n        /**\n         * Navigator language options for accessibility.\n         *\n         * @since 11.2.0\n         */\n        navigator: {\n            /**\n             * Label for the navigator handles.\n             *\n             * Receives `handleIx` and `chart` as context.\n             * `handleIx` refers to the index of the navigator handle.\n             */\n            handleLabel: '{#eq handleIx 0}Start, percent{else}End, percent{/eq}',\n            /**\n             * Label for the navigator region.\n             *\n             * Receives `chart` as context.\n             */\n            groupLabel: 'Axis zoom',\n            /**\n             * Announcement for assistive technology when navigator values\n             * are changed.\n             *\n             * Receives `axisRangeDescription` and `chart` as context.\n             * `axisRangeDescription` corresponds to the range description\n             * defined in [lang.accessibility.axis](#lang.accessibility.axis)\n             */\n            changeAnnouncement: '{axisRangeDescription}'\n        },\n        /**\n         * Accessibility language options for the data table.\n         *\n         * @since 8.0.0\n         */\n        table: {\n            viewAsDataTableButtonText: 'View as data table, {chartTitle}',\n            tableSummary: 'Table representation of chart.'\n        },\n        /**\n         * Default announcement for new data in charts. If addPoint or\n         * addSeries is used, and only one series/point is added, the\n         * `newPointAnnounce` and `newSeriesAnnounce` strings are used.\n         * The `...Single` versions will be used if there is only one chart\n         * on the page, and the `...Multiple` versions will be used if there\n         * are multiple charts on the page. For all other new data events,\n         * the `newDataAnnounce` string will be used.\n         *\n         * @since 7.1.0\n         */\n        announceNewData: {\n            newDataAnnounce: 'Updated data for chart {chartTitle}',\n            newSeriesAnnounceSingle: 'New data series: {seriesDesc}',\n            newPointAnnounceSingle: 'New data point: {pointDesc}',\n            newSeriesAnnounceMultiple: 'New data series in chart {chartTitle}: {seriesDesc}',\n            newPointAnnounceMultiple: 'New data point in chart {chartTitle}: {pointDesc}'\n        },\n        /**\n         * Descriptions of lesser known series types. The relevant\n         * description is added to the screen reader information region\n         * when these series types are used.\n         *\n         * @since 6.0.6\n         */\n        seriesTypeDescriptions: {\n            boxplot: 'Box plot charts are typically used to display ' +\n                'groups of statistical data. Each data point in the ' +\n                'chart can have up to 5 values: minimum, lower quartile, ' +\n                'median, upper quartile, and maximum.',\n            arearange: 'Arearange charts are line charts displaying a ' +\n                'range between a lower and higher value for each point.',\n            areasplinerange: 'These charts are line charts displaying a ' +\n                'range between a lower and higher value for each point.',\n            bubble: 'Bubble charts are scatter charts where each data ' +\n                'point also has a size value.',\n            columnrange: 'Columnrange charts are column charts ' +\n                'displaying a range between a lower and higher value for ' +\n                'each point.',\n            errorbar: 'Errorbar series are used to display the ' +\n                'variability of the data.',\n            funnel: 'Funnel charts are used to display reduction of data ' +\n                'in stages.',\n            pyramid: 'Pyramid charts consist of a single pyramid with ' +\n                'item heights corresponding to each point value.',\n            waterfall: 'A waterfall chart is a column chart where each ' +\n                'column contributes towards a total end value.'\n        },\n        /**\n         * Chart type description strings. This is added to the chart\n         * information region.\n         *\n         * If there is only a single series type used in the chart, we use\n         * the format string for the series type, or default if missing.\n         * There is one format string for cases where there is only a single\n         * series in the chart, and one for multiple series of the same\n         * type.\n         *\n         * @since 6.0.6\n         */\n        chartTypes: {\n            /* eslint-disable max-len */\n            emptyChart: 'Empty chart',\n            mapTypeDescription: 'Map of {mapTitle} with {numSeries} data series.',\n            unknownMap: 'Map of unspecified region with {numSeries} data series.',\n            combinationChart: 'Combination chart with {numSeries} data series.',\n            defaultSingle: 'Chart with {numPoints} data ' +\n                '{#eq numPoints 1}point{else}points{/eq}.',\n            defaultMultiple: 'Chart with {numSeries} data series.',\n            splineSingle: 'Line chart with {numPoints} data ' +\n                '{#eq numPoints 1}point{else}points{/eq}.',\n            splineMultiple: 'Line chart with {numSeries} lines.',\n            lineSingle: 'Line chart with {numPoints} data ' +\n                '{#eq numPoints 1}point{else}points{/eq}.',\n            lineMultiple: 'Line chart with {numSeries} lines.',\n            columnSingle: 'Bar chart with {numPoints} ' +\n                '{#eq numPoints 1}bar{else}bars{/eq}.',\n            columnMultiple: 'Bar chart with {numSeries} data series.',\n            barSingle: 'Bar chart with {numPoints} ' +\n                '{#eq numPoints 1}bar{else}bars{/eq}.',\n            barMultiple: 'Bar chart with {numSeries} data series.',\n            pieSingle: 'Pie chart with {numPoints} ' +\n                '{#eq numPoints 1}slice{else}slices{/eq}.',\n            pieMultiple: 'Pie chart with {numSeries} pies.',\n            scatterSingle: 'Scatter chart with {numPoints} ' +\n                '{#eq numPoints 1}point{else}points{/eq}.',\n            scatterMultiple: 'Scatter chart with {numSeries} data series.',\n            boxplotSingle: 'Boxplot with {numPoints} ' +\n                '{#eq numPoints 1}box{else}boxes{/eq}.',\n            boxplotMultiple: 'Boxplot with {numSeries} data series.',\n            bubbleSingle: 'Bubble chart with {numPoints} ' +\n                '{#eq numPoints 1}bubbles{else}bubble{/eq}.',\n            bubbleMultiple: 'Bubble chart with {numSeries} data series.'\n        }, /* eslint-enable max-len */\n        /**\n         * Axis description format strings.\n         *\n         * @since 6.0.6\n         */\n        axis: {\n            /* eslint-disable max-len */\n            xAxisDescriptionSingular: 'The chart has 1 X axis displaying {names[0]}. {ranges[0]}',\n            xAxisDescriptionPlural: 'The chart has {numAxes} X axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.',\n            yAxisDescriptionSingular: 'The chart has 1 Y axis displaying {names[0]}. {ranges[0]}',\n            yAxisDescriptionPlural: 'The chart has {numAxes} Y axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.',\n            timeRangeDays: 'Data range: {range} days.',\n            timeRangeHours: 'Data range: {range} hours.',\n            timeRangeMinutes: 'Data range: {range} minutes.',\n            timeRangeSeconds: 'Data range: {range} seconds.',\n            rangeFromTo: 'Data ranges from {rangeFrom} to {rangeTo}.',\n            rangeCategories: 'Data range: {numCategories} categories.'\n        }, /* eslint-enable max-len */\n        /**\n         * Exporting menu format strings for accessibility module.\n         *\n         * @since 6.0.6\n         */\n        exporting: {\n            chartMenuLabel: 'Chart menu',\n            menuButtonLabel: 'View chart menu, {chartTitle}'\n        },\n        /**\n         * Lang configuration for different series types. For more dynamic\n         * control over the series element descriptions, see\n         * [accessibility.seriesDescriptionFormatter](#accessibility.seriesDescriptionFormatter).\n         *\n         * @since 6.0.6\n         */\n        series: {\n            /**\n             * Lang configuration for the series main summary. Each series\n             * type has two modes:\n             *\n             * 1. This series type is the only series type used in the\n             *    chart\n             *\n             * 2. This is a combination chart with multiple series types\n             *\n             * If a definition does not exist for the specific series type\n             * and mode, the 'default' lang definitions are used.\n             *\n             * Chart and its subproperties can be accessed with the `{chart}` variable.\n             * The series and its subproperties can be accessed with the `{series}` variable.\n             *\n             * The series index (starting from 1) can be accessed with the `{seriesNumber}` variable.\n             *\n             * @since 6.0.6\n             */\n            summary: {\n                /* eslint-disable max-len */\n                'default': '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                defaultCombination: '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                line: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                lineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                spline: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                splineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                column: '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.',\n                columnCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.',\n                bar: '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.',\n                barCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.',\n                pie: '{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.',\n                pieCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.',\n                scatter: '{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.',\n                scatterCombination: '{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.',\n                boxplot: '{series.name}, boxplot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.',\n                boxplotCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Boxplot with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.',\n                bubble: '{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.',\n                bubbleCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.',\n                map: '{series.name}, map {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.',\n                mapCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Map with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.',\n                mapline: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                maplineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.',\n                mapbubble: '{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.',\n                mapbubbleCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.'\n            }, /* eslint-enable max-len */\n            /**\n             * User supplied description text. This is added in the point\n             * comment description by default if present.\n             *\n             * `{description}` refers to the value given in\n             * [point.accessibility.description](#series.line.data.accessibility.description).\n             *\n             * @since 6.0.6\n             */\n            description: '{description}',\n            /**\n             * X-axis description for series if there are multiple xAxes in\n             * the chart.\n             *\n             * @since 6.0.6\n             */\n            xAxisDescription: 'X axis, {name}',\n            /**\n             * Y-axis description for series if there are multiple yAxes in\n             * the chart.\n             *\n             * @since 6.0.6\n             */\n            yAxisDescription: 'Y axis, {name}',\n            /**\n             * Description for the value of null points.\n             *\n             * @since 8.0.0\n             */\n            nullPointValue: 'No value',\n            /**\n             * Description for annotations on a point, as it is made available\n             * to assistive technology.\n             *\n             * @since 8.0.1\n             */\n            pointAnnotationsDescription: '{#each annotations}' +\n                'Annotation: {this}{/each}'\n        }\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var LangDefaults = (langOptions);\n\n;// ./code/es5/es-modules/Accessibility/Options/DeprecatedOptions.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Default options for accessibility.\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n/* eslint-disable max-len */\n/*\n *  List of deprecated options:\n *\n *  chart.description -> accessibility.description\n *  chart.typeDescription -> accessibility.typeDescription\n *  series.description -> series.accessibility.description\n *  series.exposeElementToA11y -> series.accessibility.exposeAsGroupOnly\n *  series.pointDescriptionFormatter ->\n *      series.accessibility.pointDescriptionFormatter\n *  series.accessibility.pointDescriptionFormatter ->\n *      series.accessibility.point.descriptionFormatter\n *  series.skipKeyboardNavigation ->\n *      series.accessibility.keyboardNavigation.enabled\n *  point.description -> point.accessibility.description !!!! WARNING: No longer deprecated and handled, removed for HC8.\n *  axis.description -> axis.accessibility.description\n *\n *  accessibility.pointDateFormat -> accessibility.point.dateFormat\n *  accessibility.addTableShortcut -> Handled by screenReaderSection.beforeChartFormat\n *  accessibility.pointDateFormatter -> accessibility.point.dateFormatter\n *  accessibility.pointDescriptionFormatter -> accessibility.point.descriptionFormatter\n *  accessibility.pointDescriptionThreshold -> accessibility.series.pointDescriptionEnabledThreshold\n *  accessibility.pointNavigationThreshold -> accessibility.keyboardNavigation.seriesNavigation.pointNavigationEnabledThreshold\n *  accessibility.pointValueDecimals -> accessibility.point.valueDecimals\n *  accessibility.pointValuePrefix -> accessibility.point.valuePrefix\n *  accessibility.pointValueSuffix -> accessibility.point.valueSuffix\n *  accessibility.screenReaderSectionFormatter -> accessibility.screenReaderSection.beforeChartFormatter\n *  accessibility.describeSingleSeries -> accessibility.series.describeSingleSeries\n *  accessibility.seriesDescriptionFormatter -> accessibility.series.descriptionFormatter\n *  accessibility.onTableAnchorClick -> accessibility.screenReaderSection.onViewDataTableClick\n *  accessibility.axisRangeDateFormat -> accessibility.screenReaderSection.axisRangeDateFormat\n *  accessibility.keyboardNavigation.skipNullPoints -> accessibility.keyboardNavigation.seriesNavigation.skipNullPoints\n *  accessibility.keyboardNavigation.mode -> accessibility.keyboardNavigation.seriesNavigation.mode\n *\n *  lang.accessibility.chartHeading -> no longer used, remove\n *  lang.accessibility.legendItem -> lang.accessibility.legend.legendItem\n *  lang.accessibility.legendLabel -> lang.accessibility.legend.legendLabel\n *  lang.accessibility.mapZoomIn -> lang.accessibility.zoom.mapZoomIn\n *  lang.accessibility.mapZoomOut -> lang.accessibility.zoom.mapZoomOut\n *  lang.accessibility.resetZoomButton -> lang.accessibility.zoom.resetZoomButton\n *  lang.accessibility.screenReaderRegionLabel -> lang.accessibility.screenReaderSection.beforeRegionLabel\n *  lang.accessibility.rangeSelectorButton -> lang.accessibility.rangeSelector.buttonText\n *  lang.accessibility.rangeSelectorMaxInput -> lang.accessibility.rangeSelector.maxInputLabel\n *  lang.accessibility.rangeSelectorMinInput -> lang.accessibility.rangeSelector.minInputLabel\n *  lang.accessibility.svgContainerEnd -> lang.accessibility.screenReaderSection.endOfChartMarker\n *  lang.accessibility.viewAsDataTable -> lang.accessibility.table.viewAsDataTableButtonText\n *  lang.accessibility.tableSummary -> lang.accessibility.table.tableSummary\n *\n */\n/* eslint-enable max-len */\n\n\nvar error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, DeprecatedOptions_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * Set a new option on a root prop, where the option is defined as an array of\n * suboptions.\n * @private\n * @param root\n * @param {Array<string>} optionAsArray\n * @param {*} val\n * @return {void}\n */\nfunction traverseSetOption(root, optionAsArray, val) {\n    var opt = root,\n        prop,\n        i = 0;\n    for (; i < optionAsArray.length - 1; ++i) {\n        prop = optionAsArray[i];\n        opt = opt[prop] = DeprecatedOptions_pick(opt[prop], {});\n    }\n    opt[optionAsArray[optionAsArray.length - 1]] = val;\n}\n/**\n * If we have a clear root option node for old and new options and a mapping\n * between, we can use this generic function for the copy and warn logic.\n */\nfunction deprecateFromOptionsMap(chart, rootOldAsArray, rootNewAsArray, mapToNewOptions) {\n    /**\n     * @private\n     */\n    function getChildProp(root, propAsArray) {\n        return propAsArray.reduce(function (acc, cur) {\n            return acc[cur];\n        }, root);\n    }\n    var rootOld = getChildProp(chart.options,\n        rootOldAsArray),\n        rootNew = getChildProp(chart.options,\n        rootNewAsArray);\n    Object.keys(mapToNewOptions).forEach(function (oldOptionKey) {\n        var _a;\n        var val = rootOld[oldOptionKey];\n        if (typeof val !== 'undefined') {\n            traverseSetOption(rootNew, mapToNewOptions[oldOptionKey], val);\n            error(32, false, chart, (_a = {},\n                _a[rootOldAsArray.join('.') + '.' + oldOptionKey] = (rootNewAsArray.join('.') + '.' +\n                    mapToNewOptions[oldOptionKey].join('.')),\n                _a));\n        }\n    });\n}\n/**\n * @private\n */\nfunction copyDeprecatedChartOptions(chart) {\n    var chartOptions = chart.options.chart,\n        a11yOptions = chart.options.accessibility || {};\n    ['description', 'typeDescription'].forEach(function (prop) {\n        var _a;\n        if (chartOptions[prop]) {\n            a11yOptions[prop] = chartOptions[prop];\n            error(32, false, chart, (_a = {}, _a[\"chart.\".concat(prop)] = \"use accessibility.\".concat(prop), _a));\n        }\n    });\n}\n/**\n * @private\n */\nfunction copyDeprecatedAxisOptions(chart) {\n    chart.axes.forEach(function (axis) {\n        var opts = axis.options;\n        if (opts && opts.description) {\n            opts.accessibility = opts.accessibility || {};\n            opts.accessibility.description = opts.description;\n            error(32, false, chart, {\n                'axis.description': 'use axis.accessibility.description'\n            });\n        }\n    });\n}\n/**\n * @private\n */\nfunction copyDeprecatedSeriesOptions(chart) {\n    // Map of deprecated series options. New options are defined as\n    // arrays of paths under series.options.\n    var oldToNewSeriesOptions = {\n            description: ['accessibility', 'description'],\n            exposeElementToA11y: ['accessibility', 'exposeAsGroupOnly'],\n            pointDescriptionFormatter: [\n                'accessibility', 'point', 'descriptionFormatter'\n            ],\n            skipKeyboardNavigation: [\n                'accessibility', 'keyboardNavigation', 'enabled'\n            ],\n            'accessibility.pointDescriptionFormatter': [\n                'accessibility', 'point', 'descriptionFormatter'\n            ]\n        };\n    chart.series.forEach(function (series) {\n        // Handle series wide options\n        Object.keys(oldToNewSeriesOptions).forEach(function (oldOption) {\n            var _a;\n            var optionVal = series.options[oldOption];\n            // Special case\n            if (oldOption === 'accessibility.pointDescriptionFormatter') {\n                optionVal = (series.options.accessibility &&\n                    series.options.accessibility\n                        .pointDescriptionFormatter);\n            }\n            if (typeof optionVal !== 'undefined') {\n                // Set the new option\n                traverseSetOption(series.options, oldToNewSeriesOptions[oldOption], \n                // Note that skipKeyboardNavigation has inverted option\n                // value, since we set enabled rather than disabled\n                oldOption === 'skipKeyboardNavigation' ?\n                    !optionVal : optionVal);\n                error(32, false, chart, (_a = {},\n                    _a[\"series.\".concat(oldOption)] = ('series.' +\n                        oldToNewSeriesOptions[oldOption].join('.')),\n                    _a));\n            }\n        });\n    });\n}\n/**\n * @private\n */\nfunction copyDeprecatedTopLevelAccessibilityOptions(chart) {\n    deprecateFromOptionsMap(chart, ['accessibility'], ['accessibility'], {\n        pointDateFormat: ['point', 'dateFormat'],\n        pointDateFormatter: ['point', 'dateFormatter'],\n        pointDescriptionFormatter: ['point', 'descriptionFormatter'],\n        pointDescriptionThreshold: [\n            'series',\n            'pointDescriptionEnabledThreshold'\n        ],\n        pointNavigationThreshold: [\n            'keyboardNavigation', 'seriesNavigation',\n            'pointNavigationEnabledThreshold'\n        ],\n        pointValueDecimals: ['point', 'valueDecimals'],\n        pointValuePrefix: ['point', 'valuePrefix'],\n        pointValueSuffix: ['point', 'valueSuffix'],\n        screenReaderSectionFormatter: [\n            'screenReaderSection',\n            'beforeChartFormatter'\n        ],\n        describeSingleSeries: ['series', 'describeSingleSeries'],\n        seriesDescriptionFormatter: ['series', 'descriptionFormatter'],\n        onTableAnchorClick: ['screenReaderSection', 'onViewDataTableClick'],\n        axisRangeDateFormat: ['screenReaderSection', 'axisRangeDateFormat']\n    });\n}\n/**\n * @private\n */\nfunction copyDeprecatedKeyboardNavigationOptions(chart) {\n    deprecateFromOptionsMap(chart, ['accessibility', 'keyboardNavigation'], ['accessibility', 'keyboardNavigation', 'seriesNavigation'], {\n        skipNullPoints: ['skipNullPoints'],\n        mode: ['mode']\n    });\n}\n/**\n * @private\n */\nfunction copyDeprecatedLangOptions(chart) {\n    deprecateFromOptionsMap(chart, ['lang', 'accessibility'], ['lang', 'accessibility'], {\n        legendItem: ['legend', 'legendItem'],\n        legendLabel: ['legend', 'legendLabel'],\n        mapZoomIn: ['zoom', 'mapZoomIn'],\n        mapZoomOut: ['zoom', 'mapZoomOut'],\n        resetZoomButton: ['zoom', 'resetZoomButton'],\n        screenReaderRegionLabel: [\n            'screenReaderSection',\n            'beforeRegionLabel'\n        ],\n        rangeSelectorButton: ['rangeSelector', 'buttonText'],\n        rangeSelectorMaxInput: ['rangeSelector', 'maxInputLabel'],\n        rangeSelectorMinInput: ['rangeSelector', 'minInputLabel'],\n        svgContainerEnd: ['screenReaderSection', 'endOfChartMarker'],\n        viewAsDataTable: ['table', 'viewAsDataTableButtonText'],\n        tableSummary: ['table', 'tableSummary']\n    });\n}\n/**\n * Copy options that are deprecated over to new options. Logs warnings to\n * console if deprecated options are used.\n *\n * @private\n */\nfunction copyDeprecatedOptions(chart) {\n    copyDeprecatedChartOptions(chart);\n    copyDeprecatedAxisOptions(chart);\n    if (chart.series) {\n        copyDeprecatedSeriesOptions(chart);\n    }\n    copyDeprecatedTopLevelAccessibilityOptions(chart);\n    copyDeprecatedKeyboardNavigationOptions(chart);\n    copyDeprecatedLangOptions(chart);\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var DeprecatedOptions = (copyDeprecatedOptions);\n\n;// ./code/es5/es-modules/Accessibility/Accessibility.js\n/* *\n *\n *  (c) 2009-2024 Øystein Moseng\n *\n *  Accessibility module for Highcharts\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar Accessibility_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar Accessibility_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc;\n\nvar Accessibility_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, Accessibility_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, Accessibility_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, Accessibility_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n\nvar Accessibility_removeElement = Utils_HTMLUtilities.removeElement;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * The Accessibility class\n *\n * @private\n * @requires modules/accessibility\n *\n * @class\n * @name Highcharts.Accessibility\n *\n * @param {Highcharts.Chart} chart\n * Chart object\n */\nvar Accessibility = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function Accessibility(chart) {\n        this.init(chart);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initialize the accessibility class\n     * @private\n     * @param {Highcharts.Chart} chart\n     *        Chart object\n     */\n    Accessibility.prototype.init = function (chart) {\n        this.chart = chart;\n        // Abort on old browsers\n        if (!Accessibility_doc.addEventListener) {\n            this.zombie = true;\n            this.components = {};\n            chart.renderTo.setAttribute('aria-hidden', true);\n            return;\n        }\n        // Copy over any deprecated options that are used. We could do this on\n        // every update, but it is probably not needed.\n        DeprecatedOptions(chart);\n        this.proxyProvider = new Accessibility_ProxyProvider(this.chart);\n        this.initComponents();\n        this.keyboardNavigation = new Accessibility_KeyboardNavigation(chart, this.components);\n    };\n    /**\n     * @private\n     */\n    Accessibility.prototype.initComponents = function () {\n        var chart = this.chart;\n        var proxyProvider = this.proxyProvider;\n        var a11yOptions = chart.options.accessibility;\n        this.components = {\n            container: new Components_ContainerComponent(),\n            infoRegions: new Components_InfoRegionsComponent(),\n            legend: new Components_LegendComponent(),\n            chartMenu: new Components_MenuComponent(),\n            rangeSelector: new Components_RangeSelectorComponent(),\n            series: new SeriesComponent_SeriesComponent(),\n            zoom: new Components_ZoomComponent(),\n            navigator: new Components_NavigatorComponent()\n        };\n        if (a11yOptions.customComponents) {\n            Accessibility_extend(this.components, a11yOptions.customComponents);\n        }\n        var components = this.components;\n        this.getComponentOrder().forEach(function (componentName) {\n            components[componentName].initBase(chart, proxyProvider);\n            components[componentName].init();\n        });\n    };\n    /**\n     * Get order to update components in.\n     * @private\n     */\n    Accessibility.prototype.getComponentOrder = function () {\n        if (!this.components) {\n            return []; // For zombie accessibility object on old browsers\n        }\n        if (!this.components.series) {\n            return Object.keys(this.components);\n        }\n        var componentsExceptSeries = Object.keys(this.components)\n                .filter(function (c) { return c !== 'series'; });\n        // Update series first, so that other components can read accessibility\n        // info on points.\n        return ['series'].concat(componentsExceptSeries);\n    };\n    /**\n     * Update all components.\n     */\n    Accessibility.prototype.update = function () {\n        var components = this.components,\n            chart = this.chart,\n            a11yOptions = chart.options.accessibility;\n        Accessibility_fireEvent(chart, 'beforeA11yUpdate');\n        // Update the chart type list as this is used by multiple modules\n        chart.types = this.getChartTypes();\n        // Update proxies. We don't update proxy positions since most likely we\n        // need to recreate the proxies on update.\n        var kbdNavOrder = a11yOptions.keyboardNavigation.order;\n        this.proxyProvider.updateGroupOrder(kbdNavOrder);\n        // Update markup\n        this.getComponentOrder().forEach(function (componentName) {\n            components[componentName].onChartUpdate();\n            Accessibility_fireEvent(chart, 'afterA11yComponentUpdate', {\n                name: componentName,\n                component: components[componentName]\n            });\n        });\n        // Update keyboard navigation\n        this.keyboardNavigation.update(kbdNavOrder);\n        // Handle high contrast mode\n        // Should only be applied once, and not if explicitly disabled\n        if (!chart.highContrastModeActive &&\n            a11yOptions.highContrastMode !== false && (HighContrastMode.isHighContrastModeActive() ||\n            a11yOptions.highContrastMode === true)) {\n            HighContrastMode.setHighContrastTheme(chart);\n        }\n        Accessibility_fireEvent(chart, 'afterA11yUpdate', {\n            accessibility: this\n        });\n    };\n    /**\n     * Destroy all elements.\n     */\n    Accessibility.prototype.destroy = function () {\n        var chart = this.chart || {};\n        // Destroy components\n        var components = this.components;\n        Object.keys(components).forEach(function (componentName) {\n            components[componentName].destroy();\n            components[componentName].destroyBase();\n        });\n        // Destroy proxy provider\n        if (this.proxyProvider) {\n            this.proxyProvider.destroy();\n        }\n        // Remove announcer container\n        if (chart.announcerContainer) {\n            Accessibility_removeElement(chart.announcerContainer);\n        }\n        // Kill keyboard nav\n        if (this.keyboardNavigation) {\n            this.keyboardNavigation.destroy();\n        }\n        // Hide container from screen readers if it exists\n        if (chart.renderTo) {\n            chart.renderTo.setAttribute('aria-hidden', true);\n        }\n        // Remove focus border if it exists\n        if (chart.focusElement) {\n            chart.focusElement.removeFocusBorder();\n        }\n    };\n    /**\n     * Return a list of the types of series we have in the chart.\n     * @private\n     */\n    Accessibility.prototype.getChartTypes = function () {\n        var types = {};\n        this.chart.series.forEach(function (series) {\n            types[series.type] = 1;\n        });\n        return Object.keys(types);\n    };\n    return Accessibility;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (Accessibility) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    Accessibility.i18nFormat = A11yI18n.i18nFormat;\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Destroy with chart.\n     * @private\n     */\n    function chartOnDestroy() {\n        if (this.accessibility) {\n            this.accessibility.destroy();\n        }\n    }\n    /**\n     * Handle updates to the module and send render updates to components.\n     * @private\n     */\n    function chartOnRender() {\n        // Update/destroy\n        if (this.a11yDirty && this.renderTo) {\n            delete this.a11yDirty;\n            this.updateA11yEnabled();\n        }\n        var a11y = this.accessibility;\n        if (a11y && !a11y.zombie) {\n            a11y.proxyProvider.updateProxyElementPositions();\n            a11y.getComponentOrder().forEach(function (componentName) {\n                a11y.components[componentName].onChartRender();\n            });\n        }\n    }\n    /**\n     * Update with chart/series/point updates.\n     * @private\n     */\n    function chartOnUpdate(e) {\n        // Merge new options\n        var newOptions = e.options.accessibility;\n        if (newOptions) {\n            // Handle custom component updating specifically\n            if (newOptions.customComponents) {\n                this.options.accessibility.customComponents =\n                    newOptions.customComponents;\n                delete newOptions.customComponents;\n            }\n            Accessibility_merge(true, this.options.accessibility, newOptions);\n            // Recreate from scratch\n            if (this.accessibility && this.accessibility.destroy) {\n                this.accessibility.destroy();\n                delete this.accessibility;\n            }\n        }\n        // Mark dirty for update\n        this.a11yDirty = true;\n    }\n    /**\n     * @private\n     */\n    function chartUpdateA11yEnabled() {\n        var a11y = this.accessibility;\n        var accessibilityOptions = this.options.accessibility,\n            svg = this.renderer.boxWrapper.element,\n            title = this.title;\n        if (accessibilityOptions && accessibilityOptions.enabled) {\n            if (a11y && !a11y.zombie) {\n                a11y.update();\n            }\n            else {\n                this.accessibility = a11y = new Accessibility(this);\n                if (a11y && !a11y.zombie) {\n                    a11y.update();\n                }\n                // If a11y has been disabled, and is now enabled\n                if (svg.getAttribute('role') === 'img') {\n                    svg.removeAttribute('role');\n                }\n            }\n        }\n        else if (a11y) {\n            // Destroy if after update we have a11y and it is disabled\n            if (a11y.destroy) {\n                a11y.destroy();\n            }\n            delete this.accessibility;\n        }\n        else {\n            // If a11y has been disabled dynamically or is disabled\n            this.renderTo.setAttribute('role', 'img');\n            this.renderTo.setAttribute('aria-hidden', false);\n            this.renderTo.setAttribute('aria-label', ((title && title.element.textContent) || '').replace(/</g, '&lt;'));\n            svg.setAttribute('aria-hidden', true);\n            var description = document.getElementsByClassName('highcharts-description')[0];\n            if (description) {\n                description.setAttribute('aria-hidden', false);\n                description.classList.remove('highcharts-linked-description');\n            }\n        }\n    }\n    /**\n     * @private\n     */\n    function compose(ChartClass, LegendClass, PointClass, SeriesClass, SVGElementClass, RangeSelectorClass) {\n        // Ordered:\n        Accessibility_KeyboardNavigation.compose(ChartClass);\n        SeriesComponent_NewDataAnnouncer.compose(SeriesClass);\n        Components_LegendComponent.compose(ChartClass, LegendClass);\n        Components_MenuComponent.compose(ChartClass);\n        SeriesComponent_SeriesComponent.compose(ChartClass, PointClass, SeriesClass);\n        A11yI18n.compose(ChartClass);\n        FocusBorder.compose(ChartClass, SVGElementClass);\n        // RangeSelector\n        if (RangeSelectorClass) {\n            Components_RangeSelectorComponent.compose(ChartClass, RangeSelectorClass);\n        }\n        var chartProto = ChartClass.prototype;\n        if (!chartProto.updateA11yEnabled) {\n            chartProto.updateA11yEnabled = chartUpdateA11yEnabled;\n            Accessibility_addEvent(ChartClass, 'destroy', chartOnDestroy);\n            Accessibility_addEvent(ChartClass, 'render', chartOnRender);\n            Accessibility_addEvent(ChartClass, 'update', chartOnUpdate);\n            // Mark dirty for update\n            ['addSeries', 'init'].forEach(function (event) {\n                Accessibility_addEvent(ChartClass, event, function () {\n                    this.a11yDirty = true;\n                });\n            });\n            // Direct updates (events happen after render)\n            ['afterApplyDrilldown', 'drillupall'].forEach(function (event) {\n                Accessibility_addEvent(ChartClass, event, function chartOnAfterDrilldown() {\n                    var a11y = this.accessibility;\n                    if (a11y && !a11y.zombie) {\n                        a11y.update();\n                    }\n                });\n            });\n            Accessibility_addEvent(PointClass, 'update', pointOnUpdate);\n            // Mark dirty for update\n            ['update', 'updatedData', 'remove'].forEach(function (event) {\n                Accessibility_addEvent(SeriesClass, event, function () {\n                    if (this.chart.accessibility) {\n                        this.chart.a11yDirty = true;\n                    }\n                });\n            });\n        }\n    }\n    Accessibility.compose = compose;\n    /**\n     * Mark dirty for update.\n     * @private\n     */\n    function pointOnUpdate() {\n        if (this.series.chart.accessibility) {\n            this.series.chart.a11yDirty = true;\n        }\n    }\n})(Accessibility || (Accessibility = {}));\n/* *\n *\n *  Registry\n *\n * */\n// Add default options\nAccessibility_merge(true, Accessibility_defaultOptions, A11yDefaults, {\n    accessibility: {\n        highContrastTheme: HighContrastTheme\n    },\n    lang: LangDefaults\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Accessibility_Accessibility = (Accessibility);\n\n;// ./code/es5/es-modules/masters/modules/accessibility.src.js\n\n\n\n\n\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n// Classes\nG.i18nFormat = Accessibility_Accessibility.i18nFormat;\nG.A11yChartUtilities = Utils_ChartUtilities;\nG.A11yHTMLUtilities = Utils_HTMLUtilities;\nG.AccessibilityComponent = Accessibility_AccessibilityComponent;\nG.KeyboardNavigationHandler = Accessibility_KeyboardNavigationHandler;\nG.SeriesAccessibilityDescriber = SeriesComponent_SeriesDescriber;\n// Compositions\nAccessibility_Accessibility.compose(G.Chart, G.Legend, G.Point, G.Series, G.SVGElement, G.RangeSelector);\n/* harmony default export */ var accessibility_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","require","define","amd","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__660__","__WEBPACK_EXTERNAL_MODULE__632__","__WEBPACK_EXTERNAL_MODULE__532__","__WEBPACK_EXTERNAL_MODULE__239__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__608__","__WEBPACK_EXTERNAL_MODULE__540__","__WEBPACK_EXTERNAL_MODULE__260__","__WEBPACK_EXTERNAL_MODULE__820__","extendStatics","A11yI18nComposition","FocusBorderComposition","NavigatorConstructor","ScrollbarAxis","ForcedMarkersComposition","__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__","accessibility_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","doc","win","css","simulatedEventTarget","EventTarget","cloneMouseEvent","e","MouseEvent","type","createEvent","evt","initMouseEvent","bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","getFakeMouseEvent","position","pos","x","y","composed","buttons","Utils_HTMLUtilities","addClass","el","className","classList","add","indexOf","cloneTouchEvent","touchListToTouchArray","l","touchArray","i","length","item","push","TouchEvent","newEvent","touches","targetTouches","changedTouches","defaultPrevented","preventDefault","fakeEvt","escapeStringForHTML","str","replace","getElement","id","getElementById","getHeadingTagNameForElement","element","getIncreasedHeadingLevel","tagName","Math","min","headingLevel","parseInt","slice","isHeading","test","getPreviousSiblingsHeading","sibling","previousSibling","getHeadingRecursive","prevSiblingsHeading","parent","parentElement","parentTagName","removeChildNodes","lastChild","removeChild","removeClass","remove","RegExp","removeElement","parentNode","reverseChildNodes","node","childNodes","appendChild","stripHTMLTagsFromString","isForExport","visuallyHideElement","width","height","overflow","whiteSpace","clip","marginTop","filter","opacity","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","format","getNestedProperty","pick","i18nFormat","formatString","context","chart","bracketRes","constRes","tokens","cursor","getFirstBracketStatement","sourceStr","offset","startBracket","endBracket","statement","substring","begin","end","value","forEach","token","formatExtendedStatement","ctx","arr","result","eachStart","pluralStart","indexStart","indexEnd","eachEnd","preEach","postEach","eachArguments","eachStatement","split","lenArg","Number","len","isNaN","pluralEnd","pluralArguments","pluralStatement","trim","arrayName","ix","val","reduce","acc","cur","langFormat","langKey","keys","options","lang","compose","ChartClass","chartProto","A11yI18n","ChartUtilities_doc","stripHTMLTags","defined","find","fireEvent","getSeriesFirstPointElement","series","points","firstPointWithGraphic","p","graphic","getSeriesA11yElement","firstPointEl","graph","group","Utils_ChartUtilities","fireEventOnWrappedOrUnwrappedElement","eventObject","hcEvents","dispatchEvent","getChartTitle","title","text","renderer","forExport","getAxisDescription","axis","_a","_b","accessibility","description","axisTitle","textStr","categories","dateTime","getAxisRangeDescription","range","max","rangeUnit","rangeValue","dateRangeFormat","extremes","axisOptions","rangeDescription","dataMax","dataMin","numCategories","Seconds","Minutes","Hours","Days","unit","toFixed","screenReaderSection","axisRangeDateFormat","time","dateFormat","toString","rangeFrom","rangeTo","getPointFromXY","res","getSeriesFromName","name","s","unhideChartElementFromAT","setAttribute","renderTo","body","Array","hasAttribute","hideSeriesFromAT","seriesEl","scrollAxisToPoint","point","xAxis","yAxis","scrollbar","to","from","getRelativePointAxisPosition","axisStart","toPixels","axisEnd","positionProp","coll","pointPos","updatePosition","trigger","DOMEvent","DOMElementProvider_doc","DOMElementProvider_removeElement","DOMElementProvider","elements","createElement","apply","arguments","splice","destroyCreatedElements","addEvent","EventProvider","eventRemovers","remover","removeEvent","event","map","removeAddedEvents","AccessibilityComponent_fireEventOnWrappedOrUnwrappedElement","AccessibilityComponent_getFakeMouseEvent","AccessibilityComponent","destroy","getKeyboardNavigation","init","onChartRender","onChartUpdate","initBase","proxyProvider","eventProvider","domElementProvider","keyCodes","left","right","up","down","enter","space","esc","tab","pageUp","pageDown","home","fn","fakeClickEvent","destroyBase","KeyboardNavigationHandler_find","KeyboardNavigationHandler","keyCodeMap","validate","terminate","response","success","prev","next","noHandler","fail","run","keyCode","which","handlerCodeSet","codeSet","__extends","b","setPrototypeOf","__proto__","__","constructor","create","ContainerComponent_unhideChartElementFromAT","ContainerComponent_getChartTitle","ContainerComponent_doc","ContainerComponent_stripHTMLTags","ContainerComponent","_super","handleSVGTitleElement","setSVGContainerLabel","setGraphicContainerAttrs","setRenderToAttrs","makeCreditsAccessible","titleId","index","titleContents","chartTitle","titleElement","svgTitleElement","createElementNS","textContent","insertBefore","firstChild","svgContainerLabel","box","label","container","shouldHaveLandmark","landmarkVerbosity","containerLabel","credits","creditsStr","a11y","keyboardNavigation","tabindexContainer","focus","FocusBorder_addEvent","FocusBorder_pick","svgElementBorderUpdateTriggers","chartRenderFocusBorder","focusElement","focusBorderOptions","focusBorder","removeFocusBorder","enabled","addFocusBorder","margin","stroke","style","color","strokeWidth","lineWidth","r","borderRadius","chartSetFocusToElement","svgElement","browserFocusElement","focusin","hideBrowserFocusOutline","outline","renderFocusBorder","svgElementAddFocusBorder","attribs","bb","getBBox","pad","parentGroup","scaleX","scaleY","scaleBoth","oneDefined","abs","lineHeight","fontMetrics","h","translateX","translateY","borderPosX","borderPosY","borderWidth","borderHeight","isLabel","nodeName","posXCorrection","posYCorrection","isRotated","rotation","correction","attr","attrX","attrY","dim","temp","rect","zIndex","styledMode","avgElementAddUpdateFocusBorderHooks","updateParams","_i","focusBorderUpdateHooks","setterKey","origSetter","_defaultSetter","ret","svgElementAddDestroyFocusBorderHook","focusBorderDestroyHook","origDestroy","svgElementRemoveFocusBorder","SVGElementClass","svgElementProto","setFocusToElement","FocusBorder","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_","highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default","Announcer_doc","Announcer_addClass","Announcer_visuallyHideElement","Announcer","announceRegion","addAnnounceRegion","announce","message","_this","setElementHTML","clearAnnouncementRegionTimer","clearTimeout","setTimeout","innerHTML","emptyHTML","chartContainer","announcerContainer","createAnnouncerContainer","div","AnnotationsA11y_escapeStringForHTML","AnnotationsA11y_stripHTMLTagsFromString","getChartAnnotationLabels","annotations","visible","concat","labels","getLabelText","annotationItems","desc","getAnnotationLabelDescription","a11yDesc","labelText","pointValueDescriptions","valDesc","valueDescription","getAttribute","seriesName","numPoints","pointsSelector","annotationText","annotation","annotationPoint","additionalAnnotationPoints","join","pointLabels","InfoRegionsComponent_extends","TypeError","String","InfoRegionsComponent_getAxisDescription","InfoRegionsComponent_getAxisRangeDescription","InfoRegionsComponent_getChartTitle","InfoRegionsComponent_unhideChartElementFromAT","InfoRegionsComponent_format","InfoRegionsComponent_doc","InfoRegionsComponent_addClass","InfoRegionsComponent_getElement","InfoRegionsComponent_getHeadingTagNameForElement","InfoRegionsComponent_stripHTMLTagsFromString","InfoRegionsComponent_visuallyHideElement","InfoRegionsComponent_attr","InfoRegionsComponent_pick","replaceNested","stripEmptyHTMLTags","InfoRegionsComponent","screenReaderSections","component","initRegionsDefinitions","onDataTableCreated","wasHidden","dataTableDiv","focusDataTable","viewDataTableButton","exporting","updateAllScreenReaderSections","announcer","accessibilityOptions","before","buildContent","formatter","beforeChartFormatter","defaultBeforeChartFormatter","insertIntoDOM","afterInserted","sonifyButtonId","initSonifyButton","dataTableButtonId","initDataTableButton","after","afterChartFormatter","defaultAfterChartFormatter","nextSibling","updateExitAnchor","linkedDescriptionElement","getLinkedDescriptionElement","setLinkedDescriptionAttrs","regionKey","updateScreenReaderSection","linkedDescOption","chartOptions","linkedDescription","query","queryMatch","querySelectorAll","region","content","sectionDiv","hiddenDiv","setScreenReaderSectionAttribs","beforeChartFormat","axesDesc","getAxesDescription","shouldHaveSonifyBtn","sonify","sonification","annotationsList","InfoRegionsComponent_getAnnotationsInfoHTML","annotationsTitleStr","headingTagName","typeDescription","getTypeDescriptionText","chartSubtitle","getSubtitleText","chartLongdesc","getLongdescText","xAxisDescription","yAxisDescription","playAsSoundButton","getSonifyButtonText","viewTableButton","getCSV","getDataTableButtonText","annotationsTitle","formattedString","afterChartFormat","endOfChartMarker","getEndOfChartMarkerText","getLinkedDescription","captionOptions","caption","captionText","types","firstType","typeExplanation","multi","firstSeries","mapTitle","formatContext","mapView","geoMap","numSeries","buttonId","subtitle","endMarker","outerHTML","markerText","attributes","tree","tabindex","summary","tableDiv","table","getElementsByTagName","sonifyButton","defaultHandler","stopPropagation","announceMsg","removeAttribute","onclick","onPlayAsSoundClick","tableButtonId","tableId","onViewDataTableClick","viewData","shouldDescribeColl","collectionKey","defaultCondition","axes","hasNoMap","hasCartesian","hasCartesianSeries","showXAxes","angular","showYAxes","getAxisDescriptionText","names","ranges","numAxes","MenuComponent_extends","MenuComponent_attr","MenuComponent_getChartTitle","MenuComponent_unhideChartElementFromAT","MenuComponent_getFakeMouseEvent","getExportMenuButtonElement","exportSVGElements","MenuComponent","onMenuShown","onMenuHidden","createProxyGroup","menu","exportContextMenu","setExportButtonExpandedState","addAccessibleContextMenuAttribs","stateStr","exportButtonProxy","innerElement","focusEl","clearGroup","proxyMenuButton","exportingGroup","exportingOpts","exportButton","buttonEl","exportingShouldHaveA11y","addProxyElement","click","contextButtonTitle","addGroup","exportList","exportDivElements","children","parentDiv","role","onKbdPrevious","onKbdNext","onKbdClick","proxy","svgEl","hideExportMenu","keyboardNavigationHandler","a11yOptions","highlightedExportItemIx","highlightExportItem","wrapAround","highlightLastExportItem","curHighlightedItem","exportButtonElement","openMenu","chartShowExportMenu","chartHideExportMenu","onmouseout","hideMenu","chartHighlightExportItem","listItem","curHighlighted","hasSVGFocusSupport","onmouseover","chartHighlightLastExportItem","showExportMenu","Components_MenuComponent","KeyboardNavigation_doc","KeyboardNavigation_win","KeyboardNavigation_addEvent","KeyboardNavigation_defined","KeyboardNavigation_fireEvent","KeyboardNavigation_getElement","KeyboardNavigation_simulatedEventTarget","KeyboardNavigation","components","currentModuleIx","NaN","modules","ep","update","onKeydown","onFocus","eventName","onMouseUp","isClickingChart","order","keyboardOptions","updateContainerTabindex","componentName","navModules","removeExitAnchor","makeElementAnExitAnchor","exitAnchor","createExitAnchor","move","direction","curModule","newModule","exiting","focusComesFromChart","contains","tabbingInBackwards","getFirstValidModuleIx","keyboardReset","target","curMod","ev","curNavModule","shouldHaveTabindex","curTabindex","chartTabindex","addExitAnchorEventsToEl","comingInBackwards","mod","chartDismissPopupContent","tooltip","hide","documentOnKeydown","charts","dismissPopupContent","Accessibility_KeyboardNavigation","highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_","highcharts_Legend_commonjs_highcharts_Legend_commonjs2_highcharts_Legend_root_Highcharts_Legend_default","LegendComponent_extends","animObject","LegendComponent_doc","LegendComponent_addEvent","LegendComponent_fireEvent","isNumber","LegendComponent_pick","syncTimeout","LegendComponent_getChartTitle","LegendComponent_stripHTMLTags","LegendComponent_addClass","LegendComponent_removeClass","shouldDoLegendA11y","items","legend","allItems","legendA11yOptions","unsupportedColorAxis","colorAxis","some","c","dataClasses","setLegendItemHoverState","hoverActive","legendItem","setState","LegendComponent","highlightedLegendItemIx","proxyGroup","recreateProxies","updateGroupProxyElementPositions","updateLegendItemProxyVisibility","highlightLegendItem","updateProxyPositionForItem","globalAnimation","duration","curPage","currentPage","clipHeight","a11yProxyElement","hasPages","pages","proxyEl","itemPage","pageIx","round","visibility","removeProxies","highlightAdjacentLegendPage","newPageIx","curPageIx","refreshPosition","focusedElement","activeElement","shouldRestoreFocus","addLegendProxyGroup","proxyLegendItems","updateLegendTitle","removeGroup","legendTitle","legendLabel","updateGroupAttrs","groupRole","proxyLegendItem","itemLabel","itemName","proxyPositioningElement","visual","onKbdArrowKey","shouldHaveLegendNavigation","numItems","legendOptions","display","chartHighlightLegendItem","oldIx","itemToHighlight","scroll","legendItemProp","proxyBtn","legendOnAfterColorizeItem","LegendClass","Components_LegendComponent","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default","isTouchDevice","ChartNavigatorComposition_addEvent","merge","ChartNavigatorComposition_pick","composedMembers","onChartAfterAddSeries","navigator","setBaseSeries","onChartAfterSetChartSize","scrollbarHeight","scrollButtonSize","inverted","opposite","chartWidth","spacing","top","plotTop","plotLeft","navigatorOptions","chartHeight","rangeSelector","extraBottomMargin","getHeight","verticalAlign","layout","floating","legendHeight","titleOffset","setAxisSize","onChartAfterUpdate","scroller","redraw","animation","onChartBeforeRender","onChartBeforeShowResetZoom","zooming","pinchType","onChartCallback","getExtremes","render","scrollbarOptions","NavigatorClass","pushUnique","callbacks","NavigatorAxisComposition_isTouchDevice","NavigatorAxisComposition_addEvent","correctFloat","NavigatorAxisComposition_defined","NavigatorAxisComposition_isNumber","NavigatorAxisComposition_pick","onAxisInit","navigatorAxis","NavigatorAxisAdditions","onAxisSetExtremes","zoomed","zoomType","isXAxis","previousZoom","AxisClass","keepProps","includes","toFixedRange","pxMin","pxMax","fixedMin","fixedMax","halfPointRange","pointRange","newMin","translate","horiz","newMax","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","parse","seriesTypes","NavigatorDefaults","maskInside","handles","symbols","backgroundColor","borderColor","maskFill","setOpacity","outlineColor","outlineWidth","areaspline","fillOpacity","compare","dataGrouping","approximation","groupPixelWidth","firstAnchor","anchor","lastAnchor","units","dataLabels","lineColor","marker","threshold","tickLength","gridLineColor","gridLineWidth","tickPixelInterval","align","fontSize","textOutline","crosshair","startOnTick","endOnTick","minPadding","maxPadding","tickWidth","__spreadArray","pack","ar","relativeLength","Navigator_NavigatorSymbols","_x","_y","w","halfWidth","markerPosition","highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_","highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default","StockUtilities_defined","setOptions","getRendererType","NavigatorComposition_setFixedRange","Utilities_StockUtilities","setFixedRange","fixedRange","NavigatorComposition_addEvent","extend","onSeriesAfterUpdate","isInternal","SeriesClass","NavigatorAxisComposition","ScrollbarAxis_composed","ScrollbarAxis_addEvent","ScrollbarAxis_defined","ScrollbarAxis_pick","ScrollbarAxis_pushUnique","Scrollbar","axisMin","axisMax","scrollMin","Infinity","scrollMax","onAxisAfterGetOffset","scrollbarsOffsets","axisOffset","size","onAxisAfterInit","vertical","unitedMin","unitedMax","reversed","shouldUpdateExtremes","DOMType","animate","setExtremes","setRange","onAxisAfterRender","offsetsIndex","axisTitleMargin","axisMargin","xPosition","interval","ScrollbarClass","Axis_ScrollbarAxis","Scrollbar_ScrollbarDefaults","barBorderRadius","buttonBorderRadius","buttonsEnabled","liveRedraw","minWidth","step","barBackgroundColor","barBorderWidth","barBorderColor","buttonArrowColor","buttonBackgroundColor","buttonBorderColor","buttonBorderWidth","rifleColor","trackBackgroundColor","trackBorderColor","trackBorderRadius","trackBorderWidth","defaultOptions","Scrollbar_addEvent","Scrollbar_correctFloat","crisp","Scrollbar_defined","destroyObjectProperties","Scrollbar_fireEvent","Scrollbar_merge","Scrollbar_pick","_events","chartX","chartY","scrollbarButtons","scrollbarLeft","scrollbarStrokeWidth","scrollbarTop","swapXY","path","seg","addEvents","buttonsOrder","bar","scrollbarGroup","track","mouseDownHandler","bind","mouseMoveHandler","mouseUpHandler","buttonToMinClick","buttonToMaxClick","trackClick","ownerDocument","args","cursorToScrollbarPosition","normalizedEvent","minWidthDifference","calculatedWidth","xOffset","barWidth","yOffset","removeEvents","drawScrollbarButton","g","fill","arrow","userOptions","pointer","normalize","mousePosition","initPositions","grabbedCenter","change","chartPosition","hasDragged","method","rendered","show","scrollbarRifles","fromPX","newSize","fullWidth","toPX","ceil","newPos","floor","newRiflesPos","showFull","eventType","svg","boosted","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default","__assign","assign","t","Navigator_defaultOptions","Navigator_isTouchDevice","Navigator_addEvent","clamp","Navigator_correctFloat","Navigator_defined","Navigator_destroyObjectProperties","erase","Navigator_extend","Navigator_find","Navigator_fireEvent","isArray","Navigator_isNumber","Navigator_merge","Navigator_pick","Navigator_removeEvent","splat","numExt","extreme","numbers","Navigator","isDirty","Navigator_ChartNavigatorComposition","Navigator_NavigatorComposition","drawHandle","verb","drawOutline","zoomedMin","zoomedMax","verticalMin","halfOutline","outlineCorrection","navigatorSize","navigatorTop","lineTop","lineBtm","drawMasks","navigatorHeight","shades","shade","renderElements","mouseCursor","navigatorGroup","hasMask","handlesOptions_1","height_1","width_1","symbolName","symbolUrl","isImg","symbolFn","symbol","addMouseEvents","rotationOriginX","rotationOriginY","_c","_d","invertedUpdate","setOpposite","navigatorEnabled","adaptToUpdatedData","baseSeries","updatedDataHandler","eventsToUnbind","offsets","getXAxisOffsets","navigatorWidth","scrollbarXAxis","fake","minRange","maxRange","plotWidth","plotHeight","toValue","currentRange","grabbedLeft","grabbedRight","fixedWidth","onMouseMove","getPartsEvents","modifyNavigatorAxisExtremes","events","navigatorItem","shadesMousedown","ext","navigatorPosition","dragOffset","reversedExtremes","getUnionExtremes","eventArguments","handlesMousedown","baseXAxis","reverse","otherHandlePos","fixedExtreme","pageX","unionExtremes","triggerOp","unbind","removeBaseSeriesEvents","modifyBaseAxisExtremes","scrollbarEnabled","xAxisIndex","yAxisIndex","baseXaxis","isDirtyBox","breaks","ordinal","overscroll","keepOrdinalPadding","zoomEnabled","alignTicks","data","updateNavigatorSeries","unbindRedraw","scrollTrackWidth","valueRange","addBaseSeriesEvents","addChartEvents","Boolean","returnFalseOnNoBaseSeries","baseAxis","navAxis","navAxisOptions","baseAxisOptions","baseSeriesOptions","showInNavigator","baseOptions","mergedNavSeriesOptions","baseNavigatorOptions","navSeriesMixin","enableMouseTracking","linkedTo","padXAxis","showInLegend","stacking","states","inactive","navigatorSeries","navSeries","base","chartNavigatorSeriesOptions","linkedNavSeries","userNavOptions","plotOptions","navigatorSeriesData","hasNavigatorData","initSeries","setSortedData","userSeriesOptions","colors","setVisible","getBaseSeriesMin","currentSeriesMin","getColumn","baseExtremes","baseMin","baseMax","baseDataMin","baseDataMax","stickToMin","stickToMax","convertOverscroll","hasSetExtremes","eventArgs","xData","MAX_VALUE","userMin","userMax","shouldStickToMax","shouldStickToMin","pointStart","setData","xDataMin","marginName","NavigatorComponent_extends","NavigatorComponent_animObject","NavigatorComponent_format","NavigatorComponent_clamp","NavigatorComponent_pick","NavigatorComponent_syncTimeout","NavigatorComponent_getFakeMouseEvent","NavigatorComponent_getAxisRangeDescription","NavigatorComponent_fireEventOnWrappedOrUnwrappedElement","NavigatorComponent","updateHandleValues","verbosity","groupFormatStr","groupLabel","handleFormatStr_1","handleLabel","handle","getHandleByIx","handleIx","pointerEvents","oninput","updateNavigator","getNavigatorHandleNavigation","maxHandleProxy","minHandleProxy","delta","parseFloat","updateNavigatorThrottleTimer","length_1","beforeAnnounce","performUpdate","chartPos_1","getChartPosition","minNewX","maxNewX","announceFormatStr","changeAnnouncement","axisRangeDescription","SeriesDescriber_getAxisDescription","SeriesDescriber_getSeriesFirstPointElement","SeriesDescriber_getSeriesA11yElement","SeriesDescriber_unhideChartElementFromAT","SeriesDescriber_format","numberFormat","SeriesDescriber_reverseChildNodes","SeriesDescriber_stripHTMLTags","SeriesDescriber_find","SeriesDescriber_isNumber","isString","SeriesDescriber_pick","SeriesDescriber_defined","hasMorePointsThanDescriptionThreshold","chartA11yOptions","pointDescriptionEnabledThreshold","pointNumberToString","a11yPointOptions","seriesA11yPointOptions","tooltipOptions","valueDecimals","decimalPoint","thousandsSep","getSeriesAxisDescriptionText","axisCollection","defaultPointDescriptionFormatter","pre","suf","keyToValStr","a11yPointOpts","seriesA11yPointOpts","valuePrefix","valueSuffix","fallbackKey","fallbackDesc","timeDesc","pointCategory","canUseId","fallback","seriesA11yOptions","pointValueDescriptionFormat","showXDescription","xDesc","shouldExposeSeriesName","valText","seriesValueDescFormat","valueDescriptionFormat","getPointA11yTimeDescription","dateXAxis","tooltipDateFormat","getXDateFormat","dateTimeLabelFormats","dateFormatter","category","xDescription","isNull","pointArrayMap","prefix","suffix","num","propDesc","separator","seriesNameText","annotationsDesc","SeriesDescriber_getPointAnnotationTexts","defaultSeriesDescriptionFormatter","descOpt","chartTypes","shouldDescribeAxis","seriesNumber","xAxisInfo","yAxisInfo","summaryContext","combinationSuffix","axisDescription","descriptionFormat","seriesDescription","authorDescription","SeriesComponent_SeriesDescriber","describeSeries","seriesNavOptions","setScreenReaderProps","setKeyboardProps","shouldDescribeNullPoints","chartHas3d","hasMultipleSeries","describeSingleSeriesOption","exposeAsGroupOnlyOption","is3d","exposeAsGroupOnly","seriesNavigation","pointNavigationEnabledThreshold","describeNull","isSunburst","shouldDescribeNull","seriesPointA11yOptions","pointEl","shouldAddMockPoint","is","addMockPointElement","sourcePointIndex","mock","firstGraphic","mockPos","plotX","plotY","mockElement","hasMockGraphic","pointA11yDisabled","descriptionFormatter","pointElement","options3d","describeSingleSeries","seriesElement","NewDataAnnouncer_composed","NewDataAnnouncer_addEvent","NewDataAnnouncer_defined","NewDataAnnouncer_pushUnique","NewDataAnnouncer_getChartTitle","NewDataAnnouncer_defaultPointDescriptionFormatter","NewDataAnnouncer_defaultSeriesDescriptionFormatter","chartHasAnnounceEnabled","announceNewData","NewDataAnnouncer","dirty","allSeries","lastAnnouncementTime","announceType","announceOptions","interruptUser","addEventListeners","onSeriesAdded","announceDirtyData","hasDirty","newSeries","candidates","newPoint","candidate","queueAnnouncement","dirtySeries","annOptions","uniqueSeries","now","Date","dTime","minAnnounceInterval","arrayA","queuedAnnouncement","arrayB","buildAnnouncementMessage","queuedAnnouncementTimer","announcementFormatter","formatterRes","multiple","seriesDesc","pointDesc","seriesOnAddPoint","newDataAnnouncer","seriesOnUpdatedData","SeriesComponent_NewDataAnnouncer","ProxyElement_doc","ProxyElement_attr","ProxyElement_css","ProxyElement_merge","ProxyElement_fireEventOnWrappedOrUnwrappedElement","ProxyElement_cloneMouseEvent","ProxyElement_cloneTouchEvent","ProxyElement_getFakeMouseEvent","ProxyElement_removeElement","ProxyElement","proxyElementType","wrapperElementType","innerEl","wrapperEl","hideElementVisually","listStyle","updateTarget","getTargetPosition","fakeEventObject","updateCSSClassName","attrs","targetAriaLabel","getTargetAttr","addProxyEventsToElement","bBox","stringHasNoTooltip","groupDiv","noTooltipOnGroup","noTooltipOnTarget","evtType","isTouchEvent","clonedEvent","passive","padding","clickTarget","clickTargetElement","posElement","chartDiv","getBoundingClientRect","rectEl","chartPos","bottom","ProxyProvider_doc","ProxyProvider_attr","ProxyProvider_css","ProxyProvider_unhideChartElementFromAT","ProxyProvider_removeChildNodes","ProxyProvider","groups","groupOrder","beforeChartProxyPosContainer","createProxyPosContainer","afterChartProxyPosContainer","groupKey","Error","proxyContainerElement","proxyElements","groupElementType","groupElement","existingGroup","proxyContainer","updateGroupOrder","groupKeys","isDOMOrderGroupOrder","seriesIx","beforeKeys","afterKeys","posContainer","updatePosContainerPositions","updateProxyElementPositions","classNamePostfix","getCurrentGroupOrderInDOM","getGroupKeyFromElement","allGroups","getChildrenGroupOrder","childrenOrder","domOrder","groupOrderWithGroups","rendererSVGEl","RangeSelectorComponent_extends","RangeSelectorComponent_unhideChartElementFromAT","RangeSelectorComponent_getAxisRangeDescription","RangeSelectorComponent_addEvent","RangeSelectorComponent_attr","RangeSelectorComponent","updateSelectorVisibility","setDropdownAttrs","setRangeButtonAttrs","maxInput","minInput","input","setRangeInputAttrs","dropdown","hideFromAT","hasVisibleDropdown","btn","rangeTitle","rangeSelectorZoom","onButtonNavKbdArrowKey","highlightRangeSelectorButton","highlightedRangeSelectorItemIx","onButtonNavKbdClick","oldRangeSelectorItemState","onAfterBtnClick","announcement","onInputKbdMove","rangeSel","newIx","highlightedInputRangeIx","inputEl","onInputNavInit","buttonIxToHighlight","removeInputKeydownHandler","keydownHandler","minRemover_1","maxRemover_1","onInputNavTerminate","hideInput","initDropdownNav","buttonGroup","removeDropdownKeydownHandler","isTab","getRangeSelectorButtonNavigation","lastButtonIx","getRangeSelectorInputNavigation","inputGroup","inputEnabled","chartHighlightRangeSelectorButton","curHighlightedIx","curSelectedIx","selected","state","rangeSelectorAfterBtnClick","RangeSelectorClass","Components_RangeSelectorComponent","ForcedMarkers_composed","ForcedMarkers_addEvent","ForcedMarkers_merge","ForcedMarkers_pushUnique","forceZeroOpacityMarkerOptions","normal","getPointMarkerOpacity","pointOptions","hasIndividualPointMarkerOptions","_hasPointMarkers","seriesOnAfterRender","markerGroup","a11yMarkersForced","hasForcedA11yMarker","seriesOnAfterSetOptions","resetA11yMarkerOptions","seriesOnRender","chartA11yEnabled","seriesA11yEnabled","handleForcePointMarkers","hadForcedMarker","isStillForcedMarker","unforceSeriesMarkerOptions","resetMarkerOptions","originalOpacity","seriesOnRenderCanvas","ForcedMarkers","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default","SeriesKeyboardNavigation_assign","SeriesKeyboardNavigation_seriesTypes","SeriesKeyboardNavigation_doc","SeriesKeyboardNavigation_defined","SeriesKeyboardNavigation_fireEvent","SeriesKeyboardNavigation_getPointFromXY","SeriesKeyboardNavigation_getSeriesFromName","SeriesKeyboardNavigation_scrollAxisToPoint","getPointIndex","isSkipSeries","seriesKbdNavOptions","isSkipPoint","skipNullPoints","isInside","getFirstValidPointInChart","getFirstValidPointInSeries","highlightLastValidPointInChart","highlightedPoint","highlightNextValidPoint","highlightFirstValidPointInChart","highlight","SeriesKeyboardNavigation","onSeriesDestroy","lastDrilledDownPoint","onDrillupAll","focusedElClassName","isProxyFocused","last","getKeyboardNavigationHandler","onKbdSideways","onKbdVertical","firePointEvent","highlightAdjacentSeries","onHandlerInit","onHandlerTerminate","handler","isNext","attemptHighlightAdjacentPoint","kbdNavOptions","rememberPointFocus","navOptions","mode","highlightMethod","keyboardMoveVertical","hoverSeries","onMouseOut","directionIsNext","highlightAdjacentPoint","chartHighlightAdjacentPoint","curPoint","curPointIndex","curPoints","lastSeries","lastPoint","chartHighlightAdjacentPointVertical","bestPoint","minDistance","yDistance","distance","chartHighlightAdjacentSeries","adjacentNewPoint","getClosestPoint","xWeight","yWeight","dPoint","minIx","hasUndefinedPosition","pointHighlight","highlightVisually","tooltipElement","onMouseOver","tooltipTop","scrollTop","window","scrollY","scrollTo","behavior","seriesHighlightNextValidPoint","start","j","PointClass","pointProto","seriesProto","highlightAdjacentPointVertical","SeriesComponent_SeriesKeyboardNavigation","SeriesComponent_extends","SeriesComponent_hideSeriesFromAT","SeriesComponent_describeSeries","SeriesComponent","hideTooltipFromATWhenShown","hideSeriesLabelsFromATWhenShown","labelBySeries","getPointsCollection","ZoomComponent_extends","ZoomComponent_unhideChartElementFromAT","ZoomComponent_getFakeMouseEvent","ZoomComponent_attr","ZoomComponent_pick","ZoomComponent","focusedMapNavButtonIx","updateProxyOverlays","mapNavigation","navButtons","setMapNavButtonAttrs","labelFormatKey","resetZoomButton","createZoomProxyButton","drillUpButton","breadcrumbs","list","lastBreadcrumb","buttonText","getButtonText","buttonProp","getMapZoomNavigation","onMapKbdArrow","_keyCode","onMapKbdTab","onMapKbdClick","onMapNavInit","isY","stepDirection","diff","random","startPos","offsetLeft","offsetTop","endPos","isBackwards","isMoveOutOfRange","zoomBy","zoomIn","zoomOut","initialButton","simpleButtonNavigation","proxyProp","onClick","_handler","drillUp","HighContrastMode_doc","isMS","HighContrastMode_win","HighContrastMode","isHighContrastModeActive","isEdge","userAgent","matchMedia","matches","getComputedStyle","testDiv","backgroundImage","bi","currentStyle","setHighContrastTheme","highContrastModeActive","theme","highContrastTheme","hasCustomColors","plotOpts","fillColor","colorIndex","seriesOptions","error","DeprecatedOptions_pick","traverseSetOption","optionAsArray","opt","deprecateFromOptionsMap","rootOldAsArray","rootNewAsArray","mapToNewOptions","getChildProp","propAsArray","rootOld","rootNew","oldOptionKey","DeprecatedOptions","copyDeprecatedAxisOptions","opts","copyDeprecatedSeriesOptions","oldToNewSeriesOptions","exposeElementToA11y","pointDescriptionFormatter","skipKeyboardNavigation","oldOption","optionVal","pointDateFormat","pointDateFormatter","pointDescriptionThreshold","pointNavigationThreshold","pointValueDecimals","pointValuePrefix","pointValueSuffix","screenReaderSectionFormatter","seriesDescriptionFormatter","onTableAnchorClick","mapZoomIn","mapZoomOut","screenReaderRegionLabel","rangeSelectorButton","rangeSelectorMaxInput","rangeSelectorMinInput","svgContainerEnd","viewAsDataTable","tableSummary","Accessibility_defaultOptions","Accessibility_doc","Accessibility_addEvent","Accessibility_extend","Accessibility_fireEvent","Accessibility_merge","Accessibility_removeElement","Accessibility","addEventListener","zombie","initComponents","infoRegions","chartMenu","zoom","customComponents","getComponentOrder","getChartTypes","kbdNavOrder","highContrastMode","chartOnDestroy","chartOnRender","a11yDirty","updateA11yEnabled","chartOnUpdate","newOptions","chartUpdateA11yEnabled","boxWrapper","document","getElementsByClassName","pointOnUpdate","SeriesComponent_SeriesComponent","minColor","maxColor","stops","minorGridLineColor","tickColor","edgeColor","connectorColor","pie","boxplot","candlestick","errorbar","itemStyle","itemHoverStyle","itemHiddenStyle","drilldown","activeAxisLabelStyle","activeDataLabelStyle","navigation","buttonOptions","symbolStroke","buttonTheme","hover","select","inputBoxBorderColor","inputStyle","labelStyle","defaultChartTitle","chartContainerLabel","svgContainerTitle","graphicContainerLabel","beforeRegionLabel","afterRegionLabel","heading","descriptionSinglePoint","descriptionMultiplePoints","descriptionNoPoints","playAsSoundButtonText","playAsSoundClickAnnouncement","legendLabelNoTitle","dropdownLabel","minInputLabel","maxInputLabel","clickButtonAnnouncement","viewAsDataTableButtonText","newDataAnnounce","newSeriesAnnounceSingle","newPointAnnounceSingle","newSeriesAnnounceMultiple","newPointAnnounceMultiple","seriesTypeDescriptions","arearange","areasplinerange","bubble","columnrange","funnel","pyramid","waterfall","emptyChart","mapTypeDescription","unknownMap","combinationChart","defaultSingle","defaultMultiple","splineSingle","splineMultiple","lineSingle","lineMultiple","columnSingle","columnMultiple","barSingle","barMultiple","pieSingle","pieMultiple","scatterSingle","scatterMultiple","boxplotSingle","boxplotMultiple","bubbleSingle","bubbleMultiple","xAxisDescriptionSingular","xAxisDescriptionPlural","yAxisDescriptionSingular","yAxisDescriptionPlural","timeRangeDays","timeRangeHours","timeRangeMinutes","timeRangeSeconds","rangeFromTo","rangeCategories","chartMenuLabel","menuButtonLabel","defaultCombination","line","lineCombination","spline","splineCombination","column","columnCombination","barCombination","pieCombination","scatter","scatterCombination","boxplotCombination","bubbleCombination","mapCombination","mapline","maplineCombination","mapbubble","mapbubbleCombination","nullPointValue","pointAnnotationsDescription","Accessibility_Accessibility","G","A11yChartUtilities","A11yHTMLUtilities","SeriesAccessibilityDescriber","Chart","Legend","Point","Series","SVGElement","RangeSelector"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox