{"version":3,"file":"helpers.segment.cjs","sources":["../../src/helpers/helpers.core.ts","../../src/helpers/helpers.math.ts","../../src/helpers/helpers.collection.ts","../../src/helpers/helpers.extras.ts","../../src/helpers/helpers.easing.ts","../../src/helpers/helpers.color.ts","../../src/core/core.animations.defaults.js","../../src/core/core.layouts.defaults.js","../../src/helpers/helpers.intl.ts","../../src/core/core.ticks.js","../../src/core/core.scale.defaults.js","../../src/core/core.defaults.js","../../src/helpers/helpers.canvas.js","../../src/helpers/helpers.options.ts","../../src/helpers/helpers.config.js","../../src/helpers/helpers.curve.ts","../../src/helpers/helpers.dom.ts","../../src/helpers/helpers.interpolation.ts","../../src/helpers/helpers.rtl.ts","../../src/helpers/helpers.segment.js"],"sourcesContent":["/**\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","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","\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 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 {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","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"],"names":["noop","uid","id","isNullOrUndef","value","isArray","Array","type","Object","prototype","toString","call","slice","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","args","thisArg","apply","each","loopable","reverse","i","len","keys","length","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone","source","map","target","create","klen","k","isValidKey","key","indexOf","_merger","options","tval","sval","merge","sources","merger","current","mergeIf","_mergerIf","hasOwnProperty","_deprecated","scope","previous","undefined","console","warn","keyResolvers","v","x","o","y","_splitKey","parts","split","tmp","part","push","_getKeyResolver","obj","resolveObjectKey","resolver","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","item","has","_isClickEvent","e","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","round","niceRange","pow","floor","fraction","niceFraction","_factorize","result","sqrt","sort","pop","isNumber","n","isNaN","almostWhole","rounded","_setMinAndMaxByKey","array","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","isFiniteNumber","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","hi","lo","mid","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","enumerable","forEach","method","base","res","object","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","add","from","fontString","pixelSize","fontStyle","fontFamily","requestAnimFrame","window","requestAnimationFrame","throttled","argsToUse","ticking","debounce","delay","timeout","clearTimeout","setTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","check","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","assign","atEdge","t","elasticIn","sin","elasticOut","effects","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","m","d","easeInOutBounce","isPatternOrGradient","color","Color","getHoverColor","saturate","darken","hexString","numbers","colors","applyAnimationsDefaults","defaults","duration","easing","loop","to","describe","_fallback","_indexable","_scriptable","name","properties","active","animation","resize","show","animations","visible","hide","applyLayoutsDefaults","autoPadding","padding","top","bottom","intlCache","Map","getNumberFormat","locale","cacheKey","JSON","stringify","formatter","get","Intl","NumberFormat","formatNumber","num","format","formatters","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","applyScaleDefaults","display","offset","beginAtZero","bounds","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","width","title","text","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","Ticks","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","startsWith","overrides","descriptors","getScope","node","root","Defaults","constructor","_descriptors","_appliers","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","weight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","toFontString","_measureText","data","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","j","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","w","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","rotate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","clip","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","lines","strokeWidth","strokeColor","line","setRenderOpts","backdrop","drawBackdrop","strokeStyle","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","oldColor","fillRect","addRoundedRectPath","h","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","numberOrZero","_readValueToProps","props","ret","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","parseInt","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","prefix","needsSubResolver","_resolveScriptable","_resolveArray","Error","join","delete","createSubResolver","arr","filter","resolveFallback","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","r","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","getStyle","el","getPropertyValue","positions","getPositionedStyle","styles","suffix","pos","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getRelativePosition","event","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","clientWidth","clientHeight","containerStyle","containerBorder","containerPadding","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","maintainHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","_pointInLine","p1","p2","_steppedInterpolation","_bezierInterpolation","cp1","cp2","c","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","startBound","endBound","_boundSegment","inside","subStart","prevValue","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","cur","stop","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","l","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle"],"mappings":"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"}