{"version":3,"file":"static/js/main.af4fb08c.js","mappings":"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","sources":["../node_modules/classnames/index.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/path-to-regexp/index.js","../node_modules/path-to-regexp/node_modules/isarray/index.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/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/react-transition-group/TransitionGroupContext.js","../node_modules/react-transition-group/index.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/react-transition-group/utils/PropTypes.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/interopRequireDefault.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/reactstrap/es/utils.js","../node_modules/reactstrap/es/Container.js","../node_modules/reactstrap/es/NavItem.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/reactstrap/es/NavLink.js","../node_modules/reactstrap/es/Navbar.js","../node_modules/reactstrap/es/NavbarBrand.js","../node_modules/reactstrap/es/NavbarToggler.js","../node_modules/reactstrap/es/Collapse.js","components/models/session.ts","components/contexts/SessionContext.tsx","components/NavMenu.tsx","components/Layout.tsx","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","components/Home.tsx","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../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.js","../node_modules/chart.js/src/helpers/helpers.options.ts","../node_modules/chart.js/src/helpers/helpers.config.js","../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.interpolation.ts","../node_modules/chart.js/src/helpers/helpers.rtl.ts","../node_modules/chart.js/src/helpers/helpers.segment.js","../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/controllers/controller.bubble.js","../node_modules/chart.js/src/controllers/controller.doughnut.js","../node_modules/chart.js/src/controllers/controller.line.js","../node_modules/chart.js/src/controllers/controller.polarArea.js","../node_modules/chart.js/src/controllers/controller.pie.js","../node_modules/chart.js/src/controllers/controller.radar.js","../node_modules/chart.js/src/controllers/controller.scatter.js","../node_modules/chart.js/src/core/core.adapters.ts","../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/platform/index.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/elements/element.arc.ts","../node_modules/chart.js/src/elements/element.line.js","../node_modules/chart.js/src/elements/element.point.ts","../node_modules/chart.js/src/elements/element.bar.js","../node_modules/chart.js/src/plugins/plugin.filler/index.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.tooltip.js","../node_modules/chart.js/src/plugins/plugin.subtitle.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/chart.js/src/scales/scale.time.js","../node_modules/chart.js/src/scales/scale.timeseries.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.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","components/FetchData.tsx","../node_modules/reactstrap/es/Button.js","components/Counter.tsx","../node_modules/reactstrap/es/Form.js","../node_modules/reactstrap/es/FormGroup.js","../node_modules/reactstrap/es/Label.js","../node_modules/reactstrap/es/Col.js","../node_modules/reactstrap/es/Input.js","components/apis/CrujkBackend/CrujkBackend.Auth.ts","components/apis/CrujkBackend/CrujkBackend.Data.ts","components/apis/CrujkBackend/CrujkBackend.ts","components/Login.tsx","components/PrivateRoute.tsx","components/Logout.tsx","App.tsx","serviceWorkerRegistration.tsx","reportWebVitals.tsx","index.tsx"],"sourcesContent":["/*!\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\tvar nativeCodeString = '[native code]';\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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.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'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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 = 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","/** @license React v17.0.2\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\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(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 D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(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){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(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(oa,\npa);D[b]=new B(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(oa,pa);D[b]=new B(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(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(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 ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function 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 m({},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 $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(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\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(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 bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!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,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({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 vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(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}}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(y(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;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){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 Oe(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)}\nvar Pe=fa&&\"documentMode\"in document&&11>=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&&Oe(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&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;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}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)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=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"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[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,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=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n * \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = _react.default.Children.only(children);\n\n return (// allows for nested Transitions\n _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, _react.default.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextType = _TransitionGroupContext.default;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, children);\n }\n\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, _react.default.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = _react.default.createContext(null);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","/** @license React v17.0.2\n * react-jsx-runtime.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'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.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'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=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 _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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\t// no module.id needed\n\t\t// no module.loaded needed\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// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"d19c5754\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"ubujk:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(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__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkubujk\"] = self[\"webpackChunkubujk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"fluid\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var containerClass = 'container';\n\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\" + fluid;\n }\n\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar NavItem = function NavItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n active = props.active,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'nav-item', active ? 'active' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavItem.propTypes = propTypes;\nNavItem.defaultProps = defaultProps;\nexport default NavItem;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n onClick: PropTypes.func,\n href: PropTypes.any\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavLink = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(NavLink, _React$Component);\n\n function NavLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = NavLink.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.href === '#') {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n active = _this$props.active,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'nav-link', {\n disabled: attributes.disabled,\n active: active\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n onClick: this.onClick,\n className: classes\n }));\n };\n\n return NavLink;\n}(React.Component);\n\nNavLink.propTypes = propTypes;\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"expand\", \"className\", \"cssModule\", \"light\", \"dark\", \"fixed\", \"sticky\", \"color\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n light: PropTypes.bool,\n dark: PropTypes.bool,\n full: PropTypes.bool,\n fixed: PropTypes.string,\n sticky: PropTypes.string,\n color: PropTypes.string,\n role: PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar defaultProps = {\n tag: 'nav',\n expand: false\n};\n\nvar getExpandClass = function getExpandClass(expand) {\n if (expand === false) {\n return false;\n } else if (expand === true || expand === 'xs') {\n return 'navbar-expand';\n }\n\n return \"navbar-expand-\" + expand;\n};\n\nvar Navbar = function Navbar(props) {\n var _classNames;\n\n var expand = props.expand,\n className = props.className,\n cssModule = props.cssModule,\n light = props.light,\n dark = props.dark,\n fixed = props.fixed,\n sticky = props.sticky,\n color = props.color,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar', getExpandClass(expand), (_classNames = {\n 'navbar-light': light,\n 'navbar-dark': dark\n }, _classNames[\"bg-\" + color] = color, _classNames[\"fixed-\" + fixed] = fixed, _classNames[\"sticky-\" + sticky] = sticky, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbar.propTypes = propTypes;\nNavbar.defaultProps = defaultProps;\nexport default Navbar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavbarBrand = function NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\nexport default NavbarBrand;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"children\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n type: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node\n};\nvar defaultProps = {\n tag: 'button',\n type: 'button'\n};\n\nvar NavbarToggler = function NavbarToggler(props) {\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-toggler'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n \"aria-label\": \"Toggle navigation\"\n }, attributes, {\n className: classes\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('navbar-toggler-icon', cssModule)\n }));\n};\n\nNavbarToggler.propTypes = propTypes;\nNavbarToggler.defaultProps = defaultProps;\nexport default NavbarToggler;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"tag\", \"isOpen\", \"className\", \"navbar\", \"cssModule\", \"children\", \"innerRef\"];\n\nvar _transitionStatusToCl;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionTimeouts, TransitionPropTypeKeys, TransitionStatuses, tagPropType } from './utils';\n\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n isOpen: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n className: PropTypes.node,\n navbar: PropTypes.bool,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object])\n});\n\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n isOpen: false,\n appear: false,\n enter: true,\n exit: true,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n});\n\nvar transitionStatusToClassHash = (_transitionStatusToCl = {}, _transitionStatusToCl[TransitionStatuses.ENTERING] = 'collapsing', _transitionStatusToCl[TransitionStatuses.ENTERED] = 'collapse show', _transitionStatusToCl[TransitionStatuses.EXITING] = 'collapsing', _transitionStatusToCl[TransitionStatuses.EXITED] = 'collapse', _transitionStatusToCl);\n\nfunction getTransitionClass(status) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\n\nfunction getHeight(node) {\n return node.scrollHeight;\n}\n\nvar Collapse = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Collapse, _Component);\n\n function Collapse(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n height: null\n };\n ['onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'].forEach(function (name) {\n _this[name] = _this[name].bind(_assertThisInitialized(_this));\n });\n return _this;\n }\n\n var _proto = Collapse.prototype;\n\n _proto.onEntering = function onEntering(node, isAppearing) {\n this.setState({\n height: getHeight(node)\n });\n this.props.onEntering(node, isAppearing);\n };\n\n _proto.onEntered = function onEntered(node, isAppearing) {\n this.setState({\n height: null\n });\n this.props.onEntered(node, isAppearing);\n };\n\n _proto.onExit = function onExit(node) {\n this.setState({\n height: getHeight(node)\n });\n this.props.onExit(node);\n };\n\n _proto.onExiting = function onExiting(node) {\n // getting this variable triggers a reflow\n var _unused = node.offsetHeight; // eslint-disable-line no-unused-vars\n\n this.setState({\n height: 0\n });\n this.props.onExiting(node);\n };\n\n _proto.onExited = function onExited(node) {\n this.setState({\n height: null\n });\n this.props.onExited(node);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n Tag = _this$props.tag,\n isOpen = _this$props.isOpen,\n className = _this$props.className,\n navbar = _this$props.navbar,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n innerRef = _this$props.innerRef,\n otherProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var height = this.state.height;\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, transitionProps, {\n in: isOpen,\n onEntering: this.onEntering,\n onEntered: this.onEntered,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }), function (status) {\n var collapseClass = getTransitionClass(status);\n var classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n var style = height === null ? null : {\n height: height\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, childProps, {\n style: _objectSpread(_objectSpread({}, childProps.style), style),\n className: classes,\n ref: _this2.props.innerRef\n }), children);\n });\n };\n\n return Collapse;\n}(Component);\n\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","export type Session = {\n isAuthenticated?: boolean;\n redirectPath: string;\n}\n\nexport const initialSession: Session = {\n redirectPath: ''\n};","import { createContext, useContext, useState } from \"react\";\nimport { initialSession, Session } from \"../models/session\";\n\ntype SessionContextProviderProps = {\n children: React.ReactNode;\n}\n\nexport const SessionContext = createContext<[Session, (session: Session) => void]>([initialSession, () => {}]);\nexport const useSessionContext = () => useContext(SessionContext);\n\nexport const SessionContextProvider: React.FC = (props: SessionContextProviderProps): JSX.Element => {\n const session = initialSession;\n session.isAuthenticated = !!localStorage.getItem(\"isAuthenticated\");\n\n const [sessionState, setSessionState] = useState(session);\n const defaultSessionContext: [Session, typeof setSessionState] = [sessionState, setSessionState];\n\n\n\n return (\n \n {props.children}\n \n );\n}","import { useState } from 'react';\r\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport './NavMenu.css';\r\nimport { useSessionContext } from './contexts/SessionContext';\r\n\r\nconst NavMenu = () => {\r\n const [collapsed, setCollapsed] = useState(true);\r\n const [session] = useSessionContext();\r\n\r\n function toggleNavbar() {\r\n setCollapsed(!collapsed)\r\n }\r\n\r\n const GetNavLinks = () => {\r\n if (!session.isAuthenticated) return (\r\n <>\r\n \r\n Home\r\n \r\n \r\n Login\r\n \r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n Home\r\n \r\n \r\n Counter\r\n \r\n \r\n Fetch data\r\n \r\n \r\n Logout\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n ubujk\r\n \r\n \r\n
    \r\n {GetNavLinks()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n}\r\n\r\nexport default NavMenu;\r\n","import { Container } from 'reactstrap';\r\nimport NavMenu from './NavMenu';\r\n\r\ntype LayoutProps = {\r\n children: any;\r\n}\r\nexport function Layout(props: LayoutProps): JSX.Element {\r\n return (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n}\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import { Component } from 'react';\r\n\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n\r\n render () {\r\n return (\r\n
\r\n

Hello, world!

\r\n

Welcome to your new single-page application, built with:

\r\n
\r\n

To help you get started, we have also set up:

\r\n
    \r\n
  • Client-side navigation. For example, click Counter then Back to return here.
  • \r\n
  • Development server integration. In development mode, the development server from create-react-app runs in the background automatically, so your client-side resources are dynamically built on demand and the page refreshes when you modify any file.
  • \r\n
  • Efficient production builds. In production mode, development-time features are disabled, and your dotnet publish configuration produces minified, efficiently bundled JavaScript files.
  • \r\n
\r\n

The ClientApp subdirectory is a standard React application based on the create-react-app template. If you open a command prompt in that directory, you can run npm commands such as npm test or npm install.

\r\n
\r\n );\r\n }\r\n}\r\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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): AnyObject {\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();\n let i: number, ilen: number;\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n\n if (set.size === ilen) {\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, iScale.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 const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0); // toFixed has a max of 20 decimal places\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 /**\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 {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 * Note: typedefs are auto-exported, so use a made-up `canvas` 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 } canvas.Chart\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * @namespace Chart.helpers.canvas\n */\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string|null} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font) {\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(ctx, data, gc, longest, string) {\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\n/**\n * @private\n */\nexport function _longestText(ctx, font, arrayOfThings, cache) {\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, j, jlen, thing, nestedThing;\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) !== true) {\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 {canvas.Chart} chart - The chart instance.\n * @param {number} pixel - A pixel value.\n * @param {number} width - The width of the element.\n * @returns {number} The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart, pixel, width) {\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 * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} [ctx]\n */\nexport function clearCanvas(canvas, ctx) {\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 function drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\n\nexport function drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\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} point - The point to test\n * @param {object} area - The rectangle\n * @param {number} [margin] - allowed margin\n * @returns {boolean}\n * @private\n */\nexport function _isPointInArea(point, area, margin) {\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, area) {\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) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(ctx, previous, target, flip, mode) {\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(ctx, previous, target, flip) {\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\n/**\n * Render text onto the canvas\n */\nexport function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\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 += font.lineHeight;\n }\n\n ctx.restore();\n}\n\nfunction setRenderOpts(ctx, opts) {\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(ctx, x, y, line, opts) {\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, opts) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nexport function addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_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 {Point, toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec} 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\nexport interface CanvasFontSpec extends FontSpec {\n string: string;\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","import {defined, isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param {object[]} scopes - The option scopes to look for values, in resolution order\n * @param {string[]} [prefixes] - The prefixes for values, in resolution order.\n * @param {object[]} [rootScopes] - The root option scopes\n * @param {string|boolean} [fallback] - Parent scopes fallback\n * @param {function} [getTarget] - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\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 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) {\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) {\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, 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 });\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param {object} proxy - The Proxy returned by `_createResolver`\n * @param {object} context - Context object for scriptable/indexable options\n * @param {object} [subProxy] - The proxy provided for scriptable options\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults] - Defaults for descriptors\n * @private\n */\nexport function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _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, 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 });\n}\n\n/**\n * @private\n */\nexport function _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\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, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\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(target, prop, receiver) {\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(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n // @ts-ignore\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_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(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (defined(_context.index) && isIndexable(prop)) {\n value = 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(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\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 (defined(fallback) && 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 && defined(parentFallback) && 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(parentScopes, resolver, prop, value) {\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 (defined(fallback) && 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, value));\n}\n\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(resolver, prop, value) {\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(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes) {\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(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = 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 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';\n\nexport interface SplinePoint {\n x: number;\n y: number;\n skip?: boolean;\n\n // Both Bezier and monotone interpolations have these fields\n // but they are added in different spots\n cp1x?: number;\n cp1y?: number;\n cp2x?: number;\n cp2y?: number;\n}\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 = _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 window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\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","import type {Point} from '../types/geometric.js';\nimport type {SplinePoint} from './helpers.curve.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\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 {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\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) {\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 x: key,\n y: 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 (an thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal meta data accordingly.\n\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\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) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outr radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n","import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outr radius of the chart\n radius: '100%'\n };\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: TimeUnit): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: TimeUnit): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase\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 node.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\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 = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\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 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('./core.controller.js').default } 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 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 = 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 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 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 (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n\n id = scaleOptions.axis\n || axisFromPosition(scaleOptions.position)\n || id.length > 1 && determineAxis(id[0].toLowerCase(), scaleOptions);\n\n if (id) {\n return id;\n }\n\n throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`);\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);\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).reduce((acc, key) => acc || isFunction(value[key]), false);\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 getDatasetArea(meta) {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\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 Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n","import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n","import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\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.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\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","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\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);\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.5 : 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 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 x = 0;\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 x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n\n return {\n x: x / count,\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 labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = 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 = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.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 - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.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 = labelColors.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 = labelColors.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 return lastActive;\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 {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 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 ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\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} 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 buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n\n items.push({\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 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 drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.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 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) {\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 && !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 });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if its not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, /** @type {Unit} */ (parser))\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\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 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @private\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guestimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n","import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\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","import { useEffect, useReducer, useState } from 'react';\r\nimport { CategoryScale, Chart as ChartJS, Legend, LinearScale, LineElement, PointElement, Title, Tooltip } from \"chart.js\";\r\nimport { Line } from 'react-chartjs-2';\r\n\r\ninterface Forecast {\r\n date: string;\r\n temperatureC: string;\r\n temperatureF: string;\r\n summary: string;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n forecasts?: Forecast[];\r\n}\r\n\r\ninterface FearAndGreedResponse {\r\n name: string\r\n data: FearGreedData[]\r\n metadata: {\r\n error: any\r\n }\r\n}\r\n\r\ninterface FearGreedData {\r\n value: string\r\n value_classification?: string\r\n timestamp?: string\r\n time_until_update?: string\r\n}\r\n\r\ninterface LongShortPositionRecord {\r\n longShortPositionRecordId: number;\r\n totalLong: number;\r\n totalShort: number;\r\n date: string;\r\n totalActivePositions: number;\r\n}\r\n\r\nconst reducer = (state: State, data: Forecast[]): State => {\r\n return { loading: false, forecasts: data };\r\n}\r\n\r\nconst initialState: State = { loading: true, forecasts: undefined };\r\n\r\nconst FetchData = () => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const [fgIndex, setFgIndex] = useState();\r\n const [gmxPosState, setGmxPosState] = useState();\r\n\r\n async function populateWeatherData() {\r\n const response = await fetch('api/weatherforecast', {\r\n headers: {\r\n 'Accept': 'application/json'\r\n },\r\n });\r\n const data = await response.json() as Forecast[];\r\n dispatch(data);\r\n }\r\n\r\n async function getFearAndGreed() {\r\n const response = await fetch('https://api.alternative.me/fng/');\r\n const data = await response.json() as FearAndGreedResponse;\r\n setFgIndex(data.data[0]);\r\n }\r\n\r\n async function getGmxPos() {\r\n const response = await fetch('api/recordposget', {\r\n headers: {\r\n 'Accept': 'application/json'\r\n },\r\n });\r\n const data = (await response.json() as LongShortPositionRecord[]);\r\n setGmxPosState(data);\r\n }\r\n\r\n useEffect(() => {\r\n populateWeatherData();\r\n getFearAndGreed();\r\n getGmxPos();\r\n }, []);\r\n\r\n function renderForecastsTable(forecasts: Forecast[]) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {forecasts.map(forecast =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
DateTemp. (C)Temp. (F)Summary
{forecast.date}{forecast.temperatureC}{forecast.temperatureF}{forecast.summary}
\r\n \r\n \r\n );\r\n }\r\n\r\n function renderGmxTable(records: LongShortPositionRecord[]) {\r\n ChartJS.register(\r\n CategoryScale,\r\n LinearScale,\r\n PointElement,\r\n LineElement,\r\n Title,\r\n Tooltip,\r\n Legend\r\n );\r\n\r\n const options = {\r\n responsive: true,\r\n plugins: {\r\n legend: {\r\n position: 'top' as const,\r\n },\r\n title: {\r\n display: true,\r\n text: 'GMX long short pos'\r\n }\r\n }\r\n };\r\n\r\n const labels = [];\r\n\r\n const data = {\r\n datasets: [\r\n {\r\n label: 'Longs',\r\n data: gmxPosState?.map(rec => { return {x: rec.date, y: rec.totalLong}}),\r\n borderColor: 'rgb(0,180,0)',\r\n backgroundColor: 'rgb(20,180,20)'\r\n },\r\n {\r\n label: 'Shorts',\r\n data: gmxPosState?.map(rec => {return {x: rec.date, y: rec.totalShort}}),\r\n borderColor: 'rgb(180,0,0)',\r\n backgroundColor: 'rgb(180,20,20)'\r\n }\r\n ]\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n let contents = state.loading\r\n ?

Loading...

\r\n : renderForecastsTable(state.forecasts!);\r\n\r\n let gmxContent = gmxPosState === undefined\r\n ?

loading gmx pos

\r\n : renderGmxTable(gmxPosState);\r\n\r\n return (\r\n
\r\n

Weather forecast

\r\n

This component demonstrates fetching data from the server.

\r\n {contents}\r\n
Fear & Greed Index: -{fgIndex?.value}-
\r\n
\r\n {gmxContent}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default FetchData;\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"active\", \"aria-label\", \"block\", \"className\", \"close\", \"cssModule\", \"color\", \"outline\", \"size\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n active: PropTypes.bool,\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n color: PropTypes.string,\n disabled: PropTypes.bool,\n outline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n onClick: PropTypes.func,\n size: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n close: PropTypes.bool\n};\nvar defaultProps = {\n color: 'secondary',\n tag: 'button'\n};\n\nvar Button = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Button, _React$Component);\n\n function Button(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Button.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n return this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n ariaLabel = _this$props['aria-label'],\n block = _this$props.block,\n className = _this$props.className,\n close = _this$props.close,\n cssModule = _this$props.cssModule,\n color = _this$props.color,\n outline = _this$props.outline,\n size = _this$props.size,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n if (close && typeof attributes.children === 'undefined') {\n attributes.children = /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": true\n }, \"\\xD7\");\n }\n\n var btnOutlineColor = \"btn\" + (outline ? '-outline' : '') + \"-\" + color;\n var classes = mapToCssModules(classNames(className, {\n close: close\n }, close || 'btn', close || btnOutlineColor, size ? \"btn-\" + size : false, block ? 'btn-block' : false, {\n active: active,\n disabled: this.props.disabled\n }), cssModule);\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n var defaultAriaLabel = close ? 'Close' : null;\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && attributes.onClick ? 'button' : undefined\n }, attributes, {\n className: classes,\n ref: innerRef,\n onClick: this.onClick,\n \"aria-label\": ariaLabel || defaultAriaLabel\n }));\n };\n\n return Button;\n}(React.Component);\n\nButton.propTypes = propTypes;\nButton.defaultProps = defaultProps;\nexport default Button;","import { useReducer } from 'react';\r\nimport { Button } from 'reactstrap';\r\n\r\ninterface State {\r\n count: number;\r\n}\r\n\r\nenum Types{\r\n INCREMENT = \"INCREMENT\",\r\n DECREMENT = \"DECREMENT\"\r\n}\r\n\r\ntype Action = { type: Types.INCREMENT } | { type: Types.DECREMENT };\r\n\r\nconst reducer = (state: State, action: Action) => {\r\n const { INCREMENT, DECREMENT } = Types;\r\n switch(action.type) {\r\n case INCREMENT:\r\n return { count: state.count + 1 };\r\n case DECREMENT:\r\n return { count: state.count - 1 };\r\n default:\r\n throw new Error();\r\n }\r\n};\r\n\r\nconst initialState: State = { count: 0 };\r\n\r\nconst Counter = () => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const { INCREMENT, DECREMENT } = Types;\r\n return (\r\n <>\r\n

Counter:

\r\n \r\n

/ {state.count}

\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Counter;\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"inline\", \"tag\", \"innerRef\"];\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n inline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'form'\n};\n\nvar Form = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Form, _Component);\n\n function Form(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.submit = _this.submit.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Form.prototype;\n\n _proto.getRef = function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n this.ref = ref;\n };\n\n _proto.submit = function submit() {\n if (this.ref) {\n this.ref.submit();\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n inline = _this$props.inline,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var classes = mapToCssModules(classNames(className, inline ? 'form-inline' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes\n }));\n };\n\n return Form;\n}(Component);\n\nForm.propTypes = propTypes;\nForm.defaultProps = defaultProps;\nexport default Form;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"row\", \"disabled\", \"check\", \"inline\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n row: PropTypes.bool,\n check: PropTypes.bool,\n inline: PropTypes.bool,\n disabled: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar FormGroup = function FormGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n row = props.row,\n disabled = props.disabled,\n check = props.check,\n inline = props.inline,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, row ? 'row' : false, check ? 'form-check' : 'form-group', check && inline ? 'form-check-inline' : false, check && disabled ? 'disabled' : false), cssModule);\n\n if (Tag === 'fieldset') {\n attributes.disabled = disabled;\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nFormGroup.propTypes = propTypes;\nFormGroup.defaultProps = defaultProps;\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"hidden\", \"widths\", \"tag\", \"check\", \"size\", \"for\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.shape({\n size: stringOrNumberProp,\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n children: PropTypes.node,\n hidden: PropTypes.bool,\n check: PropTypes.bool,\n size: PropTypes.string,\n for: PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'label',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Label = function Label(props) {\n var className = props.className,\n cssModule = props.cssModule,\n hidden = props.hidden,\n widths = props.widths,\n Tag = props.tag,\n check = props.check,\n size = props.size,\n htmlFor = props.for,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n var colClass;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames))), cssModule);\n } else {\n colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(colClass);\n }\n });\n var classes = mapToCssModules(classNames(className, hidden ? 'sr-only' : false, check ? 'form-check-label' : false, size ? \"col-form-label-\" + size : false, colClasses, colClasses.length ? 'col-form-label' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n htmlFor: htmlFor\n }, attributes, {\n className: classes\n }));\n};\n\nLabel.propTypes = propTypes;\nLabel.defaultProps = defaultProps;\nexport default Label;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"widths\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'div',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Col = function Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n widths = props.widths,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n\n colClasses.push(_colClass);\n }\n });\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"type\", \"bsSize\", \"valid\", \"invalid\", \"tag\", \"addon\", \"plaintext\", \"innerRef\"];\n\n/* eslint react/prefer-stateless-function: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, warnOnce, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n type: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n bsSize: PropTypes.string,\n valid: PropTypes.bool,\n invalid: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n plaintext: PropTypes.bool,\n addon: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n type: 'text'\n};\n\nvar Input = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Input, _React$Component);\n\n function Input(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.focus = _this.focus.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Input.prototype;\n\n _proto.getRef = function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n this.ref = ref;\n };\n\n _proto.focus = function focus() {\n if (this.ref) {\n this.ref.focus();\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n type = _this$props.type,\n bsSize = _this$props.bsSize,\n valid = _this$props.valid,\n invalid = _this$props.invalid,\n tag = _this$props.tag,\n addon = _this$props.addon,\n plaintext = _this$props.plaintext,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var checkInput = ['radio', 'checkbox'].indexOf(type) > -1;\n var isNotaNumber = new RegExp('\\\\D', 'g');\n var fileInput = type === 'file';\n var textareaInput = type === 'textarea';\n var selectInput = type === 'select';\n var rangeInput = type === 'range';\n var Tag = tag || (selectInput || textareaInput ? type : 'input');\n var formControlClass = 'form-control';\n\n if (plaintext) {\n formControlClass = formControlClass + \"-plaintext\";\n Tag = tag || 'input';\n } else if (fileInput) {\n formControlClass = formControlClass + \"-file\";\n } else if (rangeInput) {\n formControlClass = formControlClass + \"-range\";\n } else if (checkInput) {\n if (addon) {\n formControlClass = null;\n } else {\n formControlClass = 'form-check-input';\n }\n }\n\n if (attributes.size && isNotaNumber.test(attributes.size)) {\n warnOnce('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n bsSize = attributes.size;\n delete attributes.size;\n }\n\n var classes = mapToCssModules(classNames(className, invalid && 'is-invalid', valid && 'is-valid', bsSize ? \"form-control-\" + bsSize : false, formControlClass), cssModule);\n\n if (Tag === 'input' || tag && typeof tag === 'function') {\n attributes.type = type;\n }\n\n if (attributes.children && !(plaintext || type === 'select' || typeof Tag !== 'string' || Tag === 'select')) {\n warnOnce(\"Input with a type of \\\"\" + type + \"\\\" cannot have children. Please use \\\"value\\\"/\\\"defaultValue\\\" instead.\");\n delete attributes.children;\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes,\n \"aria-invalid\": invalid\n }));\n };\n\n return Input;\n}(React.Component);\n\nInput.propTypes = propTypes;\nInput.defaultProps = defaultProps;\nexport default Input;","type loginRequestModel = {username: string, password: string};\n\nexport class CrujkBackendAuth {\n private static defaultHeaders = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n };\n\n public static async login({ username, password }: loginRequestModel) {\n return await fetch('api/auth/login', {\n method: 'POST',\n headers: CrujkBackendAuth.defaultHeaders,\n body: JSON.stringify({ username, password })\n });\n }\n\n public static async logout() {\n return await fetch('api/auth/logout', {\n headers: CrujkBackendAuth.defaultHeaders\n });\n }\n\n public static async ping() {\n return await fetch('api/auth/ping', {\n headers: CrujkBackendAuth.defaultHeaders\n });\n }\n}","export class CrujkBackendData {\n private static defaultHeaders = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n\n public static async fetchGmxLongShortPos() {\n return await fetch('api/data/recordposget', {\n headers: CrujkBackendData.defaultHeaders\n });\n }\n}","import { CrujkBackendAuth } from \"./CrujkBackend.Auth\";\nimport { CrujkBackendData } from \"./CrujkBackend.Data\";\n\nexport class CrujkBackend {\n public static get auth() {\n return {\n login: CrujkBackendAuth.login,\n logout: CrujkBackendAuth.logout,\n ping: CrujkBackendAuth.ping\n }\n }\n\n public static get data() {\n return {\n fetchGmxLongShortPos: CrujkBackendData.fetchGmxLongShortPos()\n }\n }\n \n}\n\n","import { FormEvent, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button, Col, Form, FormGroup, Input, Label } from \"reactstrap\";\nimport { CrujkBackend } from \"./apis/CrujkBackend/CrujkBackend\";\nimport { useSessionContext } from \"./contexts/SessionContext\";\n\nexport default function Login(props: any) {\n const [session, setSession] = useSessionContext();\n const history = useHistory();\n\n const [Username, setUsername] = useState();\n const [Password, setPassword] = useState();\n\n const handleSubmit: React.FormEventHandler = async (event: FormEvent) => {\n event.preventDefault();\n if (!Username && !Password) throw new Error(\"username or password can not be null\");\n\n const res = await CrujkBackend.auth.login({ username: Username!, password: Password! });\n if (res.ok) {\n setSession({ ...session, isAuthenticated: true });\n\n const referrerPath = props?.location?.state?.referrer?.pathname;\n\n localStorage.setItem(\"isAuthenticated\", \"true\");\n if (referrerPath) history.push(referrerPath);\n else history.push(\"/\");\n } else {\n console.log(\"login failed\");\n }\n }\n\n return (\n
\n

Login

\n\n
\n \n \n \n setUsername(e.target.value)} />\n \n \n \n \n \n setPassword(e.target.value)} />\n \n \n \n \n
\n
\n )\n\n}","import { Redirect, Route, RouteProps, useLocation } from \"react-router-dom\";\n\nexport type ProtectedRouteProps = {\n isAuthenticated: boolean;\n authenticationPath: string;\n} & RouteProps;\n\n\nexport default function ProtectedRoute({isAuthenticated, authenticationPath, ...routeProps}: ProtectedRouteProps) {\n const currentLocation = useLocation();\n\n if (isAuthenticated ) { //&& redirectPath === currentLocation.pathname\n return ;\n } else {\n return \n }\n}\n","import { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { CrujkBackendAuth } from \"./apis/CrujkBackend/CrujkBackend.Auth\";\nimport { useSessionContext } from \"./contexts/SessionContext\";\n\nexport default function Logout() {\n const [session, setSession] = useSessionContext();\n const history = useHistory();\n\n const logout = async() => {\n setSession({...session, isAuthenticated: false});\n await CrujkBackendAuth.logout();\n localStorage.removeItem(\"isAuthenticated\");\n history.push(\"/login\");\n }\n\n useEffect(() => {\n logout();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (<>);\n}","import { Route, Switch } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './components/Home';\r\nimport FetchData from './components/FetchData';\r\nimport Counter from './components/Counter';\r\nimport Login from './components/Login';\r\n\r\nimport './custom.css'\r\nimport { Redirect } from 'react-router-dom';\r\nimport ProtectedRoute, { ProtectedRouteProps } from './components/PrivateRoute';\r\nimport { useSessionContext } from './components/contexts/SessionContext';\r\nimport Logout from './components/Logout';\r\n\r\nfunction App() { \r\n const [sessionContext] = useSessionContext();\r\n \r\n const defaultProtectedRouteProps: ProtectedRouteProps = {\r\n isAuthenticated: !!sessionContext.isAuthenticated,\r\n authenticationPath: '/login'\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config: any) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://cra.link/PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: any, config: any) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://cra.link/PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: any, config: any) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { SessionContextProvider } from './components/contexts/SessionContext';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\nserviceWorkerRegistration.unregister();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","module","exports","default","_interopRequireDefault","require","__esModule","element","className","classList","add","_hasClass","setAttribute","baseVal","contains","indexOf","replaceClassName","origClass","classToRemove","replace","RegExp","remove","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","descriptor","e","b","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","propIsEnumerable","propertyIsEnumerable","assign","test1","String","test2","fromCharCode","map","test3","split","forEach","letter","err","shouldUseNative","target","source","from","symbols","to","val","undefined","TypeError","toObject","s","isarray","pathToRegexp","parse","compile","str","options","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","index","path","defaultDelimiter","delimiter","exec","escaped","offset","slice","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","charCodeAt","toUpperCase","matches","flags","obj","opts","data","encode","pretty","encodeURIComponent","token","segment","value","JSON","stringify","j","test","attachKeys","re","sensitive","strict","end","route","endsWithDelimiter","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","arr","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ba","Set","ca","da","ea","fa","window","document","createElement","ha","ia","ja","ka","B","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","D","toLowerCase","oa","pa","qa","ma","isNaN","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","E","Ma","Ka","iterator","La","Na","stack","trim","Oa","Pa","prepareStackTrace","set","Reflect","construct","Qa","tag","_render","Ra","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","children","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","html","mathml","svg","lb","mb","nb","ob","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","charAt","substring","ub","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","addEventListener","removeEventListener","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","child","sibling","current","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","shift","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","Math","clz32","bd","cd","log","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","id","bind","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","href","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","start","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","instance","listener","G","$e","has","af","bf","random","cf","df","passive","Nb","ef","ff","parentWindow","gf","hf","J","K","Q","L","je","char","ke","unshift","jf","kf","lf","mf","autoFocus","nf","__html","of","setTimeout","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","M","N","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","context","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","callback","Ag","Bg","Cg","C","Dg","Eg","Fg","Component","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","state","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","ref","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","Vg","implementation","Wg","Xg","done","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","hh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","create","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","V","Hi","Ii","W","Ji","Ki","Li","Mi","message","Ni","console","error","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","then","mj","nj","ceil","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","min","extend","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","version","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","setState","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","newObj","desc","_interopRequireWildcard","_addClass","_removeClass","_react","_Transition","_extends","addClass","removeClass","CSSTransition","_React$Component","subClass","superClass","_this","_len","args","_key","onEnter","appearing","getClassNames","removeClasses","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","isStringClassNames","__proto__","_proto","_this$getClassNames6","_default","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","handler","idx","originalArgs","_child$props","toArray","_this$props","inProp","in","excluded","sourceKeys","_objectWithoutPropertiesLoose","_React$Children$toArr","first","second","cloneElement","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactLifecyclesCompat","_TransitionGroupContext","Transition","initialStatus","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","status","nextCallback","_ref","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","timeout","mounting","performEnter","performExit","_this2","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","setNextCallback","_this4","active","doesNotHaveTimeoutOrListener","addEndListener","childProps","Provider","only","noop","_ChildMapping","_assertThisInitialized","self","ReferenceError","values","TransitionGroup","contextValue","firstRender","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","createContext","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","result","mapper","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","prop","classNamesShape","timeoutsShape","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","IsSomeRendererActing","count","PureComponent","_currentValue2","_threadCount","Consumer","createFactory","createRef","forwardRef","lazy","memo","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","floor","port2","port1","onmessage","postMessage","pop","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","o","chunkId","Promise","all","reduce","promises","miniCssF","globalThis","Function","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","src","onScriptComplete","onerror","onload","doneFns","fn","head","toStringTag","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","_setPrototypeOf","setPrototypeOf","_inheritsLoose","isAbsolute","pathname","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","every","item","aValue","bValue","isProduction","process","invariant","condition","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","filter","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","pushHashPath","nextPaths","clamp","lowerBound","upperBound","max","MAX_SIGNED_31_BIT_INT","commonjsGlobal","global","React","calculateChangedBits","contextProp","getUniqueId","emitter","handlers","on","off","newValue","changedBits","createEventEmitter","oldValue","_Provider$childContex","_React$Component2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","Lifecycle","onMount","onUnmount","cache","cacheLimit","cacheCount","generatePath","generator","compilePath","Redirect","computedMatch","_ref$push","method","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","matched","cacheKey","pathCache","regexp","compilePath$1","_compilePath","Route","context$1","isEmptyChildren","createURL","staticHandler","methodName","Switch","useHistory","useLocation","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","rest","ex","isModifiedEvent","Link","_ref2","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","_typeof","_toPropertyKey","hint","prim","toPrimitive","Number","_defineProperty","writable","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","_slicedToArray","_i","_s","_e","_x","_r","_arr","_n","_d","globalCssModule","mapToCssModules","cssModule","warned","warnOnce","tagPropType","TransitionPropTypeKeys","TransitionStatuses","isObject","_excluded","fluid","Container","Tag","attributes","containerClass","NavItem","NavLink","light","dark","full","fixed","sticky","role","expand","Navbar","_classNames","getExpandClass","NavbarBrand","NavbarToggler","_transitionStatusToCl","_objectSpread","isOpen","navbar","transitionStatusToClassHash","getHeight","scrollHeight","Collapse","_Component","isAppearing","offsetHeight","otherProps","transitionProps","pickKeys","pick","omitKeys","omit","collapseClass","getTransitionClass","initialSession","redirectPath","SessionContext","useSessionContext","SessionContextProvider","session","isAuthenticated","localStorage","getItem","_useState2","defaultSessionContext","_jsx","collapsed","setCollapsed","_jsxs","_Fragment","Layout","NavMenu","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_inherits","_getPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","Super","NewTarget","Home","_super","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_get","property","receiver","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","step","_e2","_toConsumableArray","round","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","eq","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","p1","p2","hwb2rgb","hsv2rgb","names","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","parseInt","unpack","transparent","RGB_RE","pow","modHSL","ratio","tmp","clone","proto","fromObject","functionParse","rgbParse","Color","ret","hexParse","_rgb","_valid","hexString","hslString","weight","w2","c1","c2","w1","rgb1","rgb2","interpolate","deg","rotate","uid","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","endsWith","parseFloat","thisArg","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","_getKeyResolver","_step","_iterator","_splitKey","_step2","_iterator2","resolveObjectKey","_capitalize","defined","isFunction","setsEqual","_step3","_iterator3","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","roundedRange","niceRange","fraction","isNumber","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","splice","_arrayUnique","items","requestAnimFrame","throttled","argsToUse","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","saturate","darken","numbers","colors","intlCache","formatNumber","num","formatter","Intl","NumberFormat","getNumberFormat","format","formatters","numeric","tickValue","ticks","notation","chart","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","overrides","descriptors","getScope$1","root","scope","Defaults","_descriptors","_appliers","backgroundColor","borderColor","datasets","devicePixelRatio","platform","getDevicePixelRatio","elements","events","font","family","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","_Object$definePropert","scopeObject","targetScopeObject","privateName","local","appliers","defaults","_scriptable","startsWith","_indexable","_fallback","duration","easing","loop","properties","resize","show","animations","visible","hide","autoPadding","padding","right","bottom","beginAtZero","bounds","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","title","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","lines","strokeColor","translation","fillStyle","textAlign","textBaseline","setRenderOpts","backdrop","drawBackdrop","strokeStyle","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","oldColor","fillRect","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","_step4","objProps","read","_iterator4","toTRBL","toTRBLCorners","toPadding","toFont","warn","toFontString","inputs","cacheable","parentContext","_createResolver","scopes","_cache","prefixes","rootScopes","getTarget","_resolve","deleteProperty","_keys","_cached","proxy","_step7","_iterator7","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_cacheable","_proxy","_subProxy","_stack","setContext","override","isScriptable","_resolveScriptable","isIndexable","_step5","_iterator5","resolver","_resolveArray","_resolveWithContext","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","_step6","_iterator6","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","_step8","_iterator8","_step9","_iterator9","_step10","_iterator10","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","parsed","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","splineCurveMonotone","pointBefore","pointCurrent","valueAxis","pointsLen","deltaK","mK","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","suffix","pos","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","_getCanvasPosition","offsetX","offsetY","box","getBoundingClientRect","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","rtl","overrideTextDirection","direction","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","prevValue","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","_step11","_iterator11","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","initial","currentStep","_update","_refresh","remaining","running","draw","_active","_total","tick","_notify","charts","progress","_getAnims","_this$_getAnims$items","acc","cur","_duration","animator","interpolators","boolean","factor","c0","valid","mix","Animation","cfg","currentValue","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","rej","resolved","Animations","config","_properties","configure","animationOptions","animatedProps","_animationOptions","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","awaitAll","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","_parsed$i","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","label","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","_step3$value","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_args2","_dataChanges","_sync","newCount","computeMinSampleSize","curr","$bar","visibleMetas","getAllParsedValues","sort","getAllScaleValues","_length","updateMinAndPrev","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","_DatasetController","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","_getSharedOptions","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","skipNull","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","_value_","BubbleController","_DatasetController2","_super2","_this$_cachedMeta2","_this$_getSharedOptio2","DoughnutController","_DatasetController3","_super3","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_this$_getRotationExt","_getRotationExtents","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","_chart$legend$options2","fontColor","legendItem","toggleDataVisibility","LineController","_DatasetController4","_super4","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","animated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_DatasetController5","_super5","_this5","_updateRadius","_this6","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","_this7","_chart$legend$options3","angleLines","circular","pointLabels","PieController","_DoughnutController","_super6","RadarController","_DatasetController6","_super7","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","_DatasetController7","_super8","_meta$data2","_getStartAndCountOfVi2","registry","getElement","_this$_cachedMeta4","_this$options3","abstract","adapters","_date","DateAdapterBase","members","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","getSortedVisibleDatasetMetas","_metasets$i","_binarySearch","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","_element$getProps","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","layout","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","_updateDims","setBoxDims","placeBoxes","userPadding","height1","width1","addBox","_layers","removeBox","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","_BasePlatform","_super9","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","native","fromNativeEvent","addListener","DomPlatform","_BasePlatform2","_super10","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","_this$getProps","final","_this8","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","reverseAlign","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","Scale","_Element","_super11","_this9","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_this$getUserBounds","metas","getMinMax","xLabels","yLabels","_computeLabelItems","beforeUpdate","_this$options4","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_this$options5","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options6","_this$options6$ticks","isRotated","labelsBelowTicks","offsetLeft","offsetRight","_this$options7","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","positionAxisID1","value1","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","ret1","halfCount","tickTextAlign","labelPadding","_this$options8","_this$options9","_this$options9$ticks","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","_this$options10","lastLineWidth","_computeLabelArea","getLabelItems","renderTextOptions","_this$options11","_titleArgs","titleX","titleY","titleArgs","drawBackground","drawGrid","drawBorder","drawTitle","drawLabels","_this10","tz","gz","bz","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","defaultRoutes","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","_len8","_key8","_len9","_key9","_len10","_key10","typedRegistry","_this11","reg","_getRegistryForType","isForType","_exec","itemReg","camelMethod","PluginService","hook","_createDescriptors","plugin","_oldCache","_notifyStateChanges","localIds","getPlugin","i1","allPlugins","_step12","_iterator12","getOpts","pluginOpts","createDescriptors","previousDescriptors","_ref3","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","_step14","_descriptors2","_iterator14","hasFunction","needContext","_step13","_iterator13","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","_i2","intKey","Chart","userConfig","_this12","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","_this$options12","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","axisOptions","_this13","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","_destroyDatasetMeta","_this14","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","_defaults$datasets$ty","_updateMetasets","_this15","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","_this16","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_step15","_iterator15","_getUniformDataChanges","_step15$value","datasetCount","makeSet","changeSet","_this17","noArea","_this17$_layers","_idx","ilen1","_updateDataset","_this$_resizeBeforeDr","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","_this$canvas","toDataURL","bindUserEvents","bindResponsiveEvents","_this18","_add","_this19","detached","_remove","isAttached","_this20","activeElements","_this21","lastActive","_ref4","notify","pluginId","replay","hoverOptions","deactivated","activated","updateHoverStyle","_this22","inChartArea","eventFilter","_handleEvent","_this$_active","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","pCenter1","innerMidAdjustedAngle","pCenter2","p8","pCenter3","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","lineJoin","angleMargin","clipArc","ArcElement","_Element2","_super12","_this23","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref5","_ref5$move","fastPathSegment","prevX","lastY","_pathVars2","_ref6","_ref6$move","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","_step16","segmentMethod","_iterator16","strokePathDirect","LineElement","_Element3","_super13","_this24","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","_step17","_iterator17","inRange$1","hitRadius","PointElement","_Element4","_super14","_this25","mouseX","mouseY","_this$getProps4","_this$getProps5","hoverRadius","getBarBounds","bar","half","_bar$getProps","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","amount","refRect","BarElement","_Element5","_super15","_this26","_this$options14","_boundingRects","addRectPath","_this$getProps6","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_Element6","_super16","_this27","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","_this28","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","_calculateItemSize","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","_this$options15","rtlHelper","_step23","_iterator23","hitbox","_step24","_iterator24","hitbox1","_draw","cursor","_this29","defaultColor","halfFontSize","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","adjustHitBoxes","afterEvent","handleEvent","_chart$legend$options","useBorderRadius","Title","_Element7","_super17","_this30","_padding","textSize","fontOpts","_this$_drawArgs","_drawArgs","plugin_title","titleBlock","createTitle","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","_controller$getLabelA","getLabelAndValue","formattedValue","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","_toTRBLCorners","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","_Element8","_super18","_this31","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","_this32","bodyItems","scoped","_this33","itemSort","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","_toTRBLCorners2","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","_drawColorBox","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","_this34","_ref11","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","_willRender","addIfString","addedLabels","_getLabelForValue","CategoryScale","_Scale","_super19","_this35","_startValue","_valueRange","_addedLabels","added","_step25","_iterator25","_step25$value","findOrAddLabel","_this$getUserBounds2","_this$getMinMax","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref12","LinearScaleBase","_Scale2","_super20","_this36","_endValue","_this$getUserBounds3","setMin","setMax","minSign","maxSign","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","_LinearScaleBase","_super21","_this$getMinMax2","handleTickRangeOptions","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref13","minExp","exp","startExp","lastTick","LogarithmicScale","_Scale3","_super22","_this37","_zero","_this$getMinMax3","_this$getUserBounds4","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","_LinearScaleBase2","_super23","_this38","_this$getMinMax4","_this39","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","_this$_pointLabelItem","_this$options16","_this40","_scale$_pointLabelIte","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","_this41","animate","INTERVALS","millisecond","common","minute","hour","day","quarter","year","UNITS","sorter","adapter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_Scale4","_super24","_this42","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","fmt","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_TimeScale","_super25","_this43","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","_objectWithoutProperties","sourceSymbolKeys","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","find","cloneData","nextData","ChartComponent","_props$height","_props$width","_props$redraw","redraw","_props$plugins","fallbackContent","updateMode","canvasProps","canvasRef","chartRef","renderChart","Chart$1","destroyChart","nextOptions","setOptions","createTypedChart","registerables","Line","reducer","loading","forecasts","initialState","_useReducer2","fgIndex","setFgIndex","_useState4","gmxPosState","setGmxPosState","_populateWeatherData","_callee","response","fetch","headers","json","_getFearAndGreed","_callee2","_context2","_getGmxPos","_callee3","_context3","populateWeatherData","getFearAndGreed","getGmxPos","contents","forecast","temperatureC","temperatureF","summary","gmxContent","records","ChartJS","rec","totalLong","totalShort","renderGmxTable","outline","close","Button","ariaLabel","btnOutlineColor","defaultAriaLabel","Types","INCREMENT","DECREMENT","inline","Form","getRef","submit","check","FormGroup","stringOrNumberProp","columnProps","xs","sm","xl","getColumnSizeClass","isXs","colWidth","colSize","Label","htmlFor","colClasses","columnProp","colClass","colSizeInterfix","Col","_colClass","bsSize","invalid","plaintext","addon","Input","checkInput","isNotaNumber","formControlClass","CrujkBackendAuth","_login","username","defaultHeaders","_logout","_ping","CrujkBackendData","_fetchGmxLongShortPos","CrujkBackend","login","logout","ping","fetchGmxLongShortPos","Login","_useSessionContext2","setSession","Username","setUsername","Password","setPassword","handleSubmit","_props$location","_props$location$state","_props$location$state2","referrerPath","auth","referrer","setItem","onSubmit","onChange","ProtectedRoute","authenticationPath","routeProps","Logout","removeItem","defaultProtectedRouteProps","Counter","FetchData","hostname","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","rootElement","ReactDOM","App","serviceWorker","ready","registration","unregister","catch","reportWebVitals"],"sourceRoot":""}