{"version":3,"file":"index-C5yzv2yf.js","sources":["../../../node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","../../../node_modules/render-jsx/dist/es6/common/errors/unresolved-ref.error.js","../../../node_modules/render-jsx/dist/es6/common/errors/ref-already-resolved.error.js","../../../node_modules/render-jsx/dist/es6/common/ref.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/create.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/fragment.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/leaf.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/append.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/prop.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/content.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/post-create.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/plugin/post-render.plugin.js","../../../node_modules/render-jsx/dist/es6/renderer/renderer.js","../../../node_modules/render-jsx/dist/es6/common/plugins/content-prop.plugin.js","../../../node_modules/render-jsx/dist/es6/common/plugins/ref.plugin.js","../../../node_modules/render-jsx/dist/es6/common/plugins/index.js","../../../node_modules/render-jsx/dist/es6/component/processor.js","../../../node_modules/render-jsx/dist/es6/component/plugins/component.plugin.js","../../../node_modules/render-jsx/dist/es6/component/plugins/func-comp.plugin.js","../../../node_modules/render-jsx/dist/es6/component/plugins/live-component.processor.js","../../../node_modules/render-jsx/dist/es6/component/plugins/index.js","../../../node_modules/render-jsx/dist/es6/dom/util/life-cycle.js","../../../node_modules/render-jsx/dist/es6/dom/util/input-value.js","../../../node_modules/render-jsx/dist/es6/dom/component/fragment-lcmarker.processor.js","../../../node_modules/render-jsx/dist/es6/dom/errors/unrecognized-tag.error.js","../../../node_modules/render-jsx/dist/es6/dom/renderer.js","../../../node_modules/render-jsx/dist/es6/dom/live-renderer.js","../../../node_modules/render-jsx/dist/es6/dom/plugins/class.plugin.js","../../../node_modules/render-jsx/dist/es6/dom/plugins/event-handler.plugin.js","../../../node_modules/render-jsx/dist/es6/dom/plugins/input-state.plugin.js","../../../node_modules/render-jsx/dist/es6/dom/plugins/object-value.plugin.js","../../../node_modules/render-jsx/dist/es6/dom/plugins/style.plugin.js","../../../node_modules/render-jsx/dist/es6/dom/plugins/index.js","../../../node_modules/render-jsx/dist/es6/dom/index.js"],"sourcesContent":["/*!\n * chartjs-plugin-datalabels v2.2.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2022 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n if (typeof window !== 'undefined') {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n }\n\n // devicePixelRatio is undefined on IE10\n // https://stackoverflow.com/a/20204180/8837887\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n var screen = window.screen;\n if (screen) {\n return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n }\n }\n\n return 1;\n}());\n\nvar utils = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(inputs) {\n var lines = [];\n var input;\n\n inputs = [].concat(inputs);\n while (inputs.length) {\n input = inputs.pop();\n if (typeof input === 'string') {\n lines.unshift.apply(lines, input.split('\\n'));\n } else if (Array.isArray(input)) {\n inputs.push.apply(inputs, input);\n } else if (!isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(ctx, lines, font) {\n var items = [].concat(lines);\n var ilen = items.length;\n var prev = ctx.font;\n var width = 0;\n var i;\n\n ctx.font = font.string;\n\n for (i = 0; i < ilen; ++i) {\n width = Math.max(ctx.measureText(items[i]).width, width);\n }\n\n ctx.font = prev;\n\n return {\n height: ilen * font.lineHeight,\n width: width\n };\n },\n\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(a0, a1) {\n var prev = a0.slice();\n var updates = [];\n var i, j, ilen, v;\n\n for (i = 0, ilen = a1.length; i < ilen; ++i) {\n v = a1[i];\n j = prev.indexOf(v);\n\n if (j === -1) {\n updates.push([v, 1]);\n } else {\n prev.splice(j, 1);\n }\n }\n\n for (i = 0, ilen = prev.length; i < ilen; ++i) {\n updates.push([prev[i], -1]);\n }\n\n return updates;\n },\n\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(v) {\n return Math.round(v * devicePixelRatio) / devicePixelRatio;\n }\n};\n\nfunction orient(point, origin) {\n var x0 = origin.x;\n var y0 = origin.y;\n\n if (x0 === null) {\n return {x: 0, y: -1};\n }\n if (y0 === null) {\n return {x: 1, y: 0};\n }\n\n var dx = point.x - x0;\n var dy = point.y - y0;\n var ln = Math.sqrt(dx * dx + dy * dy);\n\n return {\n x: ln ? dx / ln : 0,\n y: ln ? dy / ln : -1\n };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n switch (align) {\n case 'center':\n vx = vy = 0;\n break;\n case 'bottom':\n vx = 0;\n vy = 1;\n break;\n case 'right':\n vx = 1;\n vy = 0;\n break;\n case 'left':\n vx = -1;\n vy = 0;\n break;\n case 'top':\n vx = 0;\n vy = -1;\n break;\n case 'start':\n vx = -vx;\n vy = -vy;\n break;\n case 'end':\n // keep natural orientation\n break;\n default:\n // clockwise rotation (in degree)\n align *= (Math.PI / 180);\n vx = Math.cos(align);\n vy = Math.sin(align);\n break;\n }\n\n return {\n x: x,\n y: y,\n vx: vx,\n vy: vy\n };\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n var res = R_INSIDE;\n\n if (x < rect.left) {\n res |= R_LEFT;\n } else if (x > rect.right) {\n res |= R_RIGHT;\n }\n if (y < rect.top) {\n res |= R_TOP;\n } else if (y > rect.bottom) {\n res |= R_BOTTOM;\n }\n\n return res;\n}\n\nfunction clipped(segment, area) {\n var x0 = segment.x0;\n var y0 = segment.y0;\n var x1 = segment.x1;\n var y1 = segment.y1;\n var r0 = region(x0, y0, area);\n var r1 = region(x1, y1, area);\n var r, x, y;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(r0 | r1) || (r0 & r1)) {\n // both points inside or on the same side: no clipping\n break;\n }\n\n // at least one point is outside\n r = r0 || r1;\n\n if (r & R_TOP) {\n x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n y = area.top;\n } else if (r & R_BOTTOM) {\n x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n y = area.bottom;\n } else if (r & R_RIGHT) {\n y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n x = area.right;\n } else if (r & R_LEFT) {\n y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n x = area.left;\n }\n\n if (r === r0) {\n x0 = x;\n y0 = y;\n r0 = region(x0, y0, area);\n } else {\n x1 = x;\n y1 = y;\n r1 = region(x1, y1, area);\n }\n }\n\n return {\n x0: x0,\n x1: x1,\n y0: y0,\n y1: y1\n };\n}\n\nfunction compute$1(range, config) {\n var anchor = config.anchor;\n var segment = range;\n var x, y;\n\n if (config.clamp) {\n segment = clipped(segment, config.area);\n }\n\n if (anchor === 'start') {\n x = segment.x0;\n y = segment.y0;\n } else if (anchor === 'end') {\n x = segment.x1;\n y = segment.y1;\n } else {\n x = (segment.x0 + segment.x1) / 2;\n y = (segment.y0 + segment.y1) / 2;\n }\n\n return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n arc: function(el, config) {\n var angle = (el.startAngle + el.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = el.innerRadius;\n var r1 = el.outerRadius;\n\n return compute$1({\n x0: el.x + vx * r0,\n y0: el.y + vy * r0,\n x1: el.x + vx * r1,\n y1: el.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(el, config) {\n var v = orient(el, config.origin);\n var rx = v.x * el.options.radius;\n var ry = v.y * el.options.radius;\n\n return compute$1({\n x0: el.x - rx,\n y0: el.y - ry,\n x1: el.x + rx,\n y1: el.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n bar: function(el, config) {\n var v = orient(el, config.origin);\n var x = el.x;\n var y = el.y;\n var sx = 0;\n var sy = 0;\n\n if (el.horizontal) {\n x = Math.min(el.x, el.base);\n sx = Math.abs(el.base - el.x);\n } else {\n y = Math.min(el.y, el.base);\n sy = Math.abs(el.base - el.y);\n }\n\n return compute$1({\n x0: x,\n y0: y + sy,\n x1: x + sx,\n y1: y,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n fallback: function(el, config) {\n var v = orient(el, config.origin);\n\n return compute$1({\n x0: el.x,\n y0: el.y,\n x1: el.x + (el.width || 0),\n y1: el.y + (el.height || 0),\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n var borderWidth = model.borderWidth || 0;\n var padding = model.padding;\n var th = model.size.height;\n var tw = model.size.width;\n var tx = -tw / 2;\n var ty = -th / 2;\n\n return {\n frame: {\n x: tx - padding.left - borderWidth,\n y: ty - padding.top - borderWidth,\n w: tw + padding.width + borderWidth * 2,\n h: th + padding.height + borderWidth * 2\n },\n text: {\n x: tx,\n y: ty,\n w: tw,\n h: th\n }\n };\n}\n\nfunction getScaleOrigin(el, context) {\n var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n if (!scale) {\n return null;\n }\n\n if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n return {x: scale.xCenter, y: scale.yCenter};\n }\n\n var pixel = scale.getBasePixel();\n return el.horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof ArcElement) {\n return positioners.arc;\n }\n if (el instanceof PointElement) {\n return positioners.point;\n }\n if (el instanceof BarElement) {\n return positioners.bar;\n }\n return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n var HALF_PI = Math.PI / 2;\n\n if (radius) {\n var r = Math.min(radius, h / 2, w / 2);\n var left = x + r;\n var top = y + r;\n var right = x + w - r;\n var bottom = y + h - r;\n\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -Math.PI, 0);\n ctx.arc(left, bottom, r, 0, Math.PI);\n } else {\n ctx.arc(left, top, r, -Math.PI, Math.PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, w, h);\n }\n}\n\nfunction drawFrame(ctx, rect, model) {\n var bgColor = model.backgroundColor;\n var borderColor = model.borderColor;\n var borderWidth = model.borderWidth;\n\n if (!bgColor && (!borderColor || !borderWidth)) {\n return;\n }\n\n ctx.beginPath();\n\n drawRoundedRect(\n ctx,\n rasterize(rect.x) + borderWidth / 2,\n rasterize(rect.y) + borderWidth / 2,\n rasterize(rect.w) - borderWidth,\n rasterize(rect.h) - borderWidth,\n model.borderRadius);\n\n ctx.closePath();\n\n if (bgColor) {\n ctx.fillStyle = bgColor;\n ctx.fill();\n }\n\n if (borderColor && borderWidth) {\n ctx.strokeStyle = borderColor;\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = 'miter';\n ctx.stroke();\n }\n}\n\nfunction textGeometry(rect, align, font) {\n var h = font.lineHeight;\n var w = rect.w;\n var x = rect.x;\n var y = rect.y + h / 2;\n\n if (align === 'center') {\n x += w / 2;\n } else if (align === 'end' || align === 'right') {\n x += w;\n }\n\n return {\n h: h,\n w: w,\n x: x,\n y: y\n };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n var shadow = ctx.shadowBlur;\n var stroked = cfg.stroked;\n var x = rasterize(cfg.x);\n var y = rasterize(cfg.y);\n var w = rasterize(cfg.w);\n\n if (stroked) {\n ctx.strokeText(text, x, y, w);\n }\n\n if (cfg.filled) {\n if (shadow && stroked) {\n // Prevent drawing shadow on both the text stroke and fill, so\n // if the text is stroked, remove the shadow for the text fill.\n ctx.shadowBlur = 0;\n }\n\n ctx.fillText(text, x, y, w);\n\n if (shadow && stroked) {\n ctx.shadowBlur = shadow;\n }\n }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n var align = model.textAlign;\n var color = model.color;\n var filled = !!color;\n var font = model.font;\n var ilen = lines.length;\n var strokeColor = model.textStrokeColor;\n var strokeWidth = model.textStrokeWidth;\n var stroked = strokeColor && strokeWidth;\n var i;\n\n if (!ilen || (!filled && !stroked)) {\n return;\n }\n\n // Adjust coordinates based on text alignment and line height\n rect = textGeometry(rect, align, font);\n\n ctx.font = font.string;\n ctx.textAlign = align;\n ctx.textBaseline = 'middle';\n ctx.shadowBlur = model.textShadowBlur;\n ctx.shadowColor = model.textShadowColor;\n\n if (filled) {\n ctx.fillStyle = color;\n }\n if (stroked) {\n ctx.lineJoin = 'round';\n ctx.lineWidth = strokeWidth;\n ctx.strokeStyle = strokeColor;\n }\n\n for (i = 0, ilen = lines.length; i < ilen; ++i) {\n drawTextLine(ctx, lines[i], {\n stroked: stroked,\n filled: filled,\n w: rect.w,\n x: rect.x,\n y: rect.y + rect.h * i\n });\n }\n}\n\nvar Label = function(config, ctx, el, index) {\n var me = this;\n\n me._config = config;\n me._index = index;\n me._model = null;\n me._rects = null;\n me._ctx = ctx;\n me._el = el;\n};\n\nmerge(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var font = toFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, defaults$1.color], context, index);\n\n return {\n align: resolve([config.align, 'center'], context, index),\n anchor: resolve([config.anchor, 'center'], context, index),\n area: context.chart.chartArea,\n backgroundColor: resolve([config.backgroundColor, null], context, index),\n borderColor: resolve([config.borderColor, null], context, index),\n borderRadius: resolve([config.borderRadius, 0], context, index),\n borderWidth: resolve([config.borderWidth, 0], context, index),\n clamp: resolve([config.clamp, false], context, index),\n clip: resolve([config.clip, false], context, index),\n color: color,\n display: display,\n font: font,\n lines: lines,\n offset: resolve([config.offset, 4], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el, context),\n padding: toPadding(resolve([config.padding, 4], context, index)),\n positioner: getPositioner(me._el),\n rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n size: utils.textSize(me._ctx, lines, font),\n textAlign: resolve([config.textAlign, 'start'], context, index),\n textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n textShadowColor: resolve([config.textShadowColor, color], context, index),\n textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n };\n },\n\n update: function(context) {\n var me = this;\n var model = null;\n var rects = null;\n var index = me._index;\n var config = me._config;\n var value, label, lines;\n\n // We first resolve the display option (separately) to avoid computing\n // other options in case the label is hidden (i.e. display: false).\n var display = resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = valueOrDefault(callback(config.formatter, [value, context]), value);\n lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n if (lines.length) {\n model = me._modelize(display, lines, config, context);\n rects = boundingRects(model);\n }\n }\n\n me._model = model;\n me._rects = rects;\n },\n\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n\n visible: function() {\n return this._model && this._model.opacity;\n },\n\n model: function() {\n return this._model;\n },\n\n draw: function(chart, center) {\n var me = this;\n var ctx = chart.ctx;\n var model = me._model;\n var rects = me._rects;\n var area;\n\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n if (model.clip) {\n area = model.area;\n ctx.beginPath();\n ctx.rect(\n area.left,\n area.top,\n area.right - area.left,\n area.bottom - area.top);\n ctx.clip();\n }\n\n ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n ctx.translate(rasterize(center.x), rasterize(center.y));\n ctx.rotate(model.rotation);\n\n drawFrame(ctx, rects.frame, model);\n drawText(ctx, model.lines, rects.text, model);\n\n ctx.restore();\n }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nfunction projected(points, axis) {\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var origin = axis.origin;\n var i, pt, vx, vy, dp;\n\n for (i = 0; i < points.length; ++i) {\n pt = points[i];\n vx = pt.x - origin.x;\n vy = pt.y - origin.y;\n dp = axis.vx * vx + axis.vy * vy;\n min = Math.min(min, dp);\n max = Math.max(max, dp);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction toAxis(p0, p1) {\n var vx = p1.x - p0.x;\n var vy = p1.y - p0.y;\n var ln = Math.sqrt(vx * vx + vy * vy);\n\n return {\n vx: (p1.x - p0.x) / ln,\n vy: (p1.y - p0.y) / ln,\n origin: p0,\n ln: ln\n };\n}\n\nvar HitBox = function() {\n this._rotation = 0;\n this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\n\nmerge(HitBox.prototype, {\n center: function() {\n var r = this._rect;\n return {\n x: r.x + r.w / 2,\n y: r.y + r.h / 2\n };\n },\n\n update: function(center, rect, rotation) {\n this._rotation = rotation;\n this._rect = {\n x: rect.x + center.x,\n y: rect.y + center.y,\n w: rect.w,\n h: rect.h\n };\n },\n\n contains: function(point) {\n var me = this;\n var margin = 1;\n var rect = me._rect;\n\n point = rotated(point, me.center(), -me._rotation);\n\n return !(point.x < rect.x - margin\n || point.y < rect.y - margin\n || point.x > rect.x + rect.w + margin * 2\n || point.y > rect.y + rect.h + margin * 2);\n },\n\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(other) {\n var r0 = this._points();\n var r1 = other._points();\n var axes = [\n toAxis(r0[0], r0[1]),\n toAxis(r0[0], r0[3])\n ];\n var i, pr0, pr1;\n\n if (this._rotation !== other._rotation) {\n // Only separate with r1 axis if the rotation is different,\n // else it's enough to separate r0 and r1 with r0 axis only!\n axes.push(\n toAxis(r1[0], r1[1]),\n toAxis(r1[0], r1[3])\n );\n }\n\n for (i = 0; i < axes.length; ++i) {\n pr0 = projected(r0, axes[i]);\n pr1 = projected(r1, axes[i]);\n\n if (pr0.max < pr1.min || pr1.max < pr0.min) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n */\n _points: function() {\n var me = this;\n var rect = me._rect;\n var angle = me._rotation;\n var center = me.center();\n\n return [\n rotated({x: rect.x, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n ];\n }\n});\n\nfunction coordinates(el, model, geometry) {\n var point = model.positioner(el, model);\n var vx = point.vx;\n var vy = point.vy;\n\n if (!vx && !vy) {\n // if aligned center, we don't want to offset the center point\n return {x: point.x, y: point.y};\n }\n\n var w = geometry.w;\n var h = geometry.h;\n\n // take in account the label rotation\n var rotation = model.rotation;\n var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n // scale the unit vector (vx, vy) to get at least dx or dy equal to\n // w or h respectively (else we would calculate the distance to the\n // ellipse inscribed in the bounding rect)\n var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n dx *= vx * vs;\n dy *= vy * vs;\n\n // finally, include the explicit offset\n dx += model.offset * vx;\n dy += model.offset * vy;\n\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n}\n\nfunction collide(labels, collider) {\n var i, j, s0, s1;\n\n // IMPORTANT Iterate in the reverse order since items at the end of the\n // list have an higher weight/priority and thus should be less impacted\n // by the overlapping strategy.\n\n for (i = labels.length - 1; i >= 0; --i) {\n s0 = labels[i].$layout;\n\n for (j = i - 1; j >= 0 && s0._visible; --j) {\n s1 = labels[j].$layout;\n\n if (s1._visible && s0._box.intersects(s1._box)) {\n collider(s0, s1);\n }\n }\n }\n\n return labels;\n}\n\nfunction compute(labels) {\n var i, ilen, label, state, geometry, center, proxy;\n\n // Initialize labels for overlap detection\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n // Chart.js 3 removed el._model in favor of getProps(), making harder to\n // abstract reading values in positioners. Also, using string arrays to\n // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n // positioners inefficient in the normal case (i.e. not the final values)\n // and the code a bit ugly, so let's use a Proxy instead.\n proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n geometry = label.geometry();\n center = coordinates(proxy, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n }\n }\n\n // Auto hide overlapping labels\n return collide(labels, function(s0, s1) {\n var h0 = s0._hidable;\n var h1 = s1._hidable;\n\n if ((h0 && h1) || h1) {\n s1._visible = false;\n } else if (h0) {\n s0._visible = false;\n }\n });\n}\n\nvar layout = {\n prepare: function(datasets) {\n var labels = [];\n var i, j, ilen, jlen, label;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n label = datasets[i][j];\n labels.push(label);\n label.$layout = {\n _box: new HitBox(),\n _hidable: false,\n _visible: true,\n _set: i,\n _idx: label._index\n };\n }\n }\n\n // TODO New `z` option: labels with a higher z-index are drawn\n // of top of the ones with a lower index. Lowest z-index labels\n // are also discarded first when hiding overlapping labels.\n labels.sort(function(a, b) {\n var sa = a.$layout;\n var sb = b.$layout;\n\n return sa._idx === sb._idx\n ? sb._set - sa._set\n : sb._idx - sa._idx;\n });\n\n this.update(labels);\n\n return labels;\n },\n\n update: function(labels) {\n var dirty = false;\n var i, ilen, label, model, state;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n model = label.model();\n state = label.$layout;\n state._hidable = model && model.display === 'auto';\n state._visible = label.visible();\n dirty |= state._hidable;\n }\n\n if (dirty) {\n compute(labels);\n }\n },\n\n lookup: function(labels, point) {\n var i, state;\n\n // IMPORTANT Iterate in the reverse order since items at the end of\n // the list have an higher z-index, thus should be picked first.\n\n for (i = labels.length - 1; i >= 0; --i) {\n state = labels[i].$layout;\n\n if (state && state._visible && state._box.contains(point)) {\n return labels[i];\n }\n }\n\n return null;\n },\n\n draw: function(chart, labels) {\n var i, ilen, label, state, geometry, center;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n geometry = label.geometry();\n center = coordinates(label._el, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar formatter = function(value) {\n if (isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (isObject(value)) {\n if (!isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!isNullOrUndef(value.r)) {\n label = value.r;\n } else {\n label = '';\n keys = Object.keys(value);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n }\n }\n }\n\n return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n align: 'center',\n anchor: 'center',\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: false,\n clip: false,\n color: undefined,\n display: true,\n font: {\n family: undefined,\n lineHeight: 1.2,\n size: undefined,\n style: undefined,\n weight: null\n },\n formatter: formatter,\n labels: undefined,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n var override = dataset.datalabels;\n var listeners = {};\n var configs = [];\n var labels, keys;\n\n if (override === false) {\n return null;\n }\n if (override === true) {\n override = {};\n }\n\n options = merge({}, [options, override]);\n labels = options.labels || {};\n keys = Object.keys(labels);\n delete options.labels;\n\n if (keys.length) {\n keys.forEach(function(key) {\n if (labels[key]) {\n configs.push(merge({}, [\n options,\n labels[key],\n {_key: key}\n ]));\n }\n });\n } else {\n // Default label if no \"named\" label defined.\n configs.push(options);\n }\n\n // listeners: {: {: }}\n listeners = configs.reduce(function(target, config) {\n each(config.listeners || {}, function(fn, event) {\n target[event] = target[event] || {};\n target[event][config._key || DEFAULT_KEY] = fn;\n });\n\n delete config.listeners;\n return target;\n }, {});\n\n return {\n labels: configs,\n listeners: listeners\n };\n}\n\nfunction dispatchEvent(chart, listeners, label, event) {\n if (!listeners) {\n return;\n }\n\n var context = label.$context;\n var groups = label.$groups;\n var callback$1;\n\n if (!listeners[groups._set]) {\n return;\n }\n\n callback$1 = listeners[groups._set][groups._key];\n if (!callback$1) {\n return;\n }\n\n if (callback(callback$1, [context, event]) === true) {\n // Users are allowed to tweak the given context by injecting values that can be\n // used in scriptable options to display labels differently based on the current\n // event (e.g. highlight an hovered label). That's why we update the label with\n // the output context and schedule a new chart render by setting it dirty.\n chart[EXPANDO_KEY]._dirty = true;\n label.update(context);\n }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label, event) {\n var enter, leave;\n\n if (!previous && !label) {\n return;\n }\n\n if (!previous) {\n enter = true;\n } else if (!label) {\n leave = true;\n } else if (previous !== label) {\n leave = enter = true;\n }\n\n if (leave) {\n dispatchEvent(chart, listeners.leave, previous, event);\n }\n if (enter) {\n dispatchEvent(chart, listeners.enter, label, event);\n }\n}\n\nfunction handleMoveEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var listeners = expando._listeners;\n var previous, label;\n\n if (!listeners.enter && !listeners.leave) {\n return;\n }\n\n if (event.type === 'mousemove') {\n label = layout.lookup(expando._labels, event);\n } else if (event.type !== 'mouseout') {\n return;\n }\n\n previous = expando._hovered;\n expando._hovered = label;\n dispatchMoveEvents(chart, listeners, previous, label, event);\n}\n\nfunction handleClickEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var handlers = expando._listeners.click;\n var label = handlers && layout.lookup(expando._labels, event);\n if (label) {\n dispatchEvent(chart, handlers, label, event);\n }\n}\n\nvar plugin = {\n id: 'datalabels',\n\n defaults: defaults,\n\n beforeInit: function(chart) {\n chart[EXPANDO_KEY] = {\n _actives: []\n };\n },\n\n beforeUpdate: function(chart) {\n var expando = chart[EXPANDO_KEY];\n expando._listened = false;\n expando._listeners = {}; // {: {: {: }}}\n expando._datasets = []; // per dataset labels: [Label[]]\n expando._labels = []; // layouted labels: Label[]\n },\n\n afterDatasetUpdate: function(chart, args, options) {\n var datasetIndex = args.index;\n var expando = chart[EXPANDO_KEY];\n var labels = expando._datasets[datasetIndex] = [];\n var visible = chart.isDatasetVisible(datasetIndex);\n var dataset = chart.data.datasets[datasetIndex];\n var config = configure(dataset, options);\n var elements = args.meta.data || [];\n var ctx = chart.ctx;\n var i, j, ilen, jlen, cfg, key, el, label;\n\n ctx.save();\n\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n el = elements[i];\n el[EXPANDO_KEY] = [];\n\n if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n cfg = config.labels[j];\n key = cfg._key;\n\n label = new Label(cfg, ctx, el, i);\n label.$groups = {\n _set: datasetIndex,\n _key: key || DEFAULT_KEY\n };\n label.$context = {\n active: false,\n chart: chart,\n dataIndex: i,\n dataset: dataset,\n datasetIndex: datasetIndex\n };\n\n label.update(label.$context);\n el[EXPANDO_KEY].push(label);\n labels.push(label);\n }\n }\n }\n\n ctx.restore();\n\n // Store listeners at the chart level and per event type to optimize\n // cases where no listeners are registered for a specific event.\n merge(expando._listeners, config.listeners, {\n merger: function(event, target, source) {\n target[event] = target[event] || {};\n target[event][args.index] = source[event];\n expando._listened = true;\n }\n });\n },\n\n afterUpdate: function(chart) {\n chart[EXPANDO_KEY]._labels = layout.prepare(chart[EXPANDO_KEY]._datasets);\n },\n\n // Draw labels on top of all dataset elements\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n afterDatasetsDraw: function(chart) {\n layout.draw(chart, chart[EXPANDO_KEY]._labels);\n },\n\n beforeEvent: function(chart, args) {\n // If there is no listener registered for this chart, `listened` will be false,\n // meaning we can immediately ignore the incoming event and avoid useless extra\n // computation for users who don't implement label interactions.\n if (chart[EXPANDO_KEY]._listened) {\n var event = args.event;\n switch (event.type) {\n case 'mousemove':\n case 'mouseout':\n handleMoveEvents(chart, event);\n break;\n case 'click':\n handleClickEvents(chart, event);\n break;\n }\n }\n },\n\n afterEvent: function(chart) {\n var expando = chart[EXPANDO_KEY];\n var previous = expando._actives;\n var actives = expando._actives = chart.getActiveElements();\n var updates = utils.arrayDiff(previous, actives);\n var i, ilen, j, jlen, update, label, labels;\n\n for (i = 0, ilen = updates.length; i < ilen; ++i) {\n update = updates[i];\n if (update[1]) {\n labels = update[0].element[EXPANDO_KEY] || [];\n for (j = 0, jlen = labels.length; j < jlen; ++j) {\n label = labels[j];\n label.$context.active = (update[1] === 1);\n label.update(label.$context);\n }\n }\n }\n\n if (expando._dirty || updates.length) {\n layout.update(expando._labels);\n chart.render();\n }\n\n delete expando._dirty;\n }\n};\n\nexport { plugin as default };\n","/*global RefLike*/\nexport class UnresolvedRefError extends Error {\n /*istanbul ignore next*/\n constructor(ref) {\n super('Referenced value read before it was resolved.');\n this.ref = ref;\n Object.setPrototypeOf(this, UnresolvedRefError.prototype);\n }\n}\n//# sourceMappingURL=unresolved-ref.error.js.map","/*global RefLike*/\nexport class RefAlreadyResolvedError extends Error {\n /*istanbul ignore next*/\n constructor(ref) {\n super('Attempting to resolve an already-resolved reference.');\n this.ref = ref;\n Object.setPrototypeOf(this, RefAlreadyResolvedError.prototype);\n }\n}\n//# sourceMappingURL=ref-already-resolved.error.js.map","/*global RefLike*/\nimport { UnresolvedRefError, RefAlreadyResolvedError } from './errors';\nexport class Ref {\n constructor() {\n this._resolved = false;\n }\n get resolved() {\n return this.isResolved();\n }\n isResolved() {\n return this._resolved;\n }\n get $() {\n if (!this.isResolved()) {\n throw new UnresolvedRefError(this);\n }\n return this._$;\n }\n resolve(t) {\n if (this.isResolved()) {\n throw new RefAlreadyResolvedError(this);\n }\n this._$ = t;\n this._resolved = true;\n }\n}\nexport function ref() {\n return new Ref();\n}\n//# sourceMappingURL=ref.js.map","import { ref } from '../../common/ref';\nexport class Plugin {\n constructor() {\n this._renderer = ref();\n }\n plug(renderer) {\n this._renderer.resolve(renderer);\n }\n renderer() {\n return this._renderer.$;\n }\n}\nPlugin.PriorityMax = 1;\nPlugin.PriorityFallback = 0;\nexport function isRendererWithPlugins(renderer) {\n return !!renderer.plugins && Array.isArray(renderer.plugins);\n}\n//# sourceMappingURL=plugin.js.map","export function isCreatePlugin(plugin) {\n return !!plugin.create && typeof plugin.create === 'function';\n}\n//# sourceMappingURL=create.plugin.js.map","export function isFragmentPlugin(plugin) {\n return !!plugin.fragment && typeof plugin.fragment === 'function';\n}\n//# sourceMappingURL=fragment.plugin.js.map","export function isLeafPlugin(plugin) {\n return !!plugin.leaf && typeof plugin.leaf === 'function';\n}\n//# sourceMappingURL=leaf.plugin.js.map","export function isAppendPlugin(plugin) {\n return !!plugin.append && typeof plugin.append === 'function';\n}\n//# sourceMappingURL=append.plugin.js.map","export function isPropPlugin(plugin) {\n return !!plugin.setProp && typeof plugin.setProp === 'function';\n}\n//# sourceMappingURL=prop.plugin.js.map","export function isContentPlugin(plugin) {\n return !!plugin.setContent && typeof plugin.setContent === 'function';\n}\n//# sourceMappingURL=content.plugin.js.map","export function isPostCreatePlugin(plugin) {\n return !!plugin.postCreate && typeof plugin.postCreate === 'function';\n}\n//# sourceMappingURL=post-create.plugin.js.map","export function isPostRenderPlugin(plugin) {\n return !!plugin.postRender && typeof plugin.postRender === 'function';\n}\n//# sourceMappingURL=post-render.plugin.js.map","import { isAppendPlugin, isPropPlugin, isContentPlugin, isFragmentPlugin, isCreatePlugin, isPostCreatePlugin, isPostRenderPlugin, isLeafPlugin } from './plugin';\nexport class Renderer {\n constructor(...plugins) {\n this._appendPlugins = [];\n this._createPlugins = [];\n this._propPlugins = [];\n this._contentPlugins = [];\n this._postCreatePlugins = [];\n this._postRenderPlugins = [];\n this._factories = plugins;\n }\n _buildPlugins() {\n if (!this._plugins) {\n this._plugins = this._factories.map(f => f()).sort((a, b) => b.priority() - a.priority());\n this._plugins.forEach(p => {\n p.plug(this);\n if (isAppendPlugin(p)) {\n this._appendPlugins.push(p);\n }\n if (isContentPlugin(p)) {\n this._contentPlugins.push(p);\n }\n if (isPropPlugin(p)) {\n this._propPlugins.push(p);\n }\n if (isCreatePlugin(p)) {\n this._createPlugins.push(p);\n }\n if (isPostCreatePlugin(p)) {\n this._postCreatePlugins.push(p);\n }\n if (isPostRenderPlugin(p)) {\n this._postRenderPlugins.push(p);\n }\n if (isLeafPlugin(p) && !this._leafPlugin) {\n this._leafPlugin = p;\n }\n if (isFragmentPlugin(p) && !this._fragmentPlugin) {\n this._fragmentPlugin = p;\n }\n });\n }\n return this;\n }\n get plugins() { return this._buildPlugins() && this._plugins; }\n get appendPlugins() { return this._buildPlugins() && this._appendPlugins; }\n get contentPlugins() { return this._buildPlugins() && this._contentPlugins; }\n get propPlugins() { return this._buildPlugins() && this._propPlugins; }\n get createPlugins() { return this._buildPlugins() && this._createPlugins; }\n get postCreatePlugins() { return this._buildPlugins() && this._postCreatePlugins; }\n get postRenderPlugins() { return this._buildPlugins() && this._postRenderPlugins; }\n get leafPlugin() { return this._buildPlugins() && this._leafPlugin; }\n get fragmentPlugin() { return this._buildPlugins() && this._fragmentPlugin; }\n plug(...plugins) {\n return this.clone(...this._factories, ...plugins);\n }\n append(target, host) {\n if (!this.appendPlugins.some(p => p.append(target, host))) {\n this.fallbackAppend(target, host);\n }\n }\n setProp(node, prop, target) {\n if (!this.propPlugins.some(p => p.setProp(node, prop, target))) {\n this.fallbackSetProp(node, prop, target);\n }\n }\n setContent(node, target) {\n if (!this.contentPlugins.some(p => p.setContent(node, target))) {\n this.fallbackSetContent(node, target);\n }\n }\n get fragment() {\n const plugin = this.fragmentPlugin;\n return plugin ? plugin.fragment() : this.fallbackFragment();\n }\n leaf() {\n const plugin = this.leafPlugin;\n return plugin ? plugin.leaf() : this.fallbackLeaf();\n }\n create(tag, props, ...children) {\n let candidate = undefined;\n for (const p of this.createPlugins) {\n candidate = p.create(tag, props, ...children);\n if (candidate) {\n break;\n }\n }\n if (!candidate) {\n candidate = this.fallbackCreate(tag, props);\n if (props) {\n Object.entries(props).forEach(([prop, target]) => this.setProp(candidate, prop, target));\n }\n children.forEach(child => this.append(child, candidate));\n }\n this.postCreatePlugins.forEach(p => p.postCreate(candidate));\n return candidate;\n }\n render(target) {\n if (typeof target === 'function') {\n return this.render(target.apply(undefined, [this]));\n }\n const _this = this;\n const post = this.postRender(target);\n return {\n after(ref) {\n _this.renderAfter(target, ref);\n post();\n },\n before(ref) {\n _this.renderBefore(target, ref);\n post();\n },\n on(host) {\n _this.renderOn(target, host);\n post();\n },\n target,\n };\n }\n postRender(target) {\n return () => this.postRenderPlugins.forEach(p => p.postRender(target));\n }\n}\n//# sourceMappingURL=renderer.js.map","import { Plugin } from '../../renderer';\nexport class ContentPropPlugin extends Plugin {\n setProp(node, prop, target) {\n if (prop === '_content') {\n this.renderer().setContent(node, target);\n return true;\n }\n return false;\n }\n priority() {\n return Plugin.PriorityFallback;\n }\n}\n//# sourceMappingURL=content-prop.plugin.js.map","import { Plugin } from '../../renderer';\nimport { Ref } from '../ref';\nexport class RefPlugin extends Plugin {\n setProp(node, prop, target) {\n if (prop === '_ref' && target instanceof Ref) {\n target.resolve(node);\n return true;\n }\n return false;\n }\n priority() {\n return Plugin.PriorityFallback;\n }\n}\n//# sourceMappingURL=ref.plugin.js.map","import { ContentPropPlugin } from './content-prop.plugin';\nimport { RefPlugin } from './ref.plugin';\nexport * from './ref.plugin';\nexport * from './content-prop.plugin';\nexport function commonPlugins() {\n return [\n () => new RefPlugin(),\n () => new ContentPropPlugin(),\n ];\n}\n//# sourceMappingURL=index.js.map","import { Plugin } from '../renderer';\nexport class ComponentProcessor extends Plugin {\n}\n//# sourceMappingURL=processor.js.map","import { isRendererWithPlugins, Plugin } from '../../renderer';\nimport { ComponentProcessor } from '../processor';\nexport class ComponentPlugin extends Plugin {\n constructor(...processors) {\n super();\n this.processors = processors;\n }\n plug(renderer) {\n super.plug(renderer);\n this.processors.forEach(p => p.plug(this.renderer()));\n /*istanbul ignore else*/\n if (isRendererWithPlugins(renderer)) {\n renderer.plugins.forEach(p => {\n if (p instanceof ComponentProcessor) {\n this.processors.push(p);\n }\n });\n }\n this.processors = this.processors.sort((a, b) => a.priority() - b.priority());\n }\n create(tag, props, ...children) {\n const data = { tag, props: props || {}, children };\n if (this.match(data)) {\n let provision = {};\n const post = [];\n this.processors.forEach(p => p.process(_provision => provision = Object.assign(Object.assign({}, provision), _provision), _post => post.push(_post), data));\n const $ = this.createComponent(data, provision);\n post.reverse().forEach(p => p($));\n return $;\n }\n else {\n return undefined;\n }\n }\n}\n//# sourceMappingURL=component.plugin.js.map","import { ComponentPlugin } from './component.plugin';\nexport class FunctionalComponentPlugin extends ComponentPlugin {\n createComponent(component, provision) {\n return component.tag.apply(provision, [component.props, this.renderer(), component.children]);\n }\n match(component) {\n return typeof component.tag === 'function';\n }\n priority() {\n return ComponentPlugin.PriorityFallback;\n }\n}\n//# sourceMappingURL=func-comp.plugin.js.map","import { ComponentProcessor } from '../processor';\nexport class LiveComponentProcessor extends ComponentProcessor {\n process(provide, post) {\n const renderer = this.renderer();\n const hooks = [];\n provide({\n onBind: (fn) => hooks.push({ bind: fn }),\n onClear: (fn) => hooks.push({ clear: fn }),\n });\n post(node => {\n hooks.forEach(hook => renderer.hook(node, hook));\n });\n }\n priority() {\n return ComponentProcessor.PriorityFallback;\n }\n}\n//# sourceMappingURL=live-component.processor.js.map","import { FunctionalComponentPlugin } from './func-comp.plugin';\nimport { LiveComponentProcessor } from './live-component.processor';\nexport * from './component.plugin';\nexport * from './func-comp.plugin';\nexport * from './live-component.processor';\nexport function componentPlugins() {\n return [\n () => new FunctionalComponentPlugin(),\n () => new LiveComponentProcessor(),\n ];\n}\n//# sourceMappingURL=index.js.map","export function lifeCycleInfo(node, createIfNonExistent = false) {\n const _node = node;\n if (node.nodeType === node.DOCUMENT_FRAGMENT_NODE) {\n return fragmentLifeCycleInfo(node, createIfNonExistent);\n }\n else {\n if (_node.lifecycle) {\n return _node.lifecycle;\n }\n else if (createIfNonExistent) {\n _node.lifecycle = { bound: false };\n return _node.lifecycle;\n }\n }\n}\nexport function fragmentLifeCycleInfo(fragment, createIfNonExistent) {\n var _a;\n let marker = getLifeCycleMarker(fragment);\n /*istanbul ignore if*/\n if (marker) {\n return lifeCycleInfo(marker, createIfNonExistent);\n }\n else if (createIfNonExistent) {\n marker = (_a = fragment.ownerDocument) === null || _a === void 0 ? void 0 : _a.createTextNode('');\n setLifeCycleMarker(fragment, marker);\n return lifeCycleInfo(marker, true);\n }\n}\nexport function setLifeCycleMarker(fragment, marker) {\n fragment.lifecycleMarker = marker;\n if (!fragment.contains(marker)) {\n fragment.appendChild(marker);\n }\n}\nexport function getLifeCycleMarker(fragment) {\n return fragment.lifecycleMarker;\n}\nexport function lifeCycleClear(node) {\n const lifecycle = lifeCycleInfo(node);\n if (lifecycle) {\n /*istanbul ignore next*/\n if (lifecycle.cleared) {\n return;\n }\n lifecycle.cleared = true;\n if (lifecycle.clears) {\n for (let i = 0, clear = lifecycle.clears[i]; i < lifecycle.clears.length; clear = lifecycle.clears[++i]) {\n clear();\n }\n lifecycle.clears = undefined;\n }\n }\n const children = node.childNodes;\n for (let i = 0, child = children.item(i); i < children.length; child = children.item(++i)) {\n lifeCycleClear(child);\n }\n}\nexport function lifeCycleBind(node) {\n const lifecycle = lifeCycleInfo(node);\n if (lifecycle) {\n /*istanbul ignore next*/\n if (lifecycle.bound) {\n return;\n }\n lifecycle.bound = true;\n if (lifecycle.binds) {\n for (let i = 0, bind = lifecycle.binds[i]; i < lifecycle.binds.length; bind = lifecycle.binds[++i]) {\n bind();\n }\n }\n lifecycle.binds = undefined;\n }\n const children = node.childNodes;\n for (let i = 0, child = children.item(i); i < children.length; child = children.item(++i)) {\n lifeCycleBind(child);\n }\n}\nexport function attachLifeCycleHook(hook, node) {\n const lifecycle = lifeCycleInfo(node, true);\n if (hook.bind) {\n (lifecycle.binds || (lifecycle.binds = [])).push(hook.bind);\n }\n if (hook.clear) {\n (lifecycle.clears || (lifecycle.clears = [])).push(hook.clear);\n }\n}\n//# sourceMappingURL=life-cycle.js.map","export function setOptionObjectValue($, value) {\n $._value = value;\n}\nexport function getOptionObjectValue($) {\n return $._value;\n}\nexport function getInputValue($) {\n if ($.nodeName === 'INPUT') {\n if ($.type === 'number') {\n return parseFloat($.value);\n }\n else if ($.type === 'checkbox' || $.type === 'radio') {\n return $.checked;\n }\n else {\n return $.value;\n }\n }\n else if ($.nodeName === 'SELECT') {\n const s = $;\n const selected = Array.from(s.selectedOptions).map(option => getOptionObjectValue(option)\n || option.value\n || option.text);\n return s.multiple ? selected : selected[0];\n }\n else {\n return $.value;\n }\n}\nexport function setInputValue($, value) {\n if ($.nodeName === 'INPUT') {\n if ($.type === 'checkbox' || $.type === 'radio') {\n $.checked = !!value;\n }\n else {\n $.value = value;\n }\n }\n else if ($.nodeName === 'SELECT') {\n const s = $;\n const selected = Array.isArray(value) ? value : [value];\n Array.from(s.options).forEach(option => {\n option.selected = ((getOptionObjectValue(option) && selected.includes(getOptionObjectValue(option)))\n || (option.value && selected.includes(option.value))\n || (!option.value && selected.includes(option.text)));\n });\n }\n else {\n $.value = value;\n }\n}\n//# sourceMappingURL=input-value.js.map","import { Ref } from '../../common';\nimport { ComponentProcessor } from '../../component';\nimport { setLifeCycleMarker } from '../util';\nexport class FragmentLifeCycleMarkerComponentProcessor extends ComponentProcessor {\n process(provide, post) {\n let marker = undefined;\n provide({\n setLifeCycleMarker: (node) => marker = node\n });\n post(node => {\n if (node.nodeType === node.DOCUMENT_FRAGMENT_NODE && marker) {\n if (marker instanceof Ref) {\n setLifeCycleMarker(node, marker.$);\n }\n else {\n setLifeCycleMarker(node, marker);\n }\n }\n });\n }\n priority() {\n return ComponentProcessor.PriorityFallback +\n (ComponentProcessor.PriorityMax - ComponentProcessor.PriorityFallback) / 100;\n }\n}\n//# sourceMappingURL=fragment-lcmarker.processor.js.map","export class UnrecognizedTagError extends Error {\n /*istanbul ignore next*/\n constructor(tag) {\n super(`Given tag is not recognized: ${tag}`);\n }\n}\n//# sourceMappingURL=unrecognized-tag.error.js.map","import { isPostRenderPlugin, Renderer } from '../renderer';\nimport { UnrecognizedTagError } from './errors';\nexport class DOMRenderer extends Renderer {\n constructor(dom = window, ...plugins) {\n super(...(typeof dom === 'function' ? [dom, ...plugins] : plugins));\n if (!dom || typeof dom === 'function') {\n this.dom = window;\n }\n else {\n this.dom = dom;\n }\n }\n get document() { return this.dom.document; }\n fallbackAppend(target, host) {\n if (target instanceof this.dom.Node) {\n host.appendChild(target);\n }\n else if (Array.isArray(target)) {\n target.forEach(child => this.append(child, host));\n }\n else {\n host.appendChild(this.document.createTextNode(`${target}`));\n }\n }\n fallbackSetProp(node, prop, target) {\n if (node instanceof this.dom.HTMLElement) {\n if (typeof target === 'boolean') {\n if (target) {\n node.setAttribute(prop, '');\n }\n else {\n node.removeAttribute(prop);\n }\n }\n else {\n node.setAttribute(prop, `${target}`);\n }\n }\n }\n fallbackSetContent(node, target) {\n if (node instanceof this.dom.HTMLElement) {\n node.innerHTML = `${target}`;\n }\n else {\n node.textContent = `${target}`;\n }\n }\n fallbackFragment() {\n return this.document.createDocumentFragment();\n }\n fallbackLeaf() {\n return this.document.createTextNode('');\n }\n fallbackCreate(tag, props) {\n if (!(tag instanceof this.dom.Node || typeof tag === 'string')) {\n throw new UnrecognizedTagError(tag);\n }\n if (tag instanceof this.dom.Node) {\n return tag;\n }\n else if (props && props.xmlns) {\n return this.document.createElementNS(`${props.xmlns}`, tag);\n }\n else {\n return this.document.createElement(tag);\n }\n }\n renderOn(target, host) {\n host.appendChild(target);\n }\n renderAfter(target, ref) {\n if (ref.parentNode) {\n ref.parentNode.insertBefore(target, ref.nextSibling);\n }\n }\n renderBefore(target, ref) {\n if (ref.parentNode) {\n ref.parentNode.insertBefore(target, ref);\n }\n }\n postRender(target) {\n const post = this.plugins.filter(isPostRenderPlugin);\n if (target instanceof this.dom.DocumentFragment) {\n const children = Array.from(target.childNodes);\n return () => children.forEach(child => { this.postRender(child)(); });\n }\n else {\n return () => post.forEach(p => p.postRender(target));\n }\n }\n remove(node) {\n var _a;\n (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(node);\n }\n clone(...plugins) {\n return new DOMRenderer(this.dom, ...plugins);\n }\n}\n//# sourceMappingURL=renderer.js.map","import { DOMRenderer } from './renderer';\nimport { attachLifeCycleHook, lifeCycleBind, lifeCycleClear } from './util/life-cycle';\nexport class LiveDOMRenderer extends DOMRenderer {\n hook(node, hook) {\n attachLifeCycleHook(hook, node);\n }\n postRender(target) {\n if (target instanceof this.dom.DocumentFragment) {\n return super.postRender(target);\n }\n else {\n return () => {\n if (this.document.contains(target)) {\n lifeCycleBind(target);\n }\n super.postRender(target)();\n };\n }\n }\n plug(...plugins) {\n return super.plug(...plugins);\n }\n clone(...plugins) {\n return new LiveDOMRenderer(this.dom, ...plugins);\n }\n remove(node, temporary) {\n super.remove(node);\n if (!temporary) {\n lifeCycleClear(node);\n }\n }\n}\n//# sourceMappingURL=live-renderer.js.map","import { isRendererWithPlugins, Plugin } from '../../renderer';\nfunction isAddClassPlugin(p) {\n return !!p.addClass && typeof p.addClass === 'function';\n}\nfunction isToggleClassPlugin(p) {\n return !!p.addClassToggle && typeof p.addClassToggle === 'function';\n}\nexport class ClassPlugin extends Plugin {\n plug(renderer) {\n super.plug(renderer);\n if (isRendererWithPlugins(renderer)) {\n this.addClassPlugins = renderer.plugins.filter(isAddClassPlugin);\n this.toggleClassPlugins = renderer.plugins.filter(isToggleClassPlugin);\n }\n }\n priority() {\n return Plugin.PriorityFallback;\n }\n setProp(node, prop, target) {\n if (prop === 'class') {\n if (Array.isArray(target)) {\n target.forEach(cl => {\n let prev = '';\n const sw = (_cl) => {\n if (node.classList.contains(prev)) {\n node.classList.remove(prev);\n }\n node.classList.add(prev = _cl);\n };\n if (this.addClassPlugins &&\n this.addClassPlugins.some(p => isAddClassPlugin(p) && p.addClass(node, cl, sw))) {\n return;\n }\n else if (typeof cl === 'string') {\n node.classList.add(cl);\n }\n else {\n this.setToggleMap(cl, node);\n }\n });\n return true;\n }\n else if ((target === null || target === void 0 ? void 0 : target.constructor) === Object) {\n this.setToggleMap(target, node);\n return true;\n }\n }\n return false;\n }\n setToggleMap(map, node) {\n Object.entries(map).forEach(([cl, clt]) => {\n if (this.toggleClassPlugins &&\n this.toggleClassPlugins.some(p => isToggleClassPlugin(p) && p.addClassToggle(node, cl, clt, v => {\n if (v) {\n node.classList.add(cl);\n }\n else {\n node.classList.remove(cl);\n }\n }))) {\n return;\n }\n else if (!!clt) {\n node.classList.add(cl);\n }\n else {\n node.classList.remove(cl);\n }\n });\n }\n}\n//# sourceMappingURL=class.plugin.js.map","import { Plugin } from '../../renderer';\nexport class EventHandlerPlugin extends Plugin {\n priority() {\n return Plugin.PriorityFallback;\n }\n setProp(node, prop, target) {\n if (prop.startsWith('on') && typeof target === 'function') {\n const event = prop.substr(2).toLowerCase();\n node.addEventListener(event, target);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=event-handler.plugin.js.map","import { Plugin } from '../../renderer';\nimport { getInputValue } from '../util';\nexport class InputStatePlugin extends Plugin {\n priority() {\n return Plugin.PriorityFallback;\n }\n setProp(node, prop, target) {\n if (prop === '_state'\n && (node.nodeName === 'INPUT'\n || node.nodeName === 'TEXTAREA'\n || node.nodeName === 'SELECT')\n && typeof target === 'function') {\n const renderer = this.renderer();\n renderer.hook(node, {\n bind() {\n if (node.nodeName === 'INPUT' &&\n node.type === 'radio' &&\n node.name) {\n const i = node;\n (i.form || renderer.document)\n .querySelectorAll(`input[name=\"${i.name}\"]`)\n .forEach(input => {\n if (input.form === i.form) {\n input.addEventListener('input', () => target(getInputValue(i)));\n }\n });\n }\n else {\n node.addEventListener('input', () => target(getInputValue(node)));\n }\n target(getInputValue(node));\n }\n });\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=input-state.plugin.js.map","import { Plugin } from '../../renderer';\nimport { setOptionObjectValue } from '../util';\nexport class OptionObjectValuePlugin extends Plugin {\n priority() {\n return Plugin.PriorityFallback;\n }\n setProp(node, prop, target) {\n if (prop === '_value' && node.nodeName === 'OPTION') {\n setOptionObjectValue(node, target);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=object-value.plugin.js.map","import { isRendererWithPlugins, Plugin } from '../../renderer';\nfunction isSetStylePlugin(p) {\n return !!p.setStyle && typeof p.setStyle === 'function';\n}\nexport class StylePlugin extends Plugin {\n plug(renderer) {\n super.plug(renderer);\n if (isRendererWithPlugins(renderer)) {\n this.stylePlugins = renderer.plugins.filter(isSetStylePlugin);\n }\n }\n priority() {\n return Plugin.PriorityFallback;\n }\n setProp(node, prop, target) {\n if (prop === 'style' && (target === null || target === void 0 ? void 0 : target.constructor) === Object) {\n Object.entries(target).forEach(([style, value]) => {\n if (this.stylePlugins &&\n this.stylePlugins.some(p => isSetStylePlugin(p) &&\n p.setStyle(node, style, value, s => this.setStyle(node, style, s)))) {\n return;\n }\n else {\n this.setStyle(node, style, value);\n }\n });\n return true;\n }\n return false;\n }\n format(key, value) {\n const split = key.split('.');\n return {\n key: split[0],\n val: value,\n unit: split[1] || '',\n };\n }\n setStyle(node, style, value) {\n if (style === 'transform' && typeof value === 'object') {\n node.style.transform = Object.entries(value)\n .map(e => this.format(...e))\n .map(({ key, val, unit }) => `${key}(${val}${unit})`).join(' ');\n }\n else if (style === 'transition' && typeof value === 'object') {\n node.style.transition = Object.entries(value)\n .map(e => this.format(...e))\n .map(({ key, val, unit }) => `${key} ${val}${unit}`).join(', ');\n }\n else {\n const { key, val, unit } = this.format(style, `${value}`);\n node.style[key] = `${val}${unit}`;\n }\n }\n}\n//# sourceMappingURL=style.plugin.js.map","import { ClassPlugin } from './class.plugin';\nimport { EventHandlerPlugin } from './event-handler.plugin';\nimport { InputStatePlugin } from './input-state.plugin';\nimport { OptionObjectValuePlugin } from './object-value.plugin';\nimport { StylePlugin } from './style.plugin';\nexport * from './event-handler.plugin';\nexport * from './object-value.plugin';\nexport * from './input-state.plugin';\nexport * from './class.plugin';\nexport * from './style.plugin';\nexport function domPlugins() {\n return [\n () => new EventHandlerPlugin(),\n () => new OptionObjectValuePlugin(),\n () => new InputStatePlugin(),\n () => new ClassPlugin(),\n () => new StylePlugin(),\n ];\n}\n//# sourceMappingURL=index.js.map","import { commonPlugins } from '../common';\nimport { componentPlugins } from '../component';\nimport { FragmentLifeCycleMarkerComponentProcessor } from './component';\nimport { LiveDOMRenderer } from './live-renderer';\nimport { domPlugins } from './plugins';\nexport * from './renderer';\nexport * from './util/life-cycle';\nexport * from './live-renderer';\nexport * from './plugins';\nexport * from './component';\nexport class CommonDOMRenderer extends LiveDOMRenderer {\n constructor(dom = window) {\n super(dom, ...componentPlugins(), () => new FragmentLifeCycleMarkerComponentProcessor(), ...commonPlugins(), ...domPlugins());\n }\n}\n//# sourceMappingURL=index.js.map"],"names":["devicePixelRatio","screen","utils","inputs","lines","input","isNullOrUndef","ctx","font","items","ilen","prev","width","i","min","value","max","a0","a1","updates","j","v","orient","point","origin","x0","y0","dx","dy","ln","aligned","x","y","vx","vy","align","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","rect","res","clipped","segment","area","x1","y1","r0","r1","r","compute$1","range","config","anchor","positioners","el","angle","rx","ry","sx","sy","rasterize","boundingRects","model","borderWidth","padding","th","tw","tx","ty","getScaleOrigin","context","scale","pixel","getPositioner","ArcElement","PointElement","BarElement","drawRoundedRect","w","h","radius","HALF_PI","left","top","right","bottom","drawFrame","bgColor","borderColor","textGeometry","drawTextLine","text","cfg","shadow","stroked","drawText","color","filled","strokeColor","strokeWidth","Label","index","me","merge","display","toFont","resolve","defaults$1","toPadding","rects","label","valueOrDefault","callback","chart","center","MIN_INTEGER","MAX_INTEGER","rotated","cos","sin","cx","cy","projected","points","axis","pt","dp","toAxis","p0","p1","HitBox","rotation","margin","other","axes","pr0","pr1","coordinates","geometry","vs","collide","labels","collider","s0","s1","compute","state","proxy","p","h0","h1","layout","datasets","jlen","a","b","sa","sb","dirty","formatter","keys","klen","k","isObject","defaults","EXPANDO_KEY","DEFAULT_KEY","configure","dataset","options","override","listeners","configs","key","target","each","fn","event","dispatchEvent","groups","callback$1","dispatchMoveEvents","previous","enter","leave","handleMoveEvents","expando","handleClickEvents","handlers","plugin","args","datasetIndex","visible","elements","source","actives","update","UnresolvedRefError","ref","RefAlreadyResolvedError","Ref","t","Plugin","renderer","isRendererWithPlugins","isCreatePlugin","isFragmentPlugin","isLeafPlugin","isAppendPlugin","isPropPlugin","isContentPlugin","isPostCreatePlugin","isPostRenderPlugin","Renderer","plugins","f","host","node","prop","tag","props","children","candidate","child","_this","post","ContentPropPlugin","RefPlugin","commonPlugins","ComponentProcessor","ComponentPlugin","processors","data","provision","_provision","_post","$","FunctionalComponentPlugin","component","LiveComponentProcessor","provide","hooks","hook","componentPlugins","lifeCycleInfo","createIfNonExistent","_node","fragmentLifeCycleInfo","fragment","_a","marker","getLifeCycleMarker","setLifeCycleMarker","lifeCycleClear","lifecycle","clear","lifeCycleBind","bind","attachLifeCycleHook","setOptionObjectValue","getOptionObjectValue","getInputValue","s","selected","option","FragmentLifeCycleMarkerComponentProcessor","UnrecognizedTagError","DOMRenderer","dom","LiveDOMRenderer","temporary","isAddClassPlugin","isToggleClassPlugin","ClassPlugin","cl","sw","_cl","map","clt","EventHandlerPlugin","InputStatePlugin","OptionObjectValuePlugin","isSetStylePlugin","StylePlugin","style","split","e","val","unit","domPlugins","CommonDOMRenderer"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]}