@pacem/pacem 1.0.0-abel → 1.0.0-amaldi
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-2d.js +3 -3
- package/dist/browser/pacem-2d.js.map +0 -5
- package/dist/browser/pacem-2d.min.js +3 -3
- package/dist/browser/pacem-2d.min.js.map +0 -5
- package/dist/browser/pacem-3d.js +341 -341
- package/dist/browser/pacem-3d.js.map +1 -6
- package/dist/browser/pacem-3d.min.js +3 -3
- package/dist/browser/pacem-3d.min.js.map +1 -6
- package/dist/browser/pacem-charts.js +3 -3
- package/dist/browser/pacem-charts.js.map +0 -5
- package/dist/browser/pacem-charts.min.js +3 -3
- package/dist/browser/pacem-charts.min.js.map +0 -5
- package/dist/browser/pacem-cms.js +107 -107
- package/dist/browser/pacem-cms.js.map +1 -6
- package/dist/browser/pacem-cms.min.js +3 -3
- package/dist/browser/pacem-cms.min.js.map +1 -6
- package/dist/browser/pacem-core.js +21 -7
- package/dist/browser/pacem-core.js.map +1 -6
- package/dist/browser/pacem-core.min.js +4 -4
- package/dist/browser/pacem-core.min.js.map +1 -6
- package/dist/browser/pacem-foundation.js +3 -3
- package/dist/browser/pacem-foundation.js.map +0 -5
- package/dist/browser/pacem-foundation.min.js +3 -3
- package/dist/browser/pacem-foundation.min.js.map +0 -5
- package/dist/browser/pacem-fx.js +19 -19
- package/dist/browser/pacem-fx.js.map +1 -6
- package/dist/browser/pacem-fx.min.js +3 -3
- package/dist/browser/pacem-fx.min.js.map +1 -6
- package/dist/browser/pacem-logging.js +3 -3
- package/dist/browser/pacem-logging.js.map +0 -5
- package/dist/browser/pacem-logging.min.js +3 -3
- package/dist/browser/pacem-logging.min.js.map +0 -5
- package/dist/browser/pacem-maps.js +3 -3
- package/dist/browser/pacem-maps.js.map +0 -5
- package/dist/browser/pacem-maps.min.js +3 -3
- package/dist/browser/pacem-maps.min.js.map +0 -5
- package/dist/browser/pacem-media.js +3 -3
- package/dist/browser/pacem-media.js.map +0 -5
- package/dist/browser/pacem-media.min.js +3 -3
- package/dist/browser/pacem-media.min.js.map +0 -5
- package/dist/browser/pacem-networking.js +3 -3
- package/dist/browser/pacem-networking.js.map +0 -5
- package/dist/browser/pacem-networking.min.js +3 -3
- package/dist/browser/pacem-networking.min.js.map +0 -5
- package/dist/browser/pacem-numerical.js +3 -3
- package/dist/browser/pacem-numerical.js.map +0 -5
- package/dist/browser/pacem-numerical.min.js +3 -3
- package/dist/browser/pacem-numerical.min.js.map +0 -5
- package/dist/browser/pacem-plus.js +77 -77
- package/dist/browser/pacem-plus.js.map +1 -6
- package/dist/browser/pacem-plus.min.js +3 -3
- package/dist/browser/pacem-plus.min.js.map +1 -6
- package/dist/browser/pacem-scaffolding.js +11 -8
- package/dist/browser/pacem-scaffolding.js.map +1 -6
- package/dist/browser/pacem-scaffolding.min.js +4 -4
- package/dist/browser/pacem-scaffolding.min.js.map +1 -6
- package/dist/browser/pacem-ui.js +37 -26
- package/dist/browser/pacem-ui.js.map +1 -6
- package/dist/browser/pacem-ui.min.js +4 -4
- package/dist/browser/pacem-ui.min.js.map +1 -6
- package/dist/bundle/pacem.min.mjs +40 -38
- package/dist/bundle/pacem.mjs +58 -32
- package/dist/bundle/pacem.mjs.map +2 -7
- package/dist/typings/index.d.ts +5 -3
- package/dist/vscode.html-custom.json +4834 -0
- package/package.json +9 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* @pacem/pacem v1.0.0-
|
|
3
|
-
*
|
|
1
|
+
/*!
|
|
2
|
+
* @pacem/pacem v1.0.0-amaldi (https://js.pacem.it)
|
|
3
|
+
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
(function (pacemFoundation, pacemCore) {
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pacem/pacem v1.0.0-abel (https://js.pacem.it)
|
|
3
|
-
* Copyright 2026 Pacem (https://pacem.it)
|
|
4
|
-
* Licensed under Apache-2.0
|
|
5
|
-
*/
|
|
6
1
|
{"version":3,"file":"pacem-charts.js","sources":["../esm/types.js","../esm/generic.js","../esm/column.js","../esm/pie.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Components, CustomUIEvent, CustomElementUtils, Utils, Throttle, PropertyChangeEventName } from '@pacem/pacem-core';\n//namespace Pacem.Components.Charts {\nexport const MANAGED_EVENTS = ['keydown', 'keyup', 'click', 'dblclick', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'mousemove', 'contextmenu'];\n;\n//function logN(N, x) {\n// return Math.log10(x) / Math.log10(N);\n//}\nconst MSECS_PER_DAY = 1000 * 60 * 60 * 24;\nconst MAX_X_LABELS = 10;\nconst MAX_Y_LABELS = 10;\nconst SERIES_DATAITEM = 'pacem:chart-series:dataitem';\nconst SERIES_SERIES = 'pacem:chart-series:series';\nfunction getEvenlySpaced(items, type, min, max, formatOrLang, labels = MAX_X_LABELS) {\n const length = (type === 'number' || type === 'date') ? (max - min) : Math.max(1, items.length - 1);\n const gaps = labels - 1;\n var retval = [];\n var step = 1;\n for (var l = gaps; l > 1; l--) {\n if ((length % l) === 0) {\n step = length / l;\n break;\n }\n }\n if (step === 1 /* coprime number? */ && length > labels) {\n step = length;\n }\n const fnDate = typeof formatOrLang === 'function' ? formatOrLang : (step >= MSECS_PER_DAY ? ((d) => d.toLocaleDateString(formatOrLang)) : ((d) => d.toLocaleTimeString(formatOrLang)));\n const fnDateFirst = typeof formatOrLang === 'function' ? formatOrLang : (step < MSECS_PER_DAY ? ((d) => d.toLocaleString(formatOrLang)) : fnDate);\n const fnNum = typeof formatOrLang === 'function' ? formatOrLang : (n) => n.toLocaleString(formatOrLang);\n for (var j = 0; j <= length; j += step) {\n let label;\n switch (type) {\n case 'string':\n if (j >= items.length) {\n continue;\n }\n label = items[j].label;\n break;\n case 'number':\n label = fnNum(min + j);\n break;\n case 'date':\n let date = Utils.parseDate(min + j);\n let fn = (j == 0) ? fnDateFirst : fnDate;\n label = fn(date);\n break;\n default:\n throw 'Not supported.';\n }\n retval.push(label);\n }\n return retval;\n}\nfunction getRoundedBoundaries(min, max, desiredSteps) {\n desiredSteps ??= Math.min(bestGuessedDensity(min, max), MAX_Y_LABELS);\n const roughStep = (max - min) / desiredSteps;\n const magnitude = Math.pow(10, Math.floor(Math.log10(roughStep)));\n const step = [1, 2, 5, 10].map(n => n * magnitude).filter(s => s >= roughStep).reduce((min, s) => Math.min(min, s), Number.POSITIVE_INFINITY);\n return {\n min: Math.floor(min / step) * step,\n max: Math.ceil(max / step) * step,\n round: step\n };\n}\n// Deprecated\n//function getRoundedBoundariesOld(a0: number, a1: number, steps?: number) {\n// if (!(steps > 0)) {\n// steps = bestGuessedDensity(a0, a1);\n// }\n// const magn = logN(steps, a1 - a0),\n// exp = magn % 1 == 0 ? magn - 1 : magn,\n// rounder = Math.pow(steps, Math.floor(exp));\n// return {\n// min: Math.floor(a0 / rounder) * rounder,\n// max: Math.ceil(a1 / rounder) * rounder,\n// round: rounder\n// };\n//}\nfunction bestGuessedDensity(min, max) {\n const delta = max - min;\n if (!(delta > 0)) {\n return 2;\n }\n const oom = Math.floor(Math.log10(delta));\n const exp = Math.pow(10, -oom);\n // bring everything to a single digit format\n if (oom != 0) {\n return bestGuessedDensity(min * exp, max * exp);\n }\n const capFn = (n) => {\n const norm = Math.floor(Math.abs(n) * 10), limit = norm + 10 - (norm % 10);\n return limit.roundoff();\n };\n const b = capFn(delta);\n let a = 10;\n if (min !== 0) {\n a = capFn(Math.abs(max));\n }\n const ret = gcd(a, b);\n return ret === 1 ? b : Math.max(ret, 10 - ret);\n}\nfunction gcd(a, b) {\n if (a <= 0) {\n return b;\n }\n return gcd(b % a, a);\n}\nexport class ChartEvent extends CustomUIEvent {\n constructor(type, eventInit, originalEvent) {\n super(type, eventInit, originalEvent);\n }\n}\nlet PacemChartSeriesElement = class PacemChartSeriesElement extends Components.PacemItemElement {\n get values() {\n return this.datasource;\n }\n};\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemChartSeriesElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.String })\n], PacemChartSeriesElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.String })\n], PacemChartSeriesElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemChartSeriesElement.prototype, \"datapoints\", void 0);\n__decorate([\n Watch( /* to be set programmatically (internally) */)\n], PacemChartSeriesElement.prototype, \"_uiElements\", void 0);\nPacemChartSeriesElement = __decorate([\n CustomElement({ tagName: P + '-chart-series' })\n], PacemChartSeriesElement);\nexport { PacemChartSeriesElement };\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nexport class PacemSeriesChartElement extends Components.PacemItemsContainerElement {\n constructor() {\n super();\n this._itemPropertyChangedCallback = (evt) => {\n const propName = evt.detail.propertyName;\n if (propName === 'datasource'\n || propName === 'label'\n || propName === 'datapoints'\n || propName === 'cssClass'\n || propName === 'color') {\n this.draw();\n }\n };\n this._series = [];\n this._resizeHandler = (evt) => {\n this._size = evt.detail;\n this.draw();\n };\n // #endregion\n this._broadcastHandler = (e) => {\n /* Don't mess with the events:\n * keep the original (trusted) events with their well-known names\n * and provide a method to retrieve the 'ChartDataItem' based on the the eventTarget. */\n const element = e.currentTarget;\n const dataItem = CustomElementUtils.getAttachedPropertyValue(element, SERIES_DATAITEM);\n if (Utils.isNull(dataItem)) {\n return;\n }\n const chart = this, anchorPoint = chart.getAnchorPoint(element);\n const evt = new ChartEvent('item' + e.type, { detail: { dataItem, anchorPoint } }, e);\n const series = CustomElementUtils.getAttachedPropertyValue(element, SERIES_SERIES);\n if (series instanceof PacemChartSeriesElement) {\n series.dispatchEvent(evt);\n }\n chart.dispatchEvent(evt);\n };\n this._key = Utils.uniqueCode();\n }\n validate(item) {\n return item instanceof PacemChartSeriesElement;\n }\n register(item) {\n if (super.register(item)) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangedCallback, false);\n return true;\n }\n return false;\n }\n unregister(item) {\n if (super.unregister(item)) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangedCallback, false);\n return true;\n }\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n if (this._div != old) {\n this._div && this._div.remove();\n }\n // reset\n this._div = null;\n this._body = null; // <- get checked on next draw\n const eold = old;\n if (eold) {\n eold.classList.remove(PCSS + '-chart-area');\n eold.innerHTML = '';\n }\n this._ensureResizer();\n this.draw();\n }\n else if (!first) {\n switch (name) {\n case 'items':\n this._databindAndDrawDebounced();\n break;\n case 'datasource':\n this._databind();\n // fall down to draw() call.\n case 'yAxisDensity':\n case 'xAxisDensity':\n case 'xAxisType':\n case 'yAxisMax':\n case 'xAxisPosition':\n case 'yAxisFormat':\n this.draw();\n break;\n }\n }\n }\n _databindAndDrawDebounced() {\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this._databind();\n this.draw();\n });\n }\n _databind() {\n this._datasource = Utils.isNullOrEmpty(this.datasource) ? this.items : this.datasource;\n }\n disconnectedCallback() {\n this._div && this._div.remove();\n const resizer = this._resizer;\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener(Components.ResizeEventName, this._resizeHandler, false);\n resizer.remove();\n this._resizer = null;\n }\n super.disconnectedCallback();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._ensureResizer();\n this._databind();\n this.draw();\n }\n _ensureResizer(target = this.target || this._div) {\n if (Utils.isNull(this._resizer)) {\n const shell = CustomElementUtils.findAncestorShell(this);\n const resizer = this._resizer = shell.appendChild(new Components.PacemResizeElement());\n resizer.addEventListener(Components.ResizeEventName, this._resizeHandler, false);\n }\n this._resizer.target = target;\n }\n // #region OO-scoped props\n get chartSize() {\n return this._size;\n }\n get chartSeries() {\n return this._series;\n }\n get chartBody() {\n return this._body;\n }\n get chartGrid() {\n return this._grid;\n }\n get chartMask() {\n return this._mask;\n }\n get chartKey() {\n return this._key;\n }\n get chartContainer() {\n return this._div;\n }\n assignUiBehaviors(ui, series, data, color) {\n const alreadyRegistered = !Utils.isNull(CustomElementUtils.getAttachedPropertyValue(ui, SERIES_DATAITEM));\n const item = Utils.extend({ series: series.label, color: color || series.color }, data);\n CustomElementUtils.setAttachedPropertyValue(ui, SERIES_DATAITEM, item);\n CustomElementUtils.setAttachedPropertyValue(ui, SERIES_SERIES, series);\n if (!alreadyRegistered) {\n MANAGED_EVENTS.forEach(type => {\n ui.addEventListener(type, this._broadcastHandler);\n });\n }\n }\n disposeUiBehaviors(ui) {\n CustomElementUtils.deleteAttachedPropertyValue(ui, SERIES_DATAITEM);\n CustomElementUtils.deleteAttachedPropertyValue(ui, SERIES_SERIES);\n MANAGED_EVENTS.forEach(type => {\n ui.removeEventListener(type, this._broadcastHandler);\n });\n }\n ensureChartContainer() {\n if (Utils.isNull(this._div)) {\n let div = this._div = this.target || document.createElement('div');\n div.classList.add(PCSS + '-chart-area');\n if (div != this.target) {\n this.parentElement.insertBefore(div, this);\n }\n }\n return this._div;\n }\n ensureChartBody(type, w, h) {\n if (Utils.isNull(this._body)) {\n let svg = this._body = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('pacem', '');\n svg.setAttribute('class', PCSS + '-' + type + '-chart');\n svg.setAttribute('preserveAspectRatio', 'xMinYMax slice');\n const g = this._grid = document.createElementNS(SVG_NS, 'svg');\n g.setAttribute('pacem', '');\n g.setAttribute('class', 'chart-grid');\n // put mask on series\n let defs = document.createElementNS(SVG_NS, 'defs');\n let mask = this._mask = document.createElementNS(SVG_NS, 'mask');\n // black (hides)\n let rect = document.createElementNS(SVG_NS, 'rect');\n rect.setAttribute('x', '0');\n rect.setAttribute('y', '0');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n // white (shows)\n let rect0 = document.createElementNS(SVG_NS, 'rect');\n rect0.setAttribute('y', '0');\n rect0.setAttribute('width', '100%');\n rect0.setAttribute('fill', '#fff');\n mask.id = 'gnrc_mask_' + this._key;\n mask.appendChild(rect);\n mask.appendChild(rect0);\n // place mask on series so that lines won't be rendered outside the grid borders\n //g2.setAttribute('mask', 'url(#' + mask.id + ')');\n defs.appendChild(mask);\n svg.appendChild(defs);\n svg.appendChild(g);\n this._div.appendChild(svg);\n }\n return this._body;\n }\n chartDataItemToPoint(input, source) {\n switch (this.xAxisType || 'string') {\n case 'number':\n return { x: parseFloat(input.label), y: input.value };\n case 'date':\n return { x: Utils.parseDate(input.label).valueOf(), y: input.value };\n case 'string':\n return { x: source.findIndex(e => e.label == input.label), y: input.value };\n default:\n throw 'Not supported.';\n }\n }\n getVirtualGrid(items, minX, maxX, minY, maxY, xAxisType = this.xAxisType, steps, labels) {\n const rangeY = getRoundedBoundaries(minY, maxY, steps), stepY = rangeY.round;\n // fill y-axis array\n var y = [];\n for (let j = rangeY.min; j <= rangeY.max; j += stepY) {\n y.push(j.roundoff());\n }\n // fill x-axis array;\n let lang = Utils.lang(this);\n let format = null;\n const intl = this.xAxisFormat;\n if (!Utils.isNullOrEmpty(intl)) {\n switch (xAxisType) {\n case 'number':\n format = (n) => Intl.NumberFormat(lang, intl).format(n);\n break;\n case 'date':\n format = (n) => Intl.DateTimeFormat(lang, intl).format(Utils.parseDate(n));\n break;\n }\n }\n const x = getEvenlySpaced(items, xAxisType, minX, maxX, format ?? lang, labels);\n return { x, y };\n }\n wipeOut(series = this._series, startIndex = 0) {\n for (var j = series.length - 1; j >= startIndex; j--) {\n series[j].remove();\n }\n series.splice(startIndex);\n }\n buildLinearGradient(seriesIndex, invert = false) {\n const grad = document.createElementNS(SVG_NS, 'linearGradient');\n grad.id = this.chartKey + '_grad' + seriesIndex + (invert ? '_inverted' : '');\n if (invert) {\n Utils.addClass(grad, 'bottom-up');\n }\n grad.setAttribute('x1', '0%');\n grad.setAttribute('x2', '0%');\n grad.setAttribute('y1', '0%');\n grad.setAttribute('y2', '100%');\n grad.setAttribute('spreadMethod', 'pad');\n const stop1 = document.createElementNS(SVG_NS, 'stop');\n stop1.setAttribute('offset', '0%');\n const stop2 = document.createElementNS(SVG_NS, 'stop');\n stop2.setAttribute('offset', '100%');\n grad.appendChild(stop1);\n grad.appendChild(stop2);\n return grad;\n }\n setGradientColor(grad, color) {\n for (let j = 0; j < grad.children.length; j++) {\n const stop = grad.children.item(j);\n if (stop instanceof SVGStopElement) {\n stop.style.stopColor = color;\n }\n }\n }\n estimateYAxisLabelWidth(max) {\n const txt = this.formatYAxisLabel(max);\n return this.estimateLabelWidth(txt);\n }\n estimateLabelWidth(txt) {\n const grid = this._grid;\n if (Utils.isNull(grid)) {\n throw new Error('Unable to estimate label without an underlying grid available.');\n }\n const lbl = document.createElementNS(SVG_NS, 'text');\n lbl.textContent = txt;\n grid.appendChild(lbl);\n const size = Utils.offset(lbl);\n lbl.remove();\n return size.width;\n }\n formatYAxisLabel(y) {\n const intl = this.yAxisFormat;\n return Utils.isNullOrEmpty(intl) ? y.toString() : Intl.NumberFormat(Utils.lang(this), intl).format(y);\n }\n estimateXAxisLabelWidth(max) {\n const txt = this.formatXAxisLabel(max);\n return this.estimateLabelWidth(txt);\n }\n formatXAxisLabel(x) {\n const intl = this.xAxisFormat, lang = Utils.lang(this);\n switch (this.xAxisType) {\n case 'date':\n const date = Utils.Dates.parse(x);\n return Utils.isNullOrEmpty(intl) ? date.toLocaleString(lang) : Intl.DateTimeFormat(lang, intl).format(date);\n case 'number':\n const num = x;\n return Utils.isNullOrEmpty(intl) ? num.toLocaleString(lang) : Intl.NumberFormat(lang, intl).format(num);\n default:\n return x;\n }\n }\n draw() {\n this.drawSeries(this._datasource);\n }\n /**\n * Default implementation.\n * @param element\n */\n getAnchorPoint(element) {\n const rect = Utils.offset(element);\n return { x: rect.left + rect.width * .5, y: rect.top + rect.height * .5 };\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemSeriesChartElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSeriesChartElement.prototype, \"xAxisType\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSeriesChartElement.prototype, \"xAxisPosition\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSeriesChartElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSeriesChartElement.prototype, \"yAxisDensity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSeriesChartElement.prototype, \"xAxisDensity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSeriesChartElement.prototype, \"yAxisMin\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSeriesChartElement.prototype, \"yAxisMax\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSeriesChartElement.prototype, \"yAxisFormat\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSeriesChartElement.prototype, \"xAxisFormat\", void 0);\n__decorate([\n Throttle(true)\n], PacemSeriesChartElement.prototype, \"draw\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Utils, CustomElementUtils, Logging } from '@pacem/pacem-core';\nimport { PacemSeriesChartElement } from './types';\n//namespace Pacem.Components.Charts {\n/**\n * Returns the anchor points for a Bézier curve.\n * @param p The actual point.\n * @param p0 The previous point, if any.\n * @param p1 The next point, if any.\n */\nfunction getSplineCtrlPoints(p, p0, p1) {\n let c0 = p, c1 = p;\n const p0Null = Utils.isNull(p0), p1Null = Utils.isNull(p1);\n if (!(p0Null && p1Null)) {\n const portion = 3;\n let m0, m1;\n if (!p0Null) {\n m0 = (p.y - p0.y) / (p.x - p0.x);\n }\n if (!p1Null) {\n m1 = (p1.y - p.y) / (p1.x - p.x);\n }\n // average slope\n const m = ((m1 || (m0 || 0)) + (m0 || (m1 || 0))) / 2;\n const dx0 = p0Null ? 0 : (p.x - p0.x) / portion;\n const dx1 = p1Null ? 0 : (p1.x - p.x) / portion;\n c0 = { x: p.x - dx0, y: p.y - dx0 * m };\n c1 = { x: p.x + dx1, y: p.y + dx1 * m };\n }\n return { c0: c0, c1: c1 };\n}\nconst GET_VAL = CustomElementUtils.getAttachedPropertyValue;\nconst SET_VAL = CustomElementUtils.setAttachedPropertyValue;\nconst DEL_VAL = CustomElementUtils.deleteAttachedPropertyValue;\nconst PADDING_PIXELS = 24;\nconst SERIES_MAGNITUDE = 'pacem:chart-series:area';\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nlet PacemChartElement = class PacemChartElement extends PacemSeriesChartElement {\n constructor() {\n super(...arguments);\n this.#hover = false;\n this._enterHandler = (evt) => {\n this.#hover = true;\n };\n this._leaveHandler = (evt) => {\n this.#hover = false;\n };\n this._moveHandler = (evt) => {\n if (!this.#hover) {\n return;\n }\n };\n this._chartFillSeries = [];\n }\n // TODO: implement\n // @Watch({ converter: PropertyConverters.String }) hoverMode: 'abscissa' | 'point'; // 'point' assumed as default\n _getVirtualGrid(items, minX, maxX, minY, maxY, xAxisType = this.xAxisType, steps, labels) {\n return super.getVirtualGrid(items, minX, maxX, minY, maxY, xAxisType, steps, labels);\n }\n _wipe(series = this.chartSeries, startIndex = 0) {\n super.wipeOut(series, startIndex);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupBehavior();\n }\n disconnectedCallback() {\n this._dismantleBehavior();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'type':\n case 'aspectRatio':\n this.draw();\n break;\n }\n }\n _setupBehavior() {\n this.addEventListener('mouseenter', this._enterHandler, false);\n this.addEventListener('mouseleave', this._enterHandler, false);\n this.addEventListener('mousemove', this._moveHandler, false);\n }\n _dismantleBehavior() {\n this.removeEventListener('mouseenter', this._enterHandler, false);\n this.removeEventListener('mouseleave', this._leaveHandler, false);\n this.removeEventListener('mousemove', this._moveHandler, false);\n }\n #hover;\n _buildLinearGradient(seriesIndex) {\n return super.buildLinearGradient(seriesIndex);\n }\n _setGradientColor(grad, color) {\n super.setGradientColor(grad, color);\n }\n drawSeries(datasource) {\n if (!this.isReady || Utils.isNull(this.chartSize)) {\n return;\n }\n this.ensureChartContainer();\n const type = this.type || 'line';\n const padding = PADDING_PIXELS;\n // resize all\n var size = this.chartSize;\n if (size.height <= padding || size.width <= padding) {\n return;\n }\n // items && labels?\n if (Utils.isNullOrEmpty(datasource) || datasource.every(i => Utils.isNullOrEmpty(i.values))) {\n this._wipe();\n return;\n }\n const body = this.ensureChartBody('line', size.width, size.height);\n // from now on, drawing...\n this.log(Logging.LogLevel.Debug, `Drawing ${type} chart.`);\n // #region computations\n const xAxisType = this.xAxisType || 'string';\n let minY = this.yAxisMin ?? Number.NaN, maxY = this.yAxisMax ?? Number.NaN, minX = Number.NaN, maxX = Number.NaN;\n let stretch = 1;\n // individuate the min/max x & y in order correctly apply aspect ratio...\n for (let series of datasource) {\n let data = series.values;\n if (data && data.length) {\n let j = 0;\n for (let item of data) {\n let pt = this.chartDataItemToPoint(item, data);\n if (Utils.isNull(this.yAxisMin)) {\n minY = isNaN(minY) ? pt.y : Math.min(minY, pt.y);\n }\n if (Utils.isNull(this.yAxisMax)) {\n maxY = isNaN(maxY) ? pt.y : Math.max(maxY, pt.y);\n }\n if (j === 0)\n minX = isNaN(minX) ? pt.x : Math.min(minX, pt.x);\n else if (j === data.length - 1)\n maxX = isNaN(maxX) ? pt.x : Math.max(maxX, pt.x);\n j++;\n }\n }\n }\n /** virtual grid made of x- and y-axis labels */\n const withValues = datasource.find(i => !Utils.isNullOrEmpty(i.values));\n const grid = this._getVirtualGrid(withValues.values, minX, maxX, minY, maxY, xAxisType, this.yAxisDensity, this.xAxisDensity);\n const topGrid = grid.y[grid.y.length - 1], bottomGrid = grid.y[0];\n if (topGrid === bottomGrid)\n return;\n // estimate y-axis max width\n const halfPad = padding * .5;\n const maxYLabelLength = grid.y.reduce((max, i) => Math.max(max, this.estimateYAxisLabelWidth(i) + halfPad), padding);\n const maxXLabelHalfLength = grid.x.reduce((max, i) => Math.max(max, this.estimateXAxisLabelWidth(i)), padding) * .5;\n const paddingYAxis = Math.max(maxXLabelHalfLength, maxYLabelLength), paddingYAxisEnd = maxXLabelHalfLength; // Math.max(padding, this.estimateXAxisLabelWidth(minX) * .5 + PADDING_PIXELS);\n /** width of the WHOLE series dedicated area */\n const seriesWidth = size.width - paddingYAxis - paddingYAxisEnd;\n /** height of the WHOLE series dedicated area */\n const gridHeight = (size.height - 2 * padding);\n const seriesHeight = gridHeight * (1 - (topGrid - bottomGrid - (maxY - minY)) / (topGrid - bottomGrid));\n const seriesY = gridHeight * (topGrid - maxY) / (topGrid - bottomGrid);\n // const seriesY2 = gridHeight * (minY - bottomGrid) / (topGrid - bottomGrid);\n // if not a `graph`\n if (xAxisType !== 'number' || (this.aspectRatio !== 'monometric' && this.aspectRatio !== 'logaritmic')) {\n // consider padding\n stretch = seriesWidth / seriesHeight;\n body.setAttribute('height', size.height.toString());\n body.setAttribute('width', size.width.toString());\n }\n body.setAttribute('viewBox', `0 0 ${size.width} ${size.height}`);\n // #endregion\n // #region render series\n let iter = 0;\n // normalize\n const spanX = maxX - minX, spanY = maxY - minY;\n const normX = 100 * stretch / spanX, normY = 100 / spanY;\n const normPadding = 100 * padding / seriesHeight;\n const buildPoint = (it, series) => {\n let p = this.chartDataItemToPoint(it, series);\n //pt.x *= normX;\n p.y *= normY;\n // Limit as much as possible the magnitude of a number inclued in the svg.\n // Big numbers \"overflow the renderer\".\n p.x = (p.x - minX) * normX;\n //pt.y = (pt.y - minY) * normY;\n return p;\n };\n const chartSeries = this.chartSeries;\n const chartFillSeries = this._chartFillSeries;\n const chartGrid = this.chartGrid;\n const splineHere = type === 'spline' || type === 'splinearea';\n for (let series of datasource) {\n // does the series svg exist?\n let svg, svgFill;\n let grad;\n if (chartSeries.length > iter) {\n svg = chartSeries[iter];\n svgFill = chartFillSeries[iter];\n grad = svgFill.firstElementChild.firstElementChild;\n }\n else {\n svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('pacem', '');\n body.appendChild(svg);\n svgFill = document.createElementNS(SVG_NS, 'svg');\n svgFill.setAttribute('pacem', '');\n body.insertBefore(svgFill, body.children.item(iter + /* <defs> should remain the very first child and 'grid' the very second */ 2));\n // 1st child - defs (gradient)\n const defs = document.createElementNS(SVG_NS, 'defs');\n defs.appendChild(grad = this._buildLinearGradient(iter));\n svgFill.appendChild(defs);\n // 2nd child - fill path\n svgFill.appendChild(document.createElementNS(SVG_NS, 'path'));\n chartFillSeries.push(svgFill);\n // 1st child stroke path\n svg.appendChild(document.createElementNS(SVG_NS, 'path'));\n // 2nd + nth+1 child will be point circles\n chartSeries.push(svg);\n }\n // series positioning:\n /*\n --------------------------------------\n | |--------------------------------|\n |pad| series here |\n | |--------------------------------|\n --------------------------------------\n | | pad |\n --------------------------------------\n */\n let className = 'chart-series';\n const fill = type === 'area' || type === 'splinearea';\n if (!Utils.isNullOrEmpty(series.className)) {\n className += ' ' + series.className;\n }\n [svg, svgFill].forEach(s => {\n s.setAttribute('class', className);\n s.setAttribute('x', paddingYAxis.toString());\n s.setAttribute('y', seriesY.toString());\n s.setAttribute('width', seriesWidth.toString());\n s.setAttribute('height', (seriesHeight + 2 * padding).toString());\n });\n Utils.addClass(svgFill, PCSS + '-inert');\n // pick path as single child element for the series.\n let pathFill = svgFill.children.item(1);\n let path = svg.firstElementChild;\n path.style.stroke = series.color;\n pathFill.style.stroke =\n path.style.fill = 'none';\n this._setGradientColor(grad, series.color);\n pathFill.style.fill = `url(#${grad.id})`;\n pathFill.style.display = fill ? '' : 'none';\n let d = '';\n let data = series.values;\n if (data && data.length) {\n const addInteractivePoint = (center, j, series, dataItem, color) => {\n const ndx = j + /* count the <path> child */ 1;\n let circle;\n if (svg.children.length > ndx) {\n circle = svg.children.item(ndx);\n }\n else {\n circle = document.createElementNS(SVG_NS, 'line');\n circle.setAttribute('class', 'circle');\n svg.appendChild(circle);\n }\n const x1 = center.x.toString(), y1 = (-center.y).toString();\n circle.setAttribute('x1', x1);\n circle.setAttribute('y1', y1);\n circle.setAttribute('x2', x1);\n circle.setAttribute('y2', y1);\n circle.style.stroke = color;\n this.assignUiBehaviors(circle, series, dataItem, color);\n };\n const wipeExceedingPoints = () => {\n const remaining = series.datapoints ? (data.length + 1) : 1;\n for (let k = svg.children.length - 1; k >= remaining; k--) {\n var circle = svg.children.item(k);\n this.disposeUiBehaviors(circle);\n circle.remove();\n }\n };\n if (splineHere) {\n // #region SPLINE\n let pt0, pt, c0;\n for (let j = 0; j < data.length; j++) {\n const item = data[j];\n if (isNaN(item.value)) {\n continue;\n }\n if (!pt) {\n pt = buildPoint(item, data);\n }\n let pt1;\n if (splineHere && j < (data.length - 1)) {\n pt1 = buildPoint(data[j + 1], data);\n }\n // accumulate `area` for sorting\n let areaSoFar = GET_VAL(series, SERIES_MAGNITUDE, 0);\n areaSoFar += item.value;\n SET_VAL(series, SERIES_MAGNITUDE, areaSoFar);\n var c = getSplineCtrlPoints(pt, pt0, pt1);\n d += Utils.isNullOrEmpty(d) ? `M${pt.x},${-pt.y} ` : `C${c0.x},${-c0.y} ${c.c0.x},${-c.c0.y} ${pt.x},${-pt.y} `;\n if (series.datapoints) {\n addInteractivePoint(pt, j, series, item, series.color);\n }\n // step next\n pt0 = pt;\n pt = pt1, c0 = c.c1;\n }\n // #endregion\n }\n else {\n // #region LINE\n let j = 0;\n for (let item of data) {\n if (isNaN(item.value)) {\n continue;\n }\n const pt = buildPoint(item, data);\n // accumulate `area` for sorting\n let areaSoFar = GET_VAL(series, SERIES_MAGNITUDE, 0);\n areaSoFar += item.value;\n SET_VAL(series, SERIES_MAGNITUDE, areaSoFar);\n d += Utils.isNullOrEmpty(d) ? `M${pt.x},${-pt.y} ` : `L${pt.x},${-pt.y} `;\n if (series.datapoints) {\n addInteractivePoint(pt, j, series, item, series.color);\n }\n j++;\n }\n // #endregion\n }\n wipeExceedingPoints();\n }\n path.setAttribute('d', d);\n pathFill.setAttribute('d', d + `V${(-minY * normY)} H0 Z`);\n // tick\n iter++;\n }\n // remove exceeding series\n this._wipe(chartFillSeries, iter);\n this._wipe(chartSeries, iter);\n const w0 = 100 * stretch, h0 = 100 + 2 * normPadding, x0 = 0, //minX * normX,\n y0 = maxY * normY + normPadding;\n const svbox = `${x0} ${-y0} ${w0} ${h0}`;\n for (var svg of chartSeries.concat(chartFillSeries)) {\n svg.setAttribute('viewBox', svbox);\n }\n const chartMask = this.chartMask;\n let mask = chartMask.children.item(1);\n mask.setAttribute('x', x0.toString());\n mask.setAttribute('height', (size.height - padding).toString());\n // #endregion\n // #region grid\n chartGrid.setAttribute('viewBox', `0 0 ${size.width} ${size.height}`);\n if (grid.x.length <= 1 || grid.y.length <= 1) {\n for (let j = chartGrid.children.length - 1; j >= 0; j--) {\n chartGrid.children.item(j).remove();\n }\n return;\n }\n let pgrid;\n if (chartGrid.children.length > 0) {\n pgrid = chartGrid.children.item(0);\n }\n else {\n pgrid = document.createElementNS(SVG_NS, 'path');\n chartGrid.appendChild(pgrid);\n }\n const tick = padding * .25;\n let lblCounter = 0;\n let ensureLabel = (index, x, y, txt) => {\n const ndx = index + /* <path> is the first child element */ 1;\n let lbl;\n if (chartGrid.children.length <= ndx) {\n lbl = document.createElementNS(SVG_NS, 'text');\n chartGrid.appendChild(lbl);\n }\n else {\n lbl = chartGrid.children.item(ndx);\n }\n lbl.textContent = txt;\n lbl.setAttribute('x', x.toString());\n lbl.setAttribute('y', y.toString());\n return lbl;\n };\n let dgrid = `M${paddingYAxis},${padding} v${gridHeight}`; //H${w}\n // x\n let j = 0;\n const xincr = seriesWidth / (grid.x.length - 1), yincr = gridHeight / (grid.y.length - 1);\n if (this.xAxisPosition !== 'none') {\n for (var x of grid.x) {\n const xcoord = paddingYAxis + j * xincr;\n if (this.xAxisPosition === 'top') {\n dgrid += ` M${xcoord},${padding} v${-tick}`;\n let lbl = ensureLabel(lblCounter++, xcoord, 0, x);\n lbl.setAttribute('text-anchor', 'middle');\n lbl.setAttribute('alignment-baseline', 'hanging');\n }\n else {\n let ycoord = gridHeight + padding;\n dgrid += ` M${xcoord},${ycoord} v${tick}`;\n ensureLabel(lblCounter++, xcoord, ycoord + padding, x).setAttribute('text-anchor', 'middle');\n }\n j++;\n }\n }\n // y\n j = 0;\n for (var y of grid.y) {\n const ycoord = gridHeight + padding - j * yincr, xcoord = paddingYAxis - tick;\n dgrid += ` M${xcoord},${ycoord} H${(seriesWidth + paddingYAxis)}`;\n let txt = this.formatYAxisLabel(y);\n ensureLabel(lblCounter++, xcoord - tick, ycoord, txt).setAttribute('text-anchor', 'end');\n j++;\n }\n pgrid.setAttribute('d', dgrid);\n // exceeding labels?\n for (let j = chartGrid.children.length - 1; j > lblCounter; j--) {\n chartGrid.children.item(j).remove();\n }\n // #endregion\n // #region abscissa cursor\n // #endregion\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemChartElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemChartElement.prototype, \"aspectRatio\", void 0);\nPacemChartElement = __decorate([\n CustomElement({ tagName: P + '-chart' })\n], PacemChartElement);\nexport { PacemChartElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, Utils, Logging } from '@pacem/pacem-core';\nimport { PacemSeriesChartElement } from './types';\n//namespace Pacem.Components.Charts {\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst PADDING_PIXELS = 24;\nlet PacemColumnChartElement = class PacemColumnChartElement extends PacemSeriesChartElement {\n constructor() {\n super(...arguments);\n /** Set a value between 0 and 1, for the columns' stack/cluster horizontal size (percentage of the available space). */\n this.groupWidth = .0;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'type' || name === 'groupWidth') {\n this.draw();\n }\n }\n _safen(w = this.groupWidth) {\n return Math.min(1, Math.max(w || .75, 0));\n }\n drawSeries(datasource) {\n if (!this.isReady || Utils.isNull(this.chartSize)) {\n return;\n }\n const div = this.ensureChartContainer();\n const type = this.type || 'cluster';\n const padding = PADDING_PIXELS;\n // resize all\n var size = this.chartSize;\n if (size.height <= padding || size.width <= padding) {\n return;\n }\n // items && labels?\n if (Utils.isNullOrEmpty(datasource) || datasource.every(i => Utils.isNullOrEmpty(i.values))) {\n this.wipeOut();\n return;\n }\n const body = this.ensureChartBody('column', size.width, size.height);\n // from now on, drawing...\n this.log(Logging.LogLevel.Debug, `Drawing ${type} chart.`);\n // #region computations\n const xAxisType = this.xAxisType || 'string';\n let minY = this.yAxisMin ?? 0, maxY = this.yAxisMax ?? 0, minX = 0, maxX = 0, maxCount = 0;\n let stretch = 1;\n const accumulator = { negative: [], positive: [] };\n // individuate the min/max x & y in order correctly apply aspect ratio...\n for (let series of datasource) {\n let data = series.values;\n if (!Utils.isNullOrEmpty(data)) {\n let j = 0;\n for (let item of data) {\n accumulator.positive[j] = accumulator.positive[j] || 0;\n accumulator.negative[j] = accumulator.negative[j] || 0;\n let pt = this.chartDataItemToPoint(item, data);\n if (Utils.isNull(this.yAxisMin)) {\n minY = Math.min(minY, pt.y);\n }\n if (Utils.isNull(this.yAxisMax)) {\n maxY = Math.max(maxY, pt.y);\n }\n minX = Math.min(minX, pt.x);\n maxX = Math.max(maxX, pt.x);\n if (pt.y > 0) {\n accumulator.positive[j] += pt.y;\n }\n else if (pt.y < 0) {\n accumulator.negative[j] += pt.y;\n }\n j++;\n }\n maxCount = Math.max(maxCount, data.length);\n }\n }\n const stacked = type === 'stack';\n if (stacked) {\n if (Utils.isNull(this.yAxisMin))\n minY = Math.min.apply(null, accumulator.negative);\n if (Utils.isNull(this.yAxisMax))\n maxY = Math.max.apply(null, accumulator.positive);\n }\n if (maxX === 0 && maxX === minX) {\n maxX = 1;\n }\n // add \"1 slot\" (half at the beginning and half after the end)\n const slot = (maxX - minX) / maxCount, halfSlot = slot * .5, \n // the following are usefule during the very rendering\n availSlot = slot * this._safen(this.groupWidth), halfAvailSlot = availSlot * .5;\n /** virtual grid made of x- and y-axis labels */\n const withValues = datasource.find(i => !Utils.isNullOrEmpty(i.values));\n const grid = this.getVirtualGrid(withValues.values, minX - halfSlot, maxX + halfSlot, minY, maxY, xAxisType, this.yAxisDensity, this.xAxisDensity);\n const topGrid = grid.y[grid.y.length - 1], bottomGrid = grid.y[0];\n if (topGrid === bottomGrid) {\n return;\n }\n // estimate y-axis max width\n const halfPad = PADDING_PIXELS * .5;\n const paddingYAxis = grid.y.reduce((max, i) => Math.max(max, this.estimateYAxisLabelWidth(i) + halfPad), padding);\n /** width of the WHOLE series dedicated area */\n const seriesWidth = size.width - paddingYAxis - padding;\n /** height of the WHOLE series dedicated area */\n const gridHeight = (size.height - 2 * padding);\n const seriesHeight = gridHeight * (1 - (topGrid - bottomGrid - (maxY - minY)) / (topGrid - bottomGrid));\n const seriesY = gridHeight * (topGrid - maxY) / (topGrid - bottomGrid);\n // consider padding\n stretch = seriesWidth / seriesHeight;\n body.setAttribute('height', size.height.toString());\n body.setAttribute('width', size.width.toString());\n body.setAttribute('viewBox', `0 0 ${size.width} ${size.height}`);\n // #endregion\n // #region render series\n let iter = 0;\n // normalize\n const spanX = maxX - minX, spanY = maxY - minY;\n const normX = 100 * stretch / spanX, normY = 100 / spanY;\n const normPadding = 100 * padding / seriesHeight;\n const chartSeries = this.chartSeries;\n const chartGrid = this.chartGrid;\n const xPad = (halfSlot - minX) * normX;\n const buildPoint = (it, series) => {\n const p = this.chartDataItemToPoint(it, series);\n return {\n x: xPad + p.x * 2 * xPad,\n y: p.y * normY\n };\n };\n var accumulators = new Array(maxCount);\n for (let series of datasource) {\n // does the series svg exist?\n let svg;\n let grad;\n let gradInv;\n let g;\n if (chartSeries.length > iter) {\n svg = chartSeries[iter];\n grad = svg.firstElementChild.firstElementChild;\n gradInv = svg.firstElementChild.lastElementChild;\n g = svg.lastElementChild;\n }\n else {\n svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('pacem', '');\n chartGrid.insertAdjacentElement('afterend', svg);\n const defs = document.createElementNS(SVG_NS, 'defs');\n defs.appendChild(grad = this.buildLinearGradient(iter));\n defs.appendChild(gradInv = this.buildLinearGradient(iter, true));\n svg.appendChild(defs);\n svg.appendChild(g = document.createElementNS(SVG_NS, 'g'));\n chartSeries.push(svg);\n }\n // series positioning:\n /*\n --------------------------------------\n | |--------------------------------|\n |pad| series here |\n | |--------------------------------|\n --------------------------------------\n | | pad |\n --------------------------------------\n */\n var className = 'chart-series series-fill';\n if (!Utils.isNullOrEmpty(series.className)) {\n className += ' ' + series.className;\n }\n svg.setAttribute('class', className);\n svg.setAttribute('x', paddingYAxis.toString());\n svg.setAttribute('y', seriesY.toString());\n svg.setAttribute('width', seriesWidth.toString());\n svg.setAttribute('height', (seriesHeight + 2 * padding).toString());\n const data = series.values;\n const spinRect = (index) => {\n while (index >= g.children.length) {\n g.appendChild(document.createElementNS(SVG_NS, 'rect'));\n }\n const rect = g.children.item(index);\n rect.style.stroke = series.color;\n const gradient = data[index].value < 0 ? gradInv : grad;\n this.setGradientColor(gradient, series.color);\n rect.style.fill = `url(#${gradient.id})`;\n return rect;\n };\n // fix 0 y\n const precision = 10;\n const assignVerticalCoordsCoords = (rect, pt0, pt, pt0Start = pt0) => {\n const y = -Math.max(pt0.y, pt.y), h = Math.abs(pt.y - pt0.y);\n const fnAssign = () => {\n rect.setAttribute('y', y.toFixed(precision));\n rect.setAttribute('height', h.toFixed(precision));\n };\n if (!rect.hasAttribute('y')) {\n // boostrap easing animated transition\n rect.setAttribute('y', '-' + pt0Start.y.toFixed(precision));\n rect.setAttribute('height', '0');\n requestAnimationFrame(fnAssign);\n }\n else {\n fnAssign();\n }\n };\n if (!Utils.isNullOrEmpty(data)) {\n ;\n const pt00 = buildPoint({ value: 0, label: data[0].label }, data);\n if (stacked) {\n // #region STACK\n const iHalfAvailSlot = halfAvailSlot * normX, iAvailSlotAttr = (availSlot * normX).toFixed(precision);\n for (let j = 0; j < data.length; j++) {\n const item = data[j];\n if (Utils.isNullOrEmpty(accumulators[j])) {\n accumulators[j] = { positive: 0, negative: 0 };\n }\n const accumulator = accumulators[j];\n let posCursor = accumulator.positive, negCursor = accumulator.negative;\n const neg = item.value < 0, y = neg ? negCursor : (posCursor + item.value), y0 = neg ? (negCursor + item.value) : posCursor;\n const pt = buildPoint({ label: item.label, value: y }, data);\n const pt0 = buildPoint({ label: item.label, value: y0 }, data);\n const x = pt.x - iHalfAvailSlot;\n const rect = spinRect(j);\n this.assignUiBehaviors(rect, series, item);\n rect.setAttribute('x', x.toFixed(precision));\n rect.setAttribute('width', iAvailSlotAttr);\n assignVerticalCoordsCoords(rect, pt0, pt, pt00);\n if (neg) {\n accumulator.negative = y0;\n }\n else {\n accumulator.positive = y;\n }\n }\n // #endregion\n }\n else {\n // #region CLUSTER\n const iHalfAvailSlot = halfAvailSlot * normX, iSlot = (iHalfAvailSlot * 2) / datasource.length, //,\n iSlotAttr = iSlot.toFixed(precision);\n for (let j = 0; j < data.length; j++) {\n // looping through the series-data\n const item = data[j];\n const pt = buildPoint(item, data);\n const x = pt.x - iHalfAvailSlot + iSlot * iter;\n const rect = spinRect(j);\n this.assignUiBehaviors(rect, series, item);\n rect.setAttribute('x', x.toFixed(precision));\n rect.setAttribute('width', iSlotAttr);\n assignVerticalCoordsCoords(rect, pt00, pt);\n }\n // #endregion\n }\n }\n // cleanup exceeding rects\n for (let j = g.children.length - 1; j >= data?.length || 0; j--) {\n const rect = g.children.item(j);\n this.disposeUiBehaviors(rect);\n rect.remove();\n }\n // tick\n iter++;\n }\n // remove exceeding series\n this.wipeOut(chartSeries, iter);\n const w0 = 100 * stretch, h0 = 100 + 2 * normPadding, x0 = 0, //minX * normX,\n y0 = maxY * normY + normPadding;\n const svbox = `${x0} ${-y0} ${w0} ${h0}`;\n for (var svg of chartSeries) {\n svg.setAttribute('viewBox', svbox);\n }\n const chartMask = this.chartMask;\n let mask = chartMask.children.item(1);\n mask.setAttribute('x', x0.toString());\n mask.setAttribute('height', (size.height - padding).toString());\n // #endregion\n // #region grid\n chartGrid.setAttribute('viewBox', `0 0 ${size.width} ${size.height}`);\n if (grid.x.length < 1 || grid.y.length <= 1) {\n for (let j = chartGrid.children.length - 1; j >= 0; j--) {\n chartGrid.children.item(j).remove();\n }\n return;\n }\n let pgrid;\n if (chartGrid.children.length > 0) {\n pgrid = chartGrid.children.item(0);\n }\n else {\n pgrid = document.createElementNS(SVG_NS, 'path');\n chartGrid.appendChild(pgrid);\n }\n const tick = PADDING_PIXELS * .25;\n let lblCounter = 0;\n let ensureLabel = (index, x, y, txt) => {\n const ndx = index + /* <path> is the first child element */ 1;\n let lbl;\n if (chartGrid.children.length <= ndx) {\n lbl = document.createElementNS(SVG_NS, 'text');\n chartGrid.appendChild(lbl);\n }\n else {\n lbl = chartGrid.children.item(ndx);\n }\n lbl.textContent = txt;\n lbl.setAttribute('x', x.toString());\n lbl.setAttribute('y', y.toString());\n return lbl;\n };\n let dgrid = `M${paddingYAxis},${padding} v${gridHeight}`; //H${w}\n // x\n let j = 0;\n const xincr = seriesWidth / (grid.x.length /*- 1 consider the extra slot */), yincr = gridHeight / (grid.y.length - 1);\n if (this.xAxisPosition !== 'none') {\n const paddingX = xincr * .5 + paddingYAxis;\n for (var x of grid.x) {\n let xcoord = paddingX + j * xincr;\n if (this.xAxisPosition === 'top') {\n dgrid += ` M${xcoord},${padding} v${-tick}`;\n let lbl = ensureLabel(lblCounter++, xcoord, 0, x);\n lbl.setAttribute('text-anchor', 'middle');\n lbl.setAttribute('alignment-baseline', 'hanging');\n }\n else {\n let ycoord = gridHeight + padding;\n dgrid += ` M${xcoord},${ycoord} v${tick}`;\n ensureLabel(lblCounter++, xcoord, ycoord + padding, x).setAttribute('text-anchor', 'middle');\n }\n j++;\n }\n }\n // y\n j = 0;\n for (var y of grid.y) {\n const ycoord = gridHeight + padding - j * yincr, xcoord = paddingYAxis - tick;\n dgrid += ` M${xcoord},${ycoord} H${(seriesWidth + paddingYAxis)}`;\n let txt = this.formatYAxisLabel(y);\n ensureLabel(lblCounter++, xcoord - tick, ycoord, txt).setAttribute('text-anchor', 'end');\n j++;\n }\n pgrid.setAttribute('d', dgrid);\n // exceeding labels?\n for (let j = chartGrid.children.length - 1; j > lblCounter; j--) {\n chartGrid.children.item(j).remove();\n }\n // #endregion\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemColumnChartElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemColumnChartElement.prototype, \"groupWidth\", void 0);\nPacemColumnChartElement = __decorate([\n CustomElement({ tagName: P + '-column-chart' })\n], PacemColumnChartElement);\nexport { PacemColumnChartElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Components, Utils, CustomElementUtils, Debounce } from '@pacem/pacem-core';\nimport { MANAGED_EVENTS } from './types';\n//namespace Pacem.Components.Charts {\nlet PacemPieSliceElement = class PacemPieSliceElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._broadcastHandler = (e) => {\n this.emit(e);\n };\n }\n findContainer() {\n return CustomElementUtils.findAncestorOfType(this, PacemPieChartElement);\n }\n get chart() {\n return this.container;\n }\n /** Returns the center of mass (point) of this pie/doughnut slice, in absolute coords (pixels). */\n getCenterOfMass() {\n const area = this.chart && this.chart.area;\n if (Utils.isNull(area)) {\n return null;\n }\n const rect = Utils.offset(area), center = { x: rect.width / 2 + rect.left, y: rect.top + rect.height / 2 }, r = Math.min(rect.width, rect.height) * .5;\n const pos = this.normalizedPolarCoords, angle = PI1_2 - pos.angle;\n return {\n y: center.y - r * pos.radius * Math.sin(angle),\n x: center.x + r * pos.radius * Math.cos(angle)\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && this.chart && name != 'normalizedPolarCoords')\n this.chart.draw();\n }\n /** @internal */\n _assignUi(el) {\n const ui = this._ui = el;\n MANAGED_EVENTS.forEach(type => {\n ui.addEventListener(type, this._broadcastHandler);\n });\n }\n /** @internal */\n _disposeUi() {\n if (!Utils.isNull(this._ui)) {\n MANAGED_EVENTS.forEach(type => {\n this._ui.removeEventListener(type, this._broadcastHandler);\n });\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemPieSliceElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemPieSliceElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemPieSliceElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemPieSliceElement.prototype, \"normalizedPolarCoords\", void 0);\nPacemPieSliceElement = __decorate([\n CustomElement({ tagName: P + '-pie-slice' })\n], PacemPieSliceElement);\nexport { PacemPieSliceElement };\nconst TWO_PI = Math.PI * 2;\nconst PI1_2 = Math.PI * .5;\nlet PacemPieChartElement = class PacemPieChartElement extends Components.PacemItemsContainerElement {\n constructor() {\n super();\n /** Set a value between 0 and 1, for doughnut appearance. */\n this.cutout = .0;\n /** Distance between two consecutive slices, in pixels. */\n this.slicePadding = .0;\n this._slices = new WeakMap();\n this._key = Utils.uniqueCode();\n }\n validate(item) {\n return item instanceof PacemPieSliceElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.draw();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n this._g = null;\n this._div && this._div.remove();\n const eold = old;\n if (eold) {\n eold.classList.remove(PCSS + '-chart-area');\n eold.innerHTML = '';\n }\n this.draw();\n }\n else if (!first && (name === 'cutout' || name === 'items' || name === 'slicePadding'))\n this.draw();\n }\n get area() {\n return this._svg;\n }\n disconnectedCallback() {\n this._div && this._div.remove();\n super.disconnectedCallback();\n }\n _ensureArea() {\n if (Utils.isNull(this._g)) {\n let div = this.target || (this._div = document.createElement('div'));\n div.classList.add(PCSS + '-chart-area');\n let svg = this._svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('pacem', '');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('viewBox', '0 0 100 100');\n //svg.style.height =\n // svg.style.width = '100%';\n svg.classList.add(PCSS + '-pie-chart');\n let defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\n let g = this._g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n svg.appendChild(defs);\n svg.appendChild(g);\n div.appendChild(svg);\n this._div &&\n this.parentElement.insertBefore(div, this);\n }\n if (this.maskBasedRendering) {\n if (Utils.isNull(this._mask)) {\n let mask = document.createElementNS('http://www.w3.org/2000/svg', 'mask');\n mask.id = 'pie_mask_' + this._key;\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('x', '0');\n rect.setAttribute('y', '0');\n rect.setAttribute('width', '100');\n rect.setAttribute('height', '100');\n rect.setAttribute('fill', '#fff');\n let circle = this._mask = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle.setAttribute('cx', '50');\n circle.setAttribute('cy', '50');\n const defs = this._svg.firstElementChild;\n mask.appendChild(rect);\n mask.appendChild(circle);\n defs.appendChild(mask);\n this._g.setAttribute('mask', `url(#${mask.id})`);\n }\n const cutout = 50.0 * this._safeCutout;\n this._mask.setAttribute('r', `${cutout}`);\n }\n else {\n if (!Utils.isNull(this._mask)) {\n this._svg.firstElementChild.innerHTML = '';\n this._mask = null;\n this._g.removeAttribute('mask');\n }\n }\n // has padded slices?\n const paddingPixels = this._safeSlicePaddingPixels;\n if (paddingPixels > 0) {\n const matrix = this._svg.getCTM();\n const paddingUnits = (paddingPixels / matrix.a).roundoff();\n const maskId = this._sliceMaskId;\n const defs = this._svg.firstElementChild;\n let mask = defs.querySelector(`#${maskId}`);\n if (Utils.isNull(mask)) {\n mask = document.createElementNS('http://www.w3.org/2000/svg', 'mask');\n mask.id = maskId;\n defs.appendChild(mask);\n }\n else {\n mask.innerHTML = '';\n }\n const maskPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n const d = `M${(50 + paddingUnits)},0 H100 V100 H0 V0 H50 V50 h${paddingUnits} Z`;\n maskPath.setAttribute('d', d);\n maskPath.setAttribute('fill', '#fff');\n mask.appendChild(maskPath);\n }\n return this._g;\n }\n get _sliceMaskId() {\n return 'pieslice_mask_' + this._key;\n }\n get _safeCutout() {\n return Math.min(1, Math.max(0, this.cutout)) || .0;\n }\n get _safeSlicePaddingPixels() {\n return Math.max(0, this.slicePadding ?? 0);\n }\n _drawSlice(path, slice, whole, partial) {\n const largeFlag = slice.value > .5 * whole ? 1 : 0;\n const angle = TWO_PI * slice.value / whole;\n const rot = 360.0 * partial / whole;\n const x = (slice.value >= whole) ? /* handling single slice */ 49.9 : 50 * (1 + Math.sin(angle));\n const y = 50 * (1 - Math.cos(angle));\n // set geometry data\n const c = this._safeCutout, r = c * 50.0;\n path.style.fill = slice.color; //.setAttribute('fill', slice.color || (path.getAttribute('fill') || '#000'));\n //path.setAttribute('transform', `rotate(${rot} 50 50)`);\n path.style.transform = `rotate(${rot}deg)`;\n path.style.transformOrigin = '50% 50%';\n const d = this.maskBasedRendering ?\n `M50,50 V0 A50,50 0 ${largeFlag} 1 ${x} ${y} L50,50 Z` :\n `M50,0 A50,50 0 ${largeFlag} 1 ${x} ${y} l${(50 - x) * (1.0 - c)},${(50 - y) * (1.0 - c)} A${r},${r} 0 ${largeFlag} 0 50,${(50 - r)} Z`;\n path.setAttribute('d', d);\n slice.normalizedPolarCoords = { radius: c + Math.SQRT1_2 * (1.0 - c), angle: /* deg to rad */ Math.PI * rot / 180.0 + angle / 2 };\n }\n _isSliceOk(slice) {\n return !slice.disabled //&& slice.value > 0\n ;\n }\n _padSlice(path) {\n const paddingPixels = this._safeSlicePaddingPixels;\n if (paddingPixels > 0) {\n path.setAttribute('mask', `url(#${this._sliceMaskId})`);\n }\n else {\n path.removeAttribute('mask');\n }\n }\n draw() {\n const g = this._ensureArea(), pCount = g.children.length, chartArea = this._svg.parentElement;\n let ndx = 0, sum = .0, progress = .0;\n if (Utils.isNullOrEmpty(this.items)) {\n g.innerHTML = '';\n Utils.removeClass(chartArea, 'chart-has-data');\n }\n else {\n Utils.addClass(chartArea, 'chart-has-data');\n for (let slice of this.items) {\n if (!this._isSliceOk(slice)) {\n continue;\n }\n sum += slice.value;\n }\n if (sum <= 0) {\n g.innerHTML = '';\n Utils.removeClass(chartArea, 'chart-has-data');\n }\n else {\n for (let slice of this.items) {\n if (!this._isSliceOk(slice)) {\n continue;\n }\n let p;\n if (ndx >= pCount) {\n const g_n = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n g_n.setAttribute('class', 'chart-series ' + PCSS + '-pie-slice' + (Utils.isNullOrEmpty(slice.className) ? '' : (' ' + slice.className)));\n p = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n g_n.appendChild(p);\n g.appendChild(g_n);\n // add listeners (click, mouse-..., touch-...)\n slice._assignUi(g_n);\n this._slices.set(g_n, slice);\n }\n else {\n p = g.children.item(ndx).firstElementChild;\n }\n if (slice.value > 0) {\n this._drawSlice(p, slice, sum, progress);\n this._padSlice(p);\n progress += slice.value;\n p.removeAttribute('display');\n }\n else {\n p.setAttribute('display', 'none');\n }\n ndx++;\n }\n }\n }\n while (ndx < g.children.length) {\n const slices = this._slices, g_n = g.children.item(ndx);\n // remove listeners\n if (slices.has(g_n)) {\n slices.get(g_n)._disposeUi();\n slices.delete(g_n);\n }\n g.removeChild(g_n);\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemPieChartElement.prototype, \"cutout\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemPieChartElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemPieChartElement.prototype, \"maskBasedRendering\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemPieChartElement.prototype, \"slicePadding\", void 0);\n__decorate([\n Debounce(true)\n], PacemPieChartElement.prototype, \"draw\", null);\nPacemPieChartElement = __decorate([\n CustomElement({ tagName: P + '-pie-chart' })\n], PacemPieChartElement);\nexport { PacemPieChartElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","this","Utils","CustomUIEvent","Components","Watch","PropertyConverters","CustomElement","P","SVG_NS","CustomElementUtils","PropertyChangeEventName","PCSS","Throttle","PADDING_PIXELS","Logging","Debounce","DeepMerger"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* @pacem/pacem v1.0.0-
|
|
3
|
-
*
|
|
1
|
+
/*!
|
|
2
|
+
* @pacem/pacem v1.0.0-amaldi (https://js.pacem.it)
|
|
3
|
+
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
!function(t,e){"use strict";var i=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};const r=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"],s=864e5,n="pacem:chart-series:dataitem",a="pacem:chart-series:series";function o(t,e,i){i??=Math.min(l(t,e),10);const r=(e-t)/i,s=Math.pow(10,Math.floor(Math.log10(r))),n=[1,2,5,10].map(t=>t*s).filter(t=>t>=r).reduce((t,e)=>Math.min(t,e),Number.POSITIVE_INFINITY);return{min:Math.floor(t/n)*n,max:Math.ceil(e/n)*n,round:n}}function l(t,e){const i=e-t;if(!(i>0))return 2;const r=Math.floor(Math.log10(i)),s=Math.pow(10,-r);if(0!=r)return l(t*s,e*s);const n=t=>{const e=Math.floor(10*Math.abs(t));return(e+10-e%10).roundoff()},a=n(i);let o=10;0!==t&&(o=n(Math.abs(e)));const c=h(o,a);return 1===c?a:Math.max(c,10-c)}function h(t,e){return t<=0?e:h(e%t,t)}class c extends e.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}let d=class extends e.Components.PacemItemElement{get values(){return this.datasource}};i([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],d.prototype,"datasource",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.String})],d.prototype,"label",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.String})],d.prototype,"color",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],d.prototype,"datapoints",void 0),i([e.Watch()],d.prototype,"_uiElements",void 0),d=i([e.CustomElement({tagName:e.P+"-chart-series"})],d);const u="http://www.w3.org/2000/svg";class m extends e.Components.PacemItemsContainerElement{constructor(){super(),this._itemPropertyChangedCallback=t=>{const e=t.detail.propertyName;"datasource"!==e&&"label"!==e&&"datapoints"!==e&&"cssClass"!==e&&"color"!==e||this.draw()},this._series=[],this._resizeHandler=t=>{this._size=t.detail,this.draw()},this._broadcastHandler=t=>{const i=t.currentTarget,r=e.CustomElementUtils.getAttachedPropertyValue(i,n);if(e.Utils.isNull(r))return;const s=this.getAnchorPoint(i),o=new c("item"+t.type,{detail:{dataItem:r,anchorPoint:s}},t),l=e.CustomElementUtils.getAttachedPropertyValue(i,a);l instanceof d&&l.dispatchEvent(o),this.dispatchEvent(o)},this._key=e.Utils.uniqueCode()}validate(t){return t instanceof d}register(t){return!!super.register(t)&&(t.addEventListener(e.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}unregister(t){return!!super.unregister(t)&&(t.removeEventListener(e.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}propertyChangedCallback(t,i,r,s){if(super.propertyChangedCallback(t,i,r,s),"target"===t){this._div!=i&&this._div&&this._div.remove(),this._div=null,this._body=null;const t=i;t&&(t.classList.remove(e.PCSS+"-chart-area"),t.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(t){case"items":this._databindAndDrawDebounced();break;case"datasource":this._databind();case"yAxisDensity":case"xAxisDensity":case"xAxisType":case"yAxisMax":case"xAxisPosition":case"yAxisFormat":this.draw()}}_databindAndDrawDebounced(){cancelAnimationFrame(this._handle),this._handle=requestAnimationFrame(()=>{this._databind(),this.draw()})}_databind(){this._datasource=e.Utils.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();const t=this._resizer;e.Utils.isNull(t)||(t.removeEventListener(e.Components.ResizeEventName,this._resizeHandler,!1),t.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(t=this.target||this._div){if(e.Utils.isNull(this._resizer)){const t=e.CustomElementUtils.findAncestorShell(this);(this._resizer=t.appendChild(new e.Components.PacemResizeElement)).addEventListener(e.Components.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=t}get chartSize(){return this._size}get chartSeries(){return this._series}get chartBody(){return this._body}get chartGrid(){return this._grid}get chartMask(){return this._mask}get chartKey(){return this._key}get chartContainer(){return this._div}assignUiBehaviors(t,i,s,o){const l=!e.Utils.isNull(e.CustomElementUtils.getAttachedPropertyValue(t,n)),h=e.Utils.extend({series:i.label,color:o||i.color},s);e.CustomElementUtils.setAttachedPropertyValue(t,n,h),e.CustomElementUtils.setAttachedPropertyValue(t,a,i),l||r.forEach(e=>{t.addEventListener(e,this._broadcastHandler)})}disposeUiBehaviors(t){e.CustomElementUtils.deleteAttachedPropertyValue(t,n),e.CustomElementUtils.deleteAttachedPropertyValue(t,a),r.forEach(e=>{t.removeEventListener(e,this._broadcastHandler)})}ensureChartContainer(){if(e.Utils.isNull(this._div)){let t=this._div=this.target||document.createElement("div");t.classList.add(e.PCSS+"-chart-area"),t!=this.target&&this.parentElement.insertBefore(t,this)}return this._div}ensureChartBody(t,i,r){if(e.Utils.isNull(this._body)){let i=this._body=document.createElementNS(u,"svg");i.setAttribute("pacem",""),i.setAttribute("class",e.PCSS+"-"+t+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(u,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(u,"defs"),n=this._mask=document.createElementNS(u,"mask"),a=document.createElementNS(u,"rect");a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("width","100%"),a.setAttribute("height","100%");let o=document.createElementNS(u,"rect");o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("fill","#fff"),n.id="gnrc_mask_"+this._key,n.appendChild(a),n.appendChild(o),s.appendChild(n),i.appendChild(s),i.appendChild(r),this._div.appendChild(i)}return this._body}chartDataItemToPoint(t,i){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(t.label),y:t.value};case"date":return{x:e.Utils.parseDate(t.label).valueOf(),y:t.value};case"string":return{x:i.findIndex(e=>e.label==t.label),y:t.value};default:throw"Not supported."}}getVirtualGrid(t,i,r,n,a,l=this.xAxisType,h,c){const d=o(n,a,h),u=d.round;var m=[];for(let t=d.min;t<=d.max;t+=u)m.push(t.roundoff());let p=e.Utils.lang(this),v=null;const g=this.xAxisFormat;if(!e.Utils.isNullOrEmpty(g))switch(l){case"number":v=t=>Intl.NumberFormat(p,g).format(t);break;case"date":v=t=>Intl.DateTimeFormat(p,g).format(e.Utils.parseDate(t))}const y=function(t,i,r,n,a,o=10){const l="number"===i||"date"===i?n-r:Math.max(1,t.length-1);for(var h=[],c=1,d=o-1;d>1;d--)if(l%d===0){c=l/d;break}1===c&&l>o&&(c=l);const u="function"==typeof a?a:c>=s?t=>t.toLocaleDateString(a):t=>t.toLocaleTimeString(a),m="function"==typeof a?a:c<s?t=>t.toLocaleString(a):u,p="function"==typeof a?a:t=>t.toLocaleString(a);for(var v=0;v<=l;v+=c){let s;switch(i){case"string":if(v>=t.length)continue;s=t[v].label;break;case"number":s=p(r+v);break;case"date":s=(0==v?m:u)(e.Utils.parseDate(r+v));break;default:throw"Not supported."}h.push(s)}return h}(t,l,i,r,v??p,c);return{x:y,y:m}}wipeOut(t=this._series,e=0){for(var i=t.length-1;i>=e;i--)t[i].remove();t.splice(e)}buildLinearGradient(t,i=!1){const r=document.createElementNS(u,"linearGradient");r.id=this.chartKey+"_grad"+t+(i?"_inverted":""),i&&e.Utils.addClass(r,"bottom-up"),r.setAttribute("x1","0%"),r.setAttribute("x2","0%"),r.setAttribute("y1","0%"),r.setAttribute("y2","100%"),r.setAttribute("spreadMethod","pad");const s=document.createElementNS(u,"stop");s.setAttribute("offset","0%");const n=document.createElementNS(u,"stop");return n.setAttribute("offset","100%"),r.appendChild(s),r.appendChild(n),r}setGradientColor(t,e){for(let i=0;i<t.children.length;i++){const r=t.children.item(i);r instanceof SVGStopElement&&(r.style.stopColor=e)}}estimateYAxisLabelWidth(t){const e=this.formatYAxisLabel(t);return this.estimateLabelWidth(e)}estimateLabelWidth(t){const i=this._grid;if(e.Utils.isNull(i))throw new Error("Unable to estimate label without an underlying grid available.");const r=document.createElementNS(u,"text");r.textContent=t,i.appendChild(r);const s=e.Utils.offset(r);return r.remove(),s.width}formatYAxisLabel(t){const i=this.yAxisFormat;return e.Utils.isNullOrEmpty(i)?t.toString():Intl.NumberFormat(e.Utils.lang(this),i).format(t)}estimateXAxisLabelWidth(t){const e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(t){const i=this.xAxisFormat,r=e.Utils.lang(this);switch(this.xAxisType){case"date":const s=e.Utils.Dates.parse(t);return e.Utils.isNullOrEmpty(i)?s.toLocaleString(r):Intl.DateTimeFormat(r,i).format(s);case"number":const n=t;return e.Utils.isNullOrEmpty(i)?n.toLocaleString(r):Intl.NumberFormat(r,i).format(n);default:return t}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(t){const i=e.Utils.offset(t);return{x:i.left+.5*i.width,y:i.top+.5*i.height}}}i([e.Watch({converter:e.PropertyConverters.Element})],m.prototype,"target",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.String})],m.prototype,"xAxisType",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.String})],m.prototype,"xAxisPosition",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],m.prototype,"datasource",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"yAxisDensity",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"xAxisDensity",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"yAxisMin",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"yAxisMax",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],m.prototype,"yAxisFormat",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],m.prototype,"xAxisFormat",void 0),i([e.Throttle(!0)],m.prototype,"draw",null);var p=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};function v(t,i,r){let s=t,n=t;const a=e.Utils.isNull(i),o=e.Utils.isNull(r);if(!a||!o){const e=3;let l,h;a||(l=(t.y-i.y)/(t.x-i.x)),o||(h=(r.y-t.y)/(r.x-t.x));const c=((h||l||0)+(l||h||0))/2,d=a?0:(t.x-i.x)/e,u=o?0:(r.x-t.x)/e;s={x:t.x-d,y:t.y-d*c},n={x:t.x+u,y:t.y+u*c}}return{c0:s,c1:n}}const g=e.CustomElementUtils.getAttachedPropertyValue,y=e.CustomElementUtils.setAttachedPropertyValue;e.CustomElementUtils.deleteAttachedPropertyValue;const f="pacem:chart-series:area",b="http://www.w3.org/2000/svg";let x=class extends m{constructor(){super(...arguments),this.#t=!1,this._enterHandler=t=>{this.#t=!0},this._leaveHandler=t=>{this.#t=!1},this._moveHandler=t=>{this.#t},this._chartFillSeries=[]}_getVirtualGrid(t,e,i,r,s,n=this.xAxisType,a,o){return super.getVirtualGrid(t,e,i,r,s,n,a,o)}_wipe(t=this.chartSeries,e=0){super.wipeOut(t,e)}viewActivatedCallback(){super.viewActivatedCallback(),this._setupBehavior()}disconnectedCallback(){this._dismantleBehavior(),super.disconnectedCallback()}propertyChangedCallback(t,e,i,r){switch(super.propertyChangedCallback(t,e,i,r),t){case"type":case"aspectRatio":this.draw()}}_setupBehavior(){this.addEventListener("mouseenter",this._enterHandler,!1),this.addEventListener("mouseleave",this._enterHandler,!1),this.addEventListener("mousemove",this._moveHandler,!1)}_dismantleBehavior(){this.removeEventListener("mouseenter",this._enterHandler,!1),this.removeEventListener("mouseleave",this._leaveHandler,!1),this.removeEventListener("mousemove",this._moveHandler,!1)}#t;_buildLinearGradient(t){return super.buildLinearGradient(t)}_setGradientColor(t,e){super.setGradientColor(t,e)}drawSeries(t){if(!this.isReady||e.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const i=this.type||"line",r=24;var s=this.chartSize;if(s.height<=r||s.width<=r)return;if(e.Utils.isNullOrEmpty(t)||t.every(t=>e.Utils.isNullOrEmpty(t.values)))return void this._wipe();const n=this.ensureChartBody("line",s.width,s.height);this.log(e.Logging.LogLevel.Debug,`Drawing ${i} chart.`);const a=this.xAxisType||"string";let o=this.yAxisMin??Number.NaN,l=this.yAxisMax??Number.NaN,h=Number.NaN,c=Number.NaN,d=1;for(let i of t){let t=i.values;if(t&&t.length){let i=0;for(let r of t){let s=this.chartDataItemToPoint(r,t);e.Utils.isNull(this.yAxisMin)&&(o=isNaN(o)?s.y:Math.min(o,s.y)),e.Utils.isNull(this.yAxisMax)&&(l=isNaN(l)?s.y:Math.max(l,s.y)),0===i?h=isNaN(h)?s.x:Math.min(h,s.x):i===t.length-1&&(c=isNaN(c)?s.x:Math.max(c,s.x)),i++}}}const u=t.find(t=>!e.Utils.isNullOrEmpty(t.values)),m=this._getVirtualGrid(u.values,h,c,o,l,a,this.yAxisDensity,this.xAxisDensity),p=m.y[m.y.length-1],x=m.y[0];if(p===x)return;const C=m.y.reduce((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12),r),A=.5*m.x.reduce((t,e)=>Math.max(t,this.estimateXAxisLabelWidth(e)),r),_=Math.max(A,C),w=A,E=s.width-_-w,N=s.height-48,S=N*(1-(p-x-(l-o))/(p-x)),P=N*(p-l)/(p-x);("number"!==a||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(d=E/S,n.setAttribute("height",s.height.toString()),n.setAttribute("width",s.width.toString())),n.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let M=0;const U=100*d/(c-h),k=100/(l-o),$=2400/S,L=(t,e)=>{let i=this.chartDataItemToPoint(t,e);return i.y*=k,i.x=(i.x-h)*U,i},O=this.chartSeries,W=this._chartFillSeries,D=this.chartGrid,B="spline"===i||"splinearea"===i;for(let r of t){let t,s,a;if(O.length>M)t=O[M],s=W[M],a=s.firstElementChild.firstElementChild;else{t=document.createElementNS(b,"svg"),t.setAttribute("pacem",""),n.appendChild(t),s=document.createElementNS(b,"svg"),s.setAttribute("pacem",""),n.insertBefore(s,n.children.item(M+2));const e=document.createElementNS(b,"defs");e.appendChild(a=this._buildLinearGradient(M)),s.appendChild(e),s.appendChild(document.createElementNS(b,"path")),W.push(s),t.appendChild(document.createElementNS(b,"path")),O.push(t)}let l="chart-series";const h="area"===i||"splinearea"===i;e.Utils.isNullOrEmpty(r.className)||(l+=" "+r.className),[t,s].forEach(t=>{t.setAttribute("class",l),t.setAttribute("x",_.toString()),t.setAttribute("y",P.toString()),t.setAttribute("width",E.toString()),t.setAttribute("height",(S+48).toString())}),e.Utils.addClass(s,e.PCSS+"-inert");let c=s.children.item(1),d=t.firstElementChild;d.style.stroke=r.color,c.style.stroke=d.style.fill="none",this._setGradientColor(a,r.color),c.style.fill=`url(#${a.id})`,c.style.display=h?"":"none";let u="",m=r.values;if(m&&m.length){const i=(e,i,r,s,n)=>{const a=i+1;let o;t.children.length>a?o=t.children.item(a):(o=document.createElementNS(b,"line"),o.setAttribute("class","circle"),t.appendChild(o));const l=e.x.toString(),h=(-e.y).toString();o.setAttribute("x1",l),o.setAttribute("y1",h),o.setAttribute("x2",l),o.setAttribute("y2",h),o.style.stroke=n,this.assignUiBehaviors(o,r,s,n)},s=()=>{const e=r.datapoints?m.length+1:1;for(let r=t.children.length-1;r>=e;r--){var i=t.children.item(r);this.disposeUiBehaviors(i),i.remove()}};if(B){let t,s,n;for(let a=0;a<m.length;a++){const o=m[a];if(isNaN(o.value))continue;let l;s||(s=L(o,m)),B&&a<m.length-1&&(l=L(m[a+1],m));let h=g(r,f,0);h+=o.value,y(r,f,h);var H=v(s,t,l);u+=e.Utils.isNullOrEmpty(u)?`M${s.x},${-s.y} `:`C${n.x},${-n.y} ${H.c0.x},${-H.c0.y} ${s.x},${-s.y} `,r.datapoints&&i(s,a,r,o,r.color),t=s,s=l,n=H.c1}}else{let t=0;for(let s of m){if(isNaN(s.value))continue;const n=L(s,m);let a=g(r,f,0);a+=s.value,y(r,f,a),u+=e.Utils.isNullOrEmpty(u)?`M${n.x},${-n.y} `:`L${n.x},${-n.y} `,r.datapoints&&i(n,t,r,s,r.color),t++}}s()}d.setAttribute("d",u),c.setAttribute("d",u+`V${-o*k} H0 Z`),M++}this._wipe(W,M),this._wipe(O,M);const R=`0 ${-(l*k+$)} ${100*d} ${100+2*$}`;for(var T of O.concat(W))T.setAttribute("viewBox",R);let z,I=this.chartMask.children.item(1);if(I.setAttribute("x",(0).toString()),I.setAttribute("height",(s.height-r).toString()),D.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`),m.x.length<=1||m.y.length<=1){for(let t=D.children.length-1;t>=0;t--)D.children.item(t).remove();return}D.children.length>0?z=D.children.item(0):(z=document.createElementNS(b,"path"),D.appendChild(z));let F=0,V=(t,e,i,r)=>{const s=t+1;let n;return D.children.length<=s?(n=document.createElementNS(b,"text"),D.appendChild(n)):n=D.children.item(s),n.textContent=r,n.setAttribute("x",e.toString()),n.setAttribute("y",i.toString()),n},G=`M${_},24 v${N}`,j=0;const Y=E/(m.x.length-1),q=N/(m.y.length-1);if("none"!==this.xAxisPosition)for(var J of m.x){const t=_+j*Y;if("top"===this.xAxisPosition){G+=` M${t},24 v-6`;let e=V(F++,t,0,J);e.setAttribute("text-anchor","middle"),e.setAttribute("alignment-baseline","hanging")}else{let e=N+r;G+=` M${t},${e} v6`,V(F++,t,e+r,J).setAttribute("text-anchor","middle")}j++}for(var X of(j=0,m.y)){const t=N+r-j*q,e=_-6;G+=` M${e},${t} H${E+_}`,V(F++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),j++}z.setAttribute("d",G);for(let t=D.children.length-1;t>F;t--)D.children.item(t).remove()}};p([e.Watch({emit:!1,converter:e.PropertyConverters.String})],x.prototype,"type",void 0),p([e.Watch({converter:e.PropertyConverters.String})],x.prototype,"aspectRatio",void 0),x=p([e.CustomElement({tagName:e.P+"-chart"})],x);var C=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};const A="http://www.w3.org/2000/svg";let _=class extends m{constructor(){super(...arguments),this.groupWidth=0}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"type"!==t&&"groupWidth"!==t||this.draw()}_safen(t=this.groupWidth){return Math.min(1,Math.max(t||.75,0))}drawSeries(t){if(!this.isReady||e.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const i=this.type||"cluster",r=24;var s=this.chartSize;if(s.height<=r||s.width<=r)return;if(e.Utils.isNullOrEmpty(t)||t.every(t=>e.Utils.isNullOrEmpty(t.values)))return void this.wipeOut();const n=this.ensureChartBody("column",s.width,s.height);this.log(e.Logging.LogLevel.Debug,`Drawing ${i} chart.`);const a=this.xAxisType||"string";let o=this.yAxisMin??0,l=this.yAxisMax??0,h=0,c=0,d=0,u=1;const m={negative:[],positive:[]};for(let i of t){let t=i.values;if(!e.Utils.isNullOrEmpty(t)){let i=0;for(let r of t){m.positive[i]=m.positive[i]||0,m.negative[i]=m.negative[i]||0;let s=this.chartDataItemToPoint(r,t);e.Utils.isNull(this.yAxisMin)&&(o=Math.min(o,s.y)),e.Utils.isNull(this.yAxisMax)&&(l=Math.max(l,s.y)),h=Math.min(h,s.x),c=Math.max(c,s.x),s.y>0?m.positive[i]+=s.y:s.y<0&&(m.negative[i]+=s.y),i++}d=Math.max(d,t.length)}}const p="stack"===i;p&&(e.Utils.isNull(this.yAxisMin)&&(o=Math.min.apply(null,m.negative)),e.Utils.isNull(this.yAxisMax)&&(l=Math.max.apply(null,m.positive))),0===c&&c===h&&(c=1);const v=(c-h)/d,g=.5*v,y=v*this._safen(this.groupWidth),f=.5*y,b=t.find(t=>!e.Utils.isNullOrEmpty(t.values)),x=this.getVirtualGrid(b.values,h-g,c+g,o,l,a,this.yAxisDensity,this.xAxisDensity),C=x.y[x.y.length-1],_=x.y[0];if(C===_)return;const w=x.y.reduce((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12),r),E=s.width-w-r,N=s.height-48,S=N*(1-(C-_-(l-o))/(C-_)),P=N*(C-l)/(C-_);u=E/S,n.setAttribute("height",s.height.toString()),n.setAttribute("width",s.width.toString()),n.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let M=0;const U=100*u/(c-h),k=100/(l-o),$=2400/S,L=this.chartSeries,O=this.chartGrid,W=(g-h)*U,D=(t,e)=>{const i=this.chartDataItemToPoint(t,e);return{x:W+2*i.x*W,y:i.y*k}};var B=new Array(d);for(let i of t){let r,s,n,a;if(L.length>M)r=L[M],s=r.firstElementChild.firstElementChild,n=r.firstElementChild.lastElementChild,a=r.lastElementChild;else{r=document.createElementNS(A,"svg"),r.setAttribute("pacem",""),O.insertAdjacentElement("afterend",r);const t=document.createElementNS(A,"defs");t.appendChild(s=this.buildLinearGradient(M)),t.appendChild(n=this.buildLinearGradient(M,!0)),r.appendChild(t),r.appendChild(a=document.createElementNS(A,"g")),L.push(r)}var H="chart-series series-fill";e.Utils.isNullOrEmpty(i.className)||(H+=" "+i.className),r.setAttribute("class",H),r.setAttribute("x",w.toString()),r.setAttribute("y",P.toString()),r.setAttribute("width",E.toString()),r.setAttribute("height",(S+48).toString());const o=i.values,l=t=>{for(;t>=a.children.length;)a.appendChild(document.createElementNS(A,"rect"));const e=a.children.item(t);e.style.stroke=i.color;const r=o[t].value<0?n:s;return this.setGradientColor(r,i.color),e.style.fill=`url(#${r.id})`,e},h=10,c=(t,e,i,r=e)=>{const s=-Math.max(e.y,i.y),n=Math.abs(i.y-e.y),a=()=>{t.setAttribute("y",s.toFixed(h)),t.setAttribute("height",n.toFixed(h))};t.hasAttribute("y")?a():(t.setAttribute("y","-"+r.y.toFixed(h)),t.setAttribute("height","0"),requestAnimationFrame(a))};if(!e.Utils.isNullOrEmpty(o)){const r=D({value:0,label:o[0].label},o);if(p){const t=f*U,s=(y*U).toFixed(h);for(let n=0;n<o.length;n++){const a=o[n];e.Utils.isNullOrEmpty(B[n])&&(B[n]={positive:0,negative:0});const d=B[n];let u=d.positive,m=d.negative;const p=a.value<0,v=p?m:u+a.value,g=p?m+a.value:u,y=D({label:a.label,value:v},o),f=D({label:a.label,value:g},o),b=y.x-t,x=l(n);this.assignUiBehaviors(x,i,a),x.setAttribute("x",b.toFixed(h)),x.setAttribute("width",s),c(x,f,y,r),p?d.negative=g:d.positive=v}}else{const e=f*U,s=2*e/t.length,n=s.toFixed(h);for(let t=0;t<o.length;t++){const a=o[t],d=D(a,o),u=d.x-e+s*M,m=l(t);this.assignUiBehaviors(m,i,a),m.setAttribute("x",u.toFixed(h)),m.setAttribute("width",n),c(m,r,d)}}}for(let t=a.children.length-1;t>=o?.length;t--){const e=a.children.item(t);this.disposeUiBehaviors(e),e.remove()}M++}this.wipeOut(L,M);const R=`0 ${-(l*k+$)} ${100*u} ${100+2*$}`;for(var T of L)T.setAttribute("viewBox",R);let z,I=this.chartMask.children.item(1);if(I.setAttribute("x",(0).toString()),I.setAttribute("height",(s.height-r).toString()),O.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`),x.x.length<1||x.y.length<=1){for(let t=O.children.length-1;t>=0;t--)O.children.item(t).remove();return}O.children.length>0?z=O.children.item(0):(z=document.createElementNS(A,"path"),O.appendChild(z));let F=0,V=(t,e,i,r)=>{const s=t+1;let n;return O.children.length<=s?(n=document.createElementNS(A,"text"),O.appendChild(n)):n=O.children.item(s),n.textContent=r,n.setAttribute("x",e.toString()),n.setAttribute("y",i.toString()),n},G=`M${w},24 v${N}`,j=0;const Y=E/x.x.length,q=N/(x.y.length-1);if("none"!==this.xAxisPosition){const t=.5*Y+w;for(var J of x.x){let e=t+j*Y;if("top"===this.xAxisPosition){G+=` M${e},24 v-6`;let t=V(F++,e,0,J);t.setAttribute("text-anchor","middle"),t.setAttribute("alignment-baseline","hanging")}else{let t=N+r;G+=` M${e},${t} v6`,V(F++,e,t+r,J).setAttribute("text-anchor","middle")}j++}}for(var X of(j=0,x.y)){const t=N+r-j*q,e=w-6;G+=` M${e},${t} H${E+w}`,V(F++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),j++}z.setAttribute("d",G);for(let t=O.children.length-1;t>F;t--)O.children.item(t).remove()}};C([e.Watch({converter:e.PropertyConverters.String})],_.prototype,"type",void 0),C([e.Watch({converter:e.PropertyConverters.Number})],_.prototype,"groupWidth",void 0),_=C([e.CustomElement({tagName:e.P+"-column-chart"})],_);var w=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let E=class extends e.Components.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return e.CustomElementUtils.findAncestorOfType(this,P)}get chart(){return this.container}getCenterOfMass(){const t=this.chart&&this.chart.area;if(e.Utils.isNull(t))return null;const i=e.Utils.offset(t),r=i.width/2+i.left,s=i.top+i.height/2,n=.5*Math.min(i.width,i.height),a=this.normalizedPolarCoords,o=S-a.angle;return{y:s-n*a.radius*Math.sin(o),x:r+n*a.radius*Math.cos(o)}}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),!r&&this.chart&&"normalizedPolarCoords"!=t&&this.chart.draw()}_assignUi(t){const e=this._ui=t;r.forEach(t=>{e.addEventListener(t,this._broadcastHandler)})}_disposeUi(){e.Utils.isNull(this._ui)||r.forEach(t=>{this._ui.removeEventListener(t,this._broadcastHandler)})}};w([e.Watch({converter:e.PropertyConverters.Number})],E.prototype,"value",void 0),w([e.Watch({converter:e.PropertyConverters.String})],E.prototype,"label",void 0),w([e.Watch({converter:e.PropertyConverters.String})],E.prototype,"color",void 0),w([e.Watch({converter:e.PropertyConverters.Json})],E.prototype,"normalizedPolarCoords",void 0),E=w([e.CustomElement({tagName:e.P+"-pie-slice"})],E);const N=2*Math.PI,S=.5*Math.PI;let P=class extends e.Components.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this.slicePadding=0,this._slices=new WeakMap,this._key=e.Utils.uniqueCode()}validate(t){return t instanceof E}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(t,i,r,s){if(super.propertyChangedCallback(t,i,r,s),"target"===t){this._g=null,this._div&&this._div.remove();const t=i;t&&(t.classList.remove(e.PCSS+"-chart-area"),t.innerHTML=""),this.draw()}else s||"cutout"!==t&&"items"!==t&&"slicePadding"!==t||this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(e.Utils.isNull(this._g)){let t=this.target||(this._div=document.createElement("div"));t.classList.add(e.PCSS+"-chart-area");let i=this._svg=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("pacem",""),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.setAttribute("viewBox","0 0 100 100"),i.classList.add(e.PCSS+"-pie-chart");let r=document.createElementNS("http://www.w3.org/2000/svg","defs"),s=this._g=document.createElementNS("http://www.w3.org/2000/svg","g");i.appendChild(r),i.appendChild(s),t.appendChild(i),this._div&&this.parentElement.insertBefore(t,this)}if(this.maskBasedRendering){if(e.Utils.isNull(this._mask)){let t=document.createElementNS("http://www.w3.org/2000/svg","mask");t.id="pie_mask_"+this._key;let e=document.createElementNS("http://www.w3.org/2000/svg","rect");e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("width","100"),e.setAttribute("height","100"),e.setAttribute("fill","#fff");let i=this._mask=document.createElementNS("http://www.w3.org/2000/svg","circle");i.setAttribute("cx","50"),i.setAttribute("cy","50");const r=this._svg.firstElementChild;t.appendChild(e),t.appendChild(i),r.appendChild(t),this._g.setAttribute("mask",`url(#${t.id})`)}const t=50*this._safeCutout;this._mask.setAttribute("r",`${t}`)}else e.Utils.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));const t=this._safeSlicePaddingPixels;if(t>0){const i=(t/this._svg.getCTM().a).roundoff(),r=this._sliceMaskId,s=this._svg.firstElementChild;let n=s.querySelector(`#${r}`);e.Utils.isNull(n)?(n=document.createElementNS("http://www.w3.org/2000/svg","mask"),n.id=r,s.appendChild(n)):n.innerHTML="";const a=document.createElementNS("http://www.w3.org/2000/svg","path"),o=`M${50+i},0 H100 V100 H0 V0 H50 V50 h${i} Z`;a.setAttribute("d",o),a.setAttribute("fill","#fff"),n.appendChild(a)}return this._g}get _sliceMaskId(){return"pieslice_mask_"+this._key}get _safeCutout(){return Math.min(1,Math.max(0,this.cutout))||0}get _safeSlicePaddingPixels(){return Math.max(0,this.slicePadding??0)}_drawSlice(t,e,i,r){const s=e.value>.5*i?1:0,n=N*e.value/i,a=360*r/i,o=e.value>=i?49.9:50*(1+Math.sin(n)),l=50*(1-Math.cos(n)),h=this._safeCutout,c=50*h;t.style.fill=e.color,t.style.transform=`rotate(${a}deg)`,t.style.transformOrigin="50% 50%";const d=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${s} 1 ${o} ${l} L50,50 Z`:`M50,0 A50,50 0 ${s} 1 ${o} ${l} l${(50-o)*(1-h)},${(50-l)*(1-h)} A${c},${c} 0 ${s} 0 50,${50-c} Z`;t.setAttribute("d",d),e.normalizedPolarCoords={radius:h+Math.SQRT1_2*(1-h),angle:Math.PI*a/180+n/2}}_isSliceOk(t){return!t.disabled}_padSlice(t){this._safeSlicePaddingPixels>0?t.setAttribute("mask",`url(#${this._sliceMaskId})`):t.removeAttribute("mask")}draw(){const t=this._ensureArea(),i=t.children.length,r=this._svg.parentElement;let s=0,n=0,a=0;if(e.Utils.isNullOrEmpty(this.items))t.innerHTML="",e.Utils.removeClass(r,"chart-has-data");else{e.Utils.addClass(r,"chart-has-data");for(let t of this.items)this._isSliceOk(t)&&(n+=t.value);if(n<=0)t.innerHTML="",e.Utils.removeClass(r,"chart-has-data");else for(let r of this.items){if(!this._isSliceOk(r))continue;let o;if(s>=i){const i=document.createElementNS("http://www.w3.org/2000/svg","g");i.setAttribute("class","chart-series "+e.PCSS+"-pie-slice"+(e.Utils.isNullOrEmpty(r.className)?"":" "+r.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(o),t.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else o=t.children.item(s).firstElementChild;r.value>0?(this._drawSlice(o,r,n,a),this._padSlice(o),a+=r.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<t.children.length;){const e=this._slices,i=t.children.item(s);e.has(i)&&(e.get(i)._disposeUi(),e.delete(i)),t.removeChild(i)}}};w([e.Watch({converter:e.PropertyConverters.Number})],P.prototype,"cutout",void 0),w([e.Watch({converter:e.PropertyConverters.Element})],P.prototype,"target",void 0),w([e.Watch({converter:e.PropertyConverters.Boolean})],P.prototype,"maskBasedRendering",void 0),w([e.Watch({converter:e.PropertyConverters.Number})],P.prototype,"slicePadding",void 0),w([e.Debounce(!0)],P.prototype,"draw",null),P=w([e.CustomElement({tagName:e.P+"-pie-chart"})],P);var M=Object.freeze({__proto__:null,ChartEvent:c,MANAGED_EVENTS:r,get PacemChartElement(){return x},get PacemChartSeriesElement(){return d},get PacemColumnChartElement(){return _},get PacemPieChartElement(){return P},get PacemPieSliceElement(){return E},PacemSeriesChartElement:m}),U=Object.freeze({__proto__:null,Charts:M}),k=Object.freeze({__proto__:null,Components:U});t.DeepMerger.merge(k)}(Pacem,Pacem);
|