{"version":3,"file":"static/chunks/3fff1979-2027615efd69bed0.js","mappings":"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","sources":["webpack://_N_E/./node_modules/chart.js/dist/chart.mjs","webpack://_N_E/"],"sourcesContent":["/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.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});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.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\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\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\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 delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\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 borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\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 callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.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',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n"],"names":["animator","constructor","_request","_charts","Map","_running","_lastDate","undefined","_notify","chart","anims","date","type","callbacks","listeners","numSteps","duration","forEach","fn","initial","currentStep","Math","min","start","_refresh","_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__","r","call","window","_update","Date","now","remaining","item","running","items","length","i","draw","_active","_total","tick","pop","_getAnims","charts","get","complete","progress","set","listen","event","cb","push","add","has","reduce","acc","cur","max","_duration","stop","cancel","remove","delete","transparent","interpolators","boolean","from","to","factor","color","c0","c","c1","valid","mix","hexString","number","Animation","cfg","target","prop","currentValue","a","_fn","_easing","e","easing","linear","_start","floor","delay","_loop","loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","Promise","res","rej","resolved","method","d","animationOptions","Object","keys","animation","describe","_fallback","_indexable","_scriptable","name","colors","properties","numbers","resize","show","animations","visible","hide","v","Animations","config","_chart","_properties","configure","animatedProps","getOwnPropertyNames","key","option","b","_animateOptions","values","newOptions","options","resolveTargetOptions","$shared","assign","$animations","_createAnimations","awaitAll","anim","all","then","props","charAt","value","size","scaleClip","scale","allowedOverflow","opts","reverse","end","getSortedDatasetIndices","filterVisible","ilen","metasets","_getSortedDatasetMetas","index","applyStack","stack","dsIndex","datasetIndex","otherValue","singleMode","mode","g","s","isStacked","meta","stacked","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","stacks","_stacks","iScale","iAxis","axis","vAxis","indexScale","id","valueScale","itemStacks","getOrCreateStack","stackKey","indexValue","subStack","_top","_bottom","getFirstScaleId","scales","filter","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","_ctx","ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","updateIndex","dataset","getDataset","chooseId","x","y","xid","xAxisID","yid","yAxisID","rid","rAxisID","indexAxis","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","data","datasets","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","u","_dataCheck","convertObjectDataToArray","adata","isExtensible","l","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","scopes","getOptionScopes","createResolver","getContext","parsing","parse","count","sorted","_sorted","prev","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","f","getParsed","getDataElement","updateRangeFromParsed","range","parsedValue","NaN","getMinMax","otherScale","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","otherMin","otherMax","getUserBounds","minDefined","maxDefined","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","t","_clip","clip","defaultClip","top","right","bottom","left","disabled","elements","area","chartArea","drawActiveElementsOnTop","element","getStyle","resolveDatasetElementOptions","resolveDataElementOptions","parent","context","h","dataIndex","raw","_resolveElementOptions","dataElementType","elementType","cache","cacheKey","sharing","j","datasetElementScopeKeys","prefixes","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","_cacheable","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","arr","updateElements","removed","splice","_sync","args","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","parseValue","entry","parseFloatBar","startValue","endValue","barStart","barEnd","abs","_custom","parseArrayOrPrimitive","isFloatBar","custom","parseEdge","edge","orig","startEnd","defaults","prototype","BarController","obj","iAxisKey","vAxisKey","bars","base","getBasePixel","horizontal","isHorizontal","ruler","_getRuler","vpixels","k","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","enableBorderRadius","center","height","width","setBorderSkipped","borderSkipped","setInflateAmount","inflateAmount","ratio","_getStacks","last","grouped","skipNull","val","isNaN","indexOf","_getStackCount","_getStackIndex","pixels","getPixelForValue","barThickness","computeMinSampleSize","curr","getAllScaleValues","_cache","$bar","visibleMetas","concat","_","sort","_length","updateMinAndPrev","ticks","getPixelForTick","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","computeFlexCategoryTraits","next","percent","chunk","computeFitCategoryTraits","thickness","stackIndex","rects","overrides","_index_","offset","grid","_value_","beginAtZero","BubbleController","radius","points","point","iPixel","vPixel","skip","plugins","tooltip","title","DoughnutController","innerRadius","outerRadius","offsetX","offsetY","getter","_getRotation","rotation","_getCircumference","circumference","_getRotationExtents","T","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","m","chartWeight","_getRingWeight","ratioX","ratioY","getRatioAndOffset","endAngle","startAngle","startX","cos","startY","sin","endX","endY","calcMax","angle","p","calcMin","maxX","maxY","H","minX","P","minY","maxWidth","maxHeight","n","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","arc","metaData","o","locale","borderAlign","borderWidth","hoverBorderWidth","hoverOffset","ringWeightOffset","weight","descriptors","aspectRatio","legend","generateLabels","pointStyle","map","style","text","fillStyle","backgroundColor","strokeStyle","borderColor","lineWidth","onClick","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","slice","LineController","line","_dataset","animationsDisabled","q","w","_datasetIndex","_decimated","showLine","segment","animated","spanGaps","maxGapLength","directUpdate","prevParsed","nullData","border","firstPoint","lastPoint","updateControlPoints","PolarAreaController","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","fill","Element","tooltipPosition","useFinalPosition","getProps","hasValue","final","ret","defaultRoutes","formatters","numeric","tickValue","notation","delta","maxTick","logDelta","z","numDecimal","minimumFractionDigits","maximumFractionDigits","format","logarithmic","pow","Ticks","newTicks","majorStart","majorEnd","ceil","round","bounds","grace","drawBorder","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","borderDash","borderDashOffset","padding","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","callback","minor","major","align","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","startsWith","reverseAlign","offsetFromEdge","sample","numItems","result","increment","len","getTickMarkLength","getTitleHeight","fallback","font","O","K","lines","lineHeight","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","init","setContext","suggestedMin","suggestedMax","B","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","C","margins","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","D","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","source","ticksLimit","maxTicksLimit","determineMaxTicks","_tickSize","maxScale","maxChart","majorIndices","enabled","getMajorIndices","numMajorIndices","first","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","diff","factors","A","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","E","sqrt","F","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","position","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","fullSize","_computeLabelSizes","jlen","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","string","gc","G","Q","gcLen","valueAt","idx","getValueForPixel","pixel","decimal","I","J","getDecimalForPixel","getBaseValue","optionTicks","rot","_computeGridLineItems","borderValue","lineValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","getPixelForGridLine","offsetGridLines","validIndex","_computeLabelItems","textAlign","lineCount","textOffset","tickAndPadding","hTickAndPadding","textBaseline","_getXAxisLabelAlignment","_getYAxisLabelAlignment","backdrop","halfCount","strokeColor","strokeWidth","tickTextAlign","labelPadding","translation","_computeLabelArea","drawBackground","save","fillRect","restore","findIndex","drawGrid","drawLine","p1","p2","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","lastLineWidth","drawLabels","L","M","N","drawTitle","titleX","titleY","titleArgs","S","R","_layers","tz","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","fontSize","TypedRegistry","scope","override","create","isForType","isPrototypeOf","register","parentScope","proto","getPrototypeOf","registerDefaults","itemDefaults","V","routeDefaults","routes","property","propertyParts","split","sourceName","sourceScope","join","parts","targetName","targetScope","unregister","U","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","W","ScatterController","interaction","__proto__","abstract","DateAdapter","chartOptions","formats","timestamp","amount","unit","startOf","weekday","endOf","members","adapters","_date","evaluateInteractionItems","handler","intersect","lo","hi","binarySearch","metaset","lookupMethod","Y","Z","el","getRange","getIntersectItems","includeInvisible","isPointInArea","$","inRange","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","minDistance","getCenterPoint","pointInArea","distance","a0","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","X","nearest","STATIC_POSITIONS","filterByPosition","array","pos","filterDynamicPositionByAxis","box","sortByWeight","v0","v1","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","fitBoxes","boxes","params","layout","refit","changed","refitBoxes","getMargins","positions","margin","same","other","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","setBoxDims","placeBoxes","userPadding","placed","stackWeight","autoPadding","layouts","addBox","removeBox","layoutItem","minPadding","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","buildStacks","includes","_stack","handleMaxPadding","updatePos","change","BasePlatform","acquireContext","canvas","releaseContext","addEventListener","listener","removeEventListener","getDevicePixelRatio","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","a5","passive","removeListener","nodeListContains","nodeList","node","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","document","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","devicePixelRatio","currentDevicePixelRatio","createResizeObserver","container","a2","a4","clientWidth","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","proxy","fromNativeEvent","native","addListener","DomPlatform","initCanvas","renderHeight","getAttribute","renderWidth","boxSizing","displayWidth","a3","displayHeight","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","a1","isConnected","PluginService","_init","notify","hook","_createDescriptors","_descriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","localIds","local","createDescriptors","pluginOpts","pluginScopeKeys","scriptable","indexable","allKeys","previousDescriptors","some","getIndexAxis","datasetDefaults","datasetOptions","determineAxis","scaleOptions","toLowerCase","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","console","error","_proxy","warn","defaultScaleOptions","ac","defaultID","initData","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","platform","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","a7","Array","chartOptionScopes","resolver","subPrefixes","getResolver","needContext","isScriptable","isIndexable","ab","a8","hasFunction","subResolver","a9","descriptorDefaults","resolverCache","aa","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","a6","getElementById","instances","getChart","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","ad","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","ae","resizeDelay","_initialize","maintainAspectRatio","responsive","af","bindEvents","ag","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","events","ah","unbindEvents","changes","_getUniformDataChanges","moveNumericKeys","intKey","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","updateHoverStyle","prefix","getActiveElements","setActiveElements","activeElements","lastActive","ai","replay","hoverOptions","hover","deactivated","activated","inChartArea","eventFilter","_handleEvent","lastEvent","_getActiveElements","isClick","aj","onHover","invalidatePlugins","clipArc","pixelMargin","angleMargin","closePath","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","avNogSpacingRadius","noSpacingInnerRadius","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","borderRadius","al","halfThickness","innerLimit","computeOuterLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","PI","p8","defineProperties","enumerable","version","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","ak","halfAngle","halfRadius","radiusOffset","translate","drawArc","borderJoinStyle","inner","lineJoin","drawFullCircleBorders","setStyle","lineCap","borderCapStyle","previous","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","stepped","as","tension","cubicInterpolationMode","at","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","am","segments","an","interpolate","ao","_interpolate","ap","aq","ar","interpolated","segmentMethod","path","strokePathDirect","inRange$1","hitRadius","capBezierPoints","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","au","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","rect","inflateRect","refRect","BarElement","outer","boundingRects","parseBorderWidth","maxW","maxH","aw","parseBorderRadius","ax","maxR","enableBorder","topLeft","topRight","bottomLeft","bottomRight","addRectPath","hasRadius","av","cleanDecimatedDataset","defineProperty","cleanDecimatedData","_getBounds","az","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_pointsFromSegments","linePoints","_shouldApplyFill","simpleArc","_drawfill","_getTarget","getLineByIndex","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","below","unshift","addPointsBelow","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","computeBoundary","computeCircularBoundary","computeLinearBoundary","lineOpts","fillOption","above","doFill","clipVertical","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","ay","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","itemWidth","measureText","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","rtl","rtlHelper","aA","hitbox","leftForLtr","_draw","cursor","defaultColor","fontColor","halfFontSize","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","aE","yBoxTop","xBoxLeft","fillText","strikethrough","aB","textDirection","textWidth","setWidth","realX","aC","aD","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","hoveredItem","sameItem","Title","_padding","textSize","_drawArgs","fontOpts","WeakMap","positioners","average","eventPosition","nearestElement","aG","tp","pushOrConcat","toPush","apply","splitNewlines","str","String","getTooltipSize","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineAlignment","yAlign","determineYAlign","xAlign","determineXAlign","chartWidth","doesNotFitWithAlign","caret","caretSize","caretPadding","getBackgroundPoint","alignment","cornerRadius","paddingAndSize","alignX","alignY","getAlignedX","overrideCallbacks","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","createTooltipItem","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","pt","titleAlign","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","textColor","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","_element","afterInit","_args","afterDraw","afterEvent","aF","labelCount","Decimation","algorithm","beforeElementsUpdate","decimated","xAxis","getStartAndCountOfVisiblePointsSimplified","pointCount","threshold","configurable","lttbDecimation","maxAreaPoint","maxArea","nextA","samples","bucketWidth","sampledIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","xMax","dx","lastIndex","intermediateIndex1","intermediateIndex2","Filler","afterDatasetsUpdate","sources","_decodeFill","firstCh","parseFillOption","parseFloat","$filler","_resolveTarget","propagate","visited","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","ci","SubTitle","createTitle","titleBlock","addIfString","addedLabels","CategoryScale","_startValue","_valueRange","_addedLabels","added","isFinite","findOrAddLabel","lastIndexOf","relativeLabelSize","minSpacing","rad","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","maxTicks","stepSize","computeTickLimit","numericGeneratorOptions","precision","maxDigits","includeBounds","dataRange","generateTicks$1","generationOptions","niceMin","niceMax","numSpaces","maxSpaces","rmin","rmax","countDefined","aI","aJ","aK","decimalPlaces","aL","aH","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","generateTicks","endExp","endSignificand","significand","lastTick","getTickBackdropHeight","determineLimits","pathRadiusLine","getPointPosition","RadialLinearScale","drawingArea","_pointLabels","_pointLabelItems","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","plFont","aM","hLimits","vLimits","updateLimits","setCenterPoint","buildPointLabelItems","extra","outerDistance","pointLabelPosition","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","rotate","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","input","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","aO","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","aN","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","formatter","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","normalize","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables"],"sourceRoot":""}