{"version":3,"sources":["webpack:///./node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.js","webpack:///./src/apps/dashboard/BaoWidgetsBaseComponents/HorizontalBarChart.js"],"names":["global","factory","module","exports","this","Chart","_interopDefaultLegacy","e","Chart__default","helpers$4","helpers","devicePixelRatio","window","screen","deviceXDPI","logicalXDPI","utils","toTextLines","inputs","input","lines","concat","length","pop","unshift","apply","split","Array","isArray","push","isNullOrUndef","toFontString","font","size","family","style","weight","textSize","ctx","i","items","ilen","prev","width","string","Math","max","measureText","height","lineHeight","parseFont","value","defaults","valueOrDefault","defaultFontSize","defaultFontFamily","options","toLineHeight","defaultFontStyle","bound","min","arrayDiff","a0","a1","j","v","slice","updates","indexOf","splice","rasterize","round","orient","point","origin","x0","x","y0","y","dx","dy","ln","sqrt","aligned","vx","vy","align","PI","cos","sin","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","rect","res","left","right","top","bottom","clipped","segment","area","r","x1","y1","r0","r1","compute$1","range","config","anchor","clamp","positioners","arc","vm","angle","startAngle","endAngle","innerRadius","outerRadius","rx","radius","ry","sx","sy","horizontal","base","abs","fallback","helpers$3","boundingRects","model","borderWidth","padding","th","tw","tx","ty","frame","w","h","text","getScaleOrigin","el","_model","scale","_scale","_xScale","_yScale","undefined","xCenter","yCenter","pixel","getBasePixel","getPositioner","elements","Arc","Point","Rectangle","drawFrame","bgColor","backgroundColor","borderColor","beginPath","canvas","roundedRect","borderRadius","closePath","fillStyle","fill","strokeStyle","lineWidth","lineJoin","stroke","textGeometry","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","fillText","drawText","textAlign","color","strokeColor","textStrokeColor","strokeWidth","textStrokeWidth","textBaseline","textShadowBlur","shadowColor","textShadowColor","Label","index","me","_config","_index","_rects","_ctx","_el","extend","prototype","_modelize","display","context","resolve","defaultFontColor","chart","chartArea","clip","offset","opacity","toPadding","positioner","rotation","update","label","rects","dataset","data","callback","formatter","geometry","visible","draw","center","save","globalAlpha","translate","rotate","restore","helpers$2","MIN_INTEGER","Number","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","rotated","cx","cy","projected","points","axis","pt","dp","toAxis","p0","p1","HitBox","_rotation","_rect","coordinates","view","vs","collide","labels","collider","s0","s1","$layout","_visible","_box","intersects","compute","state","h0","_hidable","h1","contains","margin","other","pr0","pr1","_points","axes","layout","prepare","datasets","jlen","_set","_idx","sort","a","b","sa","sb","dirty","lookup","_view","helpers$1","keys","klen","k","isObject","Object","listeners","EXPANDO_KEY","DEFAULT_KEY","configure","override","datalabels","configs","merge","forEach","key","_key","reduce","target","each","fn","event","dispatchEvent","$context","groups","$groups","_dirty","dispatchMoveEvents","previous","enter","leave","handleMoveEvents","expando","_listeners","type","_labels","_hovered","handleClickEvents","handlers","click","invalidate","animating","animations","animationService","render","duration","lazy","plugins","plugin","id","beforeInit","_actives","beforeUpdate","_listened","_datasets","afterDatasetUpdate","args","datasetIndex","isDatasetVisible","meta","hidden","skip","active","dataIndex","merger","source","afterUpdate","afterDatasetsDraw","beforeEvent","afterEvent","actives","lastActive","extends","mixins","reactiveProp","props","chartOptions","required","clickToFilter","Boolean","default","methods","renderChart","console","log","addPlugin","showChart","chartData","watch","val"],"mappings":"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","file":"js/HorizontalBarChart.5f598e94.js","sourcesContent":["/*!\n * chartjs-plugin-datalabels v1.0.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2021 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ChartDataLabels = factory(global.Chart));\n}(this, (function (Chart) { 'use strict';\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar Chart__default = /*#__PURE__*/_interopDefaultLegacy(Chart);\n\nvar helpers$4 = Chart__default['default'].helpers;\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 (!helpers$4.isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n toFontString: function(font) {\n if (!font || helpers$4.isNullOrUndef(font.size) || helpers$4.isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n + (font.weight ? font.weight + ' ' : '')\n + font.size + 'px '\n + font.family;\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 // @todo move this method in Chart.helpers.options.toFont\n parseFont: function(value) {\n var global = Chart__default['default'].defaults.global;\n var size = helpers$4.valueOrDefault(value.size, global.defaultFontSize);\n var font = {\n family: helpers$4.valueOrDefault(value.family, global.defaultFontFamily),\n lineHeight: helpers$4.options.toLineHeight(value.lineHeight, size),\n size: size,\n style: helpers$4.valueOrDefault(value.style, global.defaultFontStyle),\n weight: helpers$4.valueOrDefault(value.weight, null),\n string: ''\n };\n\n font.string = utils.toFontString(font);\n return font;\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(vm, config) {\n var angle = (vm.startAngle + vm.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = vm.innerRadius;\n var r1 = vm.outerRadius;\n\n return compute$1({\n x0: vm.x + vx * r0,\n y0: vm.y + vy * r0,\n x1: vm.x + vx * r1,\n y1: vm.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(vm, config) {\n var v = orient(vm, config.origin);\n var rx = v.x * vm.radius;\n var ry = v.y * vm.radius;\n\n return compute$1({\n x0: vm.x - rx,\n y0: vm.y - ry,\n x1: vm.x + rx,\n y1: vm.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n rect: function(vm, config) {\n var v = orient(vm, config.origin);\n var x = vm.x;\n var y = vm.y;\n var sx = 0;\n var sy = 0;\n\n if (vm.horizontal) {\n x = Math.min(vm.x, vm.base);\n sx = Math.abs(vm.base - vm.x);\n } else {\n y = Math.min(vm.y, vm.base);\n sy = Math.abs(vm.base - vm.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(vm, config) {\n var v = orient(vm, config.origin);\n\n return compute$1({\n x0: vm.x,\n y0: vm.y,\n x1: vm.x,\n y1: vm.y,\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar helpers$3 = Chart__default['default'].helpers;\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) {\n var horizontal = el._model.horizontal;\n var scale = el._scale || (horizontal && el._xScale) || el._yScale;\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 horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof Chart__default['default'].elements.Arc) {\n return positioners.arc;\n }\n if (el instanceof Chart__default['default'].elements.Point) {\n return positioners.point;\n }\n if (el instanceof Chart__default['default'].elements.Rectangle) {\n return positioners.rect;\n }\n return positioners.fallback;\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 helpers$3.canvas.roundedRect(\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\nhelpers$3.extend(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var resolve = helpers$3.options.resolve;\n var font = utils.parseFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, Chart__default['default'].defaults.global.defaultFontColor], 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, 0], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el),\n padding: helpers$3.options.toPadding(resolve([config.padding, 0], 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 = helpers$3.options.resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = helpers$3.valueOrDefault(helpers$3.callback(config.formatter, [value, context]), value);\n lines = helpers$3.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 helpers$2 = Chart__default['default'].helpers;\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\nhelpers$2.extend(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(view, model, geometry) {\n var point = model.positioner(view, 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;\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 geometry = label.geometry();\n center = coordinates(label._el._model, 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: j\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._view, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar helpers$1 = Chart__default['default'].helpers;\n\nvar formatter = function(value) {\n if (helpers$1.isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (helpers$1.isObject(value)) {\n if (!helpers$1.isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!helpers$1.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 helpers = Chart__default['default'].helpers;\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 = helpers.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(helpers.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 helpers.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) {\n if (!listeners) {\n return;\n }\n\n var context = label.$context;\n var groups = label.$groups;\n var callback;\n\n if (!listeners[groups._set]) {\n return;\n }\n\n callback = listeners[groups._set][groups._key];\n if (!callback) {\n return;\n }\n\n if (helpers.callback(callback, [context]) === 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) {\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);\n }\n if (enter) {\n dispatchEvent(chart, listeners.enter, label);\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);\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);\n }\n}\n\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\nfunction invalidate(chart) {\n if (chart.animating) {\n return;\n }\n\n // `chart.animating` can be `false` even if there is animation in progress,\n // so let's iterate all animations to find if there is one for the `chart`.\n var animations = Chart__default['default'].animationService.animations;\n for (var i = 0, ilen = animations.length; i < ilen; ++i) {\n if (animations[i].chart === chart) {\n return;\n }\n }\n\n // No render scheduled: trigger a \"lazy\" render that can be canceled in case\n // of hover interactions. The 1ms duration is a workaround to make sure an\n // animation is created so the controller can stop it before any transition.\n chart.render({duration: 1, lazy: true});\n}\n\nChart__default['default'].defaults.global.plugins.datalabels = defaults;\n\nvar plugin = {\n id: 'datalabels',\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 && !el.hidden && !el._model.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 helpers.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, options) {\n chart[EXPANDO_KEY]._labels = layout.prepare(\n chart[EXPANDO_KEY]._datasets,\n options);\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, event) {\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 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.lastActive || []; // public API?!\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][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 invalidate(chart);\n }\n\n delete expando._dirty;\n }\n};\n\nreturn plugin;\n\n})));\n","import ChartDataLabels from \"chartjs-plugin-datalabels\"\nimport { HorizontalBar, mixins } from \"vue-chartjs\"\n\nexport default {\n extends: HorizontalBar,\n mixins: [mixins.reactiveProp],\n props: {\n chartOptions: {\n type: Object,\n required: true\n },\n clickToFilter: {\n type: Boolean,\n default: true\n }\n },\n methods: {\n showChart (data) {\n if (data) {\n try {\n this.renderChart(data, this.chartOptions)\n } catch (e) {\n console.log(e)\n }\n }\n }\n },\n mounted () {\n this.addPlugin(ChartDataLabels)\n this.showChart(this.chartData)\n },\n watch: {\n chartData (val) {\n this.showChart(val)\n }\n }\n}\n"],"sourceRoot":""}