{"version":3,"file":"static/js/main.fc54b3f1.js","mappings":"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","sources":["../node_modules/@rsuite/icon-font/lib/legacy/AngleDown.js","../node_modules/@rsuite/icons/legacy/AngleDown.js","../node_modules/@rsuite/icons/lib/Icon.js","../node_modules/@rsuite/icons/lib/createSvgIcon.js","../node_modules/@rsuite/icons/lib/icons/legacy/AngleDown.js","../node_modules/@rsuite/icons/lib/utils/inBrowserEnv.js","../node_modules/@rsuite/icons/lib/utils/index.js","../node_modules/@rsuite/icons/lib/utils/prefix.js","../node_modules/@rsuite/icons/lib/utils/useClassNames.js","../node_modules/@rsuite/icons/lib/utils/useInsertStyles.js","../node_modules/insert-css/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_LazyWrapper.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_LodashWrapper.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseLodash.js","../node_modules/lodash/_baseSetData.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseUnset.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_composeArgs.js","../node_modules/lodash/_composeArgsRight.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_countHolders.js","../node_modules/lodash/_createBind.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCtor.js","../node_modules/lodash/_createCurry.js","../node_modules/lodash/_createHybrid.js","../node_modules/lodash/_createPartial.js","../node_modules/lodash/_createRecurry.js","../node_modules/lodash/_createWrap.js","../node_modules/lodash/_customOmitClone.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getData.js","../node_modules/lodash/_getFuncName.js","../node_modules/lodash/_getHolder.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_getWrapDetails.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_insertWrapDetails.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isLaziable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_mergeData.js","../node_modules/lodash/_metaMap.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_parent.js","../node_modules/lodash/_realNames.js","../node_modules/lodash/_reorder.js","../node_modules/lodash/_replaceHolders.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setData.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_setWrapToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_updateWrapDetails.js","../node_modules/lodash/_wrapperClone.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/constant.js","../node_modules/lodash/curry.js","../node_modules/lodash/eq.js","../node_modules/lodash/flatten.js","../node_modules/lodash/get.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isMap.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isSet.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/last.js","../node_modules/lodash/memoize.js","../node_modules/lodash/noop.js","../node_modules/lodash/omit.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toString.js","../node_modules/lodash/uniqueId.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/wrapperLodash.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../node_modules/@kurkle/color/dist/color.esm.js","../node_modules/chart.js/src/helpers/helpers.core.ts","../node_modules/chart.js/src/helpers/helpers.math.ts","../node_modules/chart.js/src/helpers/helpers.collection.ts","../node_modules/chart.js/src/helpers/helpers.extras.ts","../node_modules/chart.js/src/helpers/helpers.easing.ts","../node_modules/chart.js/src/helpers/helpers.color.ts","../node_modules/chart.js/src/core/core.animations.defaults.js","../node_modules/chart.js/src/helpers/helpers.intl.ts","../node_modules/chart.js/src/core/core.ticks.js","../node_modules/chart.js/src/core/core.defaults.js","../node_modules/chart.js/src/core/core.layouts.defaults.js","../node_modules/chart.js/src/core/core.scale.defaults.js","../node_modules/chart.js/src/helpers/helpers.canvas.ts","../node_modules/chart.js/src/helpers/helpers.options.ts","../node_modules/chart.js/src/helpers/helpers.config.ts","../node_modules/chart.js/src/helpers/helpers.curve.ts","../node_modules/chart.js/src/helpers/helpers.dom.ts","../node_modules/chart.js/src/helpers/helpers.rtl.ts","../node_modules/chart.js/src/core/core.animator.js","../node_modules/chart.js/src/core/core.animation.js","../node_modules/chart.js/src/core/core.animations.js","../node_modules/chart.js/src/core/core.datasetController.js","../node_modules/chart.js/src/controllers/controller.bar.js","../node_modules/chart.js/src/core/core.interaction.js","../node_modules/chart.js/src/core/core.layouts.js","../node_modules/chart.js/src/platform/platform.base.js","../node_modules/chart.js/src/platform/platform.basic.js","../node_modules/chart.js/src/platform/platform.dom.js","../node_modules/chart.js/src/core/core.element.ts","../node_modules/chart.js/src/core/core.scale.autoskip.js","../node_modules/chart.js/src/core/core.scale.js","../node_modules/chart.js/src/core/core.typedRegistry.js","../node_modules/chart.js/src/core/core.registry.js","../node_modules/chart.js/src/core/core.plugins.js","../node_modules/chart.js/src/core/core.config.js","../node_modules/chart.js/src/core/core.controller.js","../node_modules/chart.js/src/platform/index.js","../node_modules/chart.js/src/elements/element.bar.js","../node_modules/chart.js/src/plugins/plugin.legend.js","../node_modules/chart.js/src/plugins/plugin.title.js","../node_modules/chart.js/src/plugins/plugin.subtitle.js","../node_modules/chart.js/src/plugins/plugin.tooltip.js","../node_modules/chart.js/src/scales/scale.category.js","../node_modules/chart.js/src/scales/scale.linearbase.js","../node_modules/chart.js/src/scales/scale.linear.js","../node_modules/chart.js/src/scales/scale.logarithmic.js","../node_modules/chart.js/src/scales/scale.radialLinear.js","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/react-tooltip/dist/react-tooltip.min.mjs","utils/utils.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/rsuite/esm/internals/utils/prefix.js","../node_modules/rsuite/esm/CustomProvider/CustomProvider.js","../node_modules/rsuite/esm/internals/hooks/useClassNames.js","../node_modules/rsuite/esm/internals/hooks/useControlled.js","../node_modules/rsuite/esm/internals/hooks/useEventCallback.js","../node_modules/rsuite/esm/PanelGroup/PanelGroup.js","../node_modules/rsuite/esm/PanelGroup/index.js","../node_modules/rsuite/esm/internals/hooks/useUniqueId.js","../node_modules/rsuite/esm/Heading/Heading.js","../node_modules/rsuite/esm/Heading/index.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js","../node_modules/@rsuite/icons/es/utils/prefix.js","../node_modules/@rsuite/icons/es/utils/useInsertStyles.js","../node_modules/@rsuite/icons/es/Icon.js","../node_modules/@rsuite/icons/es/utils/useClassNames.js","../node_modules/rsuite/esm/Panel/AccordionButton.js","../node_modules/rsuite/esm/Panel/PanelHeader.js","../node_modules/dom-lib/esm/utils/camelizeStyleName.js","../node_modules/dom-lib/esm/utils/getComputedStyle.js","../node_modules/dom-lib/esm/utils/hyphenateStyleName.js","../node_modules/dom-lib/esm/utils/stringFormatter.js","../node_modules/dom-lib/esm/getStyle.js","../node_modules/dom-lib/esm/removeStyle.js","../node_modules/dom-lib/esm/addStyle.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/dom-lib/esm/canUseDOM.js","../node_modules/dom-lib/esm/getTransitionProperties.js","../node_modules/rsuite/esm/internals/utils/getDOMNode.js","../node_modules/rsuite/esm/Animation/utils.js","../node_modules/rsuite/esm/Animation/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-lib/esm/on.js","../node_modules/dom-lib/esm/getTransitionEnd.js","../node_modules/rsuite/esm/internals/utils/createChainedFunction.js","../node_modules/rsuite/esm/Animation/Collapse.js","../node_modules/rsuite/esm/internals/utils/mergeRefs.js","../node_modules/rsuite/esm/internals/hooks/useMount.js","../node_modules/rsuite/esm/internals/ScrollView/hooks/useScrollState.js","../node_modules/rsuite/esm/internals/ScrollView/ScrollView.js","../node_modules/rsuite/esm/internals/ScrollView/index.js","../node_modules/rsuite/esm/Panel/PanelBody.js","../node_modules/rsuite/esm/Panel/hooks/useExpanded.js","../node_modules/rsuite/esm/Panel/Panel.js","../node_modules/rsuite/esm/Accordion/AccordionPanel.js","../node_modules/rsuite/esm/Accordion/Accordion.js","../node_modules/rsuite/esm/Accordion/index.js","calculator/ArrowComponent.jsx","calculator/Calculator.jsx","App.js","index.js"],"sourcesContent":["\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction AngleDown(props, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 21 32\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.196 13.143a.612.612 0 01-.179.411l-8.321 8.321c-.107.107-.268.179-.411.179s-.304-.071-.411-.179l-8.321-8.321c-.107-.107-.179-.268-.179-.411s.071-.304.179-.411l.893-.893a.582.582 0 01.411-.179c.143 0 .304.071.411.179l7.018 7.018 7.018-7.018c.107-.107.268-.179.411-.179s.304.071.411.179l.893.893a.617.617 0 01.179.411z\"\n }));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(AngleDown);\nvar _default = ForwardRef;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _AngleDown[\"default\"];\n }\n});\n\nvar _AngleDown = _interopRequireDefault(require(\"../lib/icons/legacy/AngleDown\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = require(\"./utils\");\n\nvar defaultProps = {\n as: 'svg',\n fill: 'currentColor',\n width: '1em',\n height: '1em'\n};\n\nfunction filterProps(props) {\n var nextProps = {};\n Object.entries(props).forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n\n if (typeof value !== 'undefined') {\n nextProps[key] = value;\n }\n });\n return nextProps;\n}\n\nvar Icon = /*#__PURE__*/_react[\"default\"].forwardRef(function (props, ref) {\n var _classNames;\n\n var Component = props.as,\n spin = props.spin,\n pulse = props.pulse,\n flip = props.flip,\n fill = props.fill,\n className = props.className,\n rotate = props.rotate,\n children = props.children,\n viewBox = props.viewBox,\n width = props.width,\n height = props.height,\n style = props.style,\n rest = (0, _objectWithoutPropertiesLoose2[\"default\"])(props, [\"as\", \"spin\", \"pulse\", \"flip\", \"fill\", \"className\", \"rotate\", \"children\", \"viewBox\", \"width\", \"height\", \"style\"]);\n\n var _useClassNames = (0, _utils.useClassNames)(),\n componentClassName = _useClassNames[0],\n addPrefix = _useClassNames[1];\n\n var classes = (0, _classnames[\"default\"])(className, componentClassName, (_classNames = {}, _classNames[addPrefix('spin')] = spin, _classNames[addPrefix('pulse')] = pulse, _classNames[addPrefix(\"flip-\" + flip)] = !!flip, _classNames));\n var rotateStyles = {\n msTransform: \"rotate(\" + rotate + \"deg)\",\n transform: \"rotate(\" + rotate + \"deg)\"\n };\n (0, _utils.useInsertStyles)();\n var svgProps = filterProps({\n width: width,\n height: height,\n fill: fill,\n viewBox: viewBox,\n className: classes,\n style: rotate ? (0, _extends2[\"default\"])({}, rotateStyles, style) : style\n });\n return /*#__PURE__*/_react[\"default\"].createElement(Component, (0, _extends2[\"default\"])({\n \"aria-hidden\": true,\n focusable: false,\n ref: ref\n }, svgProps, rest), children);\n});\n\nIcon.displayName = 'Icon';\nIcon.defaultProps = defaultProps;\nIcon.propTypes = {\n spin: _propTypes[\"default\"].bool,\n pulse: _propTypes[\"default\"].bool,\n rotate: _propTypes[\"default\"].number,\n viewBox: _propTypes[\"default\"].string,\n as: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].elementType, _propTypes[\"default\"].string]),\n flip: _propTypes[\"default\"].oneOf(['horizontal', 'vertical']),\n fill: _propTypes[\"default\"].string\n};\nvar _default = Icon;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Icon = _interopRequireDefault(require(\"./Icon\"));\n\nfunction createSvgIcon(_ref) {\n var as = _ref.as,\n ariaLabel = _ref.ariaLabel,\n displayName = _ref.displayName,\n category = _ref.category;\n\n var IconComponent = /*#__PURE__*/_react[\"default\"].forwardRef(function (props, ref) {\n return /*#__PURE__*/_react[\"default\"].createElement(_Icon[\"default\"], (0, _extends2[\"default\"])({\n \"aria-label\": ariaLabel,\n \"data-category\": category,\n ref: ref,\n as: as\n }, props));\n });\n\n IconComponent.displayName = displayName;\n return IconComponent;\n}\n\nvar _default = createSvgIcon;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"../../createSvgIcon\"));\n\nvar _AngleDown = _interopRequireDefault(require(\"@rsuite/icon-font/lib/legacy/AngleDown\"));\n\n// Generated by script, don't edit it please.\nvar AngleDown = (0, _createSvgIcon[\"default\"])({\n as: _AngleDown[\"default\"],\n ariaLabel: 'angle down',\n category: 'legacy',\n displayName: 'AngleDown'\n});\nvar _default = AngleDown;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = _default;\n\nfunction _default() {\n return typeof document !== 'undefined' && typeof window !== 'undefined' && typeof document.createElement === 'function';\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nvar _exportNames = {\n useClassNames: true,\n inBrowserEnv: true,\n useInsertStyles: true\n};\nexports.useInsertStyles = exports.inBrowserEnv = exports.useClassNames = void 0;\n\nvar _prefix = require(\"./prefix\");\n\nObject.keys(_prefix).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _prefix[key]) return;\n exports[key] = _prefix[key];\n});\n\nvar _useClassNames = _interopRequireDefault(require(\"./useClassNames\"));\n\nexports.useClassNames = _useClassNames[\"default\"];\n\nvar _inBrowserEnv = _interopRequireDefault(require(\"./inBrowserEnv\"));\n\nexports.inBrowserEnv = _inBrowserEnv[\"default\"];\n\nvar _useInsertStyles = _interopRequireDefault(require(\"./useInsertStyles\"));\n\nexports.useInsertStyles = _useInsertStyles[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.prefix = exports.defaultClassPrefix = exports.getClassNamePrefix = exports.globalKey = void 0;\n\nvar _curry = _interopRequireDefault(require(\"lodash/curry\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar globalKey = 'rs-';\nexports.globalKey = globalKey;\n\nvar getClassNamePrefix = function getClassNamePrefix() {\n return globalKey;\n};\n\nexports.getClassNamePrefix = getClassNamePrefix;\n\nvar defaultClassPrefix = function defaultClassPrefix(name) {\n return name ? \"\" + getClassNamePrefix() + name : undefined;\n};\n\nexports.defaultClassPrefix = defaultClassPrefix;\nvar prefix = (0, _curry[\"default\"])(function (pre, className) {\n if (!pre || !className) {\n return '';\n }\n\n if (Array.isArray(className)) {\n return (0, _classnames[\"default\"])(className.filter(function (name) {\n return !!name;\n }).map(function (name) {\n return pre + \"-\" + name;\n }));\n }\n\n return pre + \"-\" + className;\n});\nexports.prefix = prefix;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports[\"default\"] = useClassNames;\n\nvar _prefix = require(\"./prefix\");\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _react = require(\"react\");\n\nfunction useClassNames(componentClassName) {\n var className = (0, _prefix.defaultClassPrefix)('icon');\n var addPrefix = (0, _react.useCallback)(function (blockClassName) {\n return (0, _prefix.prefix)(className, blockClassName);\n }, []);\n return [(0, _classnames[\"default\"])(className, (0, _prefix.defaultClassPrefix)(componentClassName)), addPrefix];\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _insertCss = require(\"insert-css\");\n\nvar _prefix = require(\"./prefix\");\n\nvar _react = require(\"react\");\n\nvar prefix = (0, _prefix.getClassNamePrefix)(); // Generated with ../less/index.less\n\nvar styles = \".\" + prefix + \"icon {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n vertical-align: middle;\\n}\\n.\" + prefix + \"icon[tabindex] {\\n cursor: pointer;\\n}\\n.\" + prefix + \"icon-spin {\\n -webkit-animation: icon-spin 2s infinite linear;\\n animation: icon-spin 2s infinite linear;\\n}\\n.\" + prefix + \"icon-pulse {\\n -webkit-animation: icon-spin 1s infinite steps(8);\\n animation: icon-spin 1s infinite steps(8);\\n}\\n.\" + prefix + \"icon-flip-horizontal {\\n -webkit-transform: scaleX(-1);\\n -ms-transform: scaleX(-1);\\n transform: scaleX(-1);\\n}\\n.\" + prefix + \"icon-flip-vertical {\\n -webkit-transform: scaleY(-1);\\n -ms-transform: scaleY(-1);\\n transform: scaleY(-1);\\n}\\n@-webkit-keyframes icon-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n@keyframes icon-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\";\nvar cssInjected = false;\n\nvar useInsertStyles = function useInsertStyles(styleStr) {\n if (styleStr === void 0) {\n styleStr = styles;\n }\n\n (0, _react.useEffect)(function () {\n // Make sure css injected once.\n if (!cssInjected) {\n (0, _insertCss.insertCss)(styleStr, {\n prepend: true\n });\n cssInjected = true;\n }\n }, []);\n};\n\nvar _default = useInsertStyles;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","var containers = []; // will store container HTMLElement references\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container);\n\n // first time we see this container, create the necessary entries\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n }\n\n // try to get the correponding container + position styleElement, create it otherwise\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n }\n\n // strip potential UTF-8 BOM if css was read from a file\n if (css.charCodeAt(0) === 0xFEFF) { css = css.substr(1, css.length); }\n\n // actually add the stylesheet\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n};\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n}\n\nmodule.exports = insertCss;\nmodule.exports.insertCss = insertCss;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","function _extends() {\n return (module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === 'undefined';\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n","\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n","import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n","export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

(props: P, final?: boolean): Pick;\n getProps

(props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = [];\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n\n meta.controller.draw();\n\n if (useClip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the envent inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n","import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const opts = this.options;\n\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nexport default {\n id: 'title',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types.js';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef(ref: ForwardedRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n const options = chart.options;\n\n if (options && nextOptions) {\n Object.assign(options, nextOptions);\n }\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, BaseChartComponent } from './types.js';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils.js';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n props: ChartProps,\n ref: ForwardedRef>\n) {\n const {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...canvasProps\n } = props as ChartProps;\n const canvasRef = useRef(null);\n const chartRef = useRef();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n \n {fallbackContent}\n \n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as BaseChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types.js';\nimport { Chart } from './chart.js';\n\nfunction createTypedChart(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef, Omit, 'type'>>(\n (props, ref) => \n ) as TypedChartComponent;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle