@pacem/pacem 1.0.0-bessel → 1.0.0-binet
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 +149 -2
- package/dist/browser/pacem-2d.js.map +1 -1
- package/dist/browser/pacem-2d.min.js +1 -1
- package/dist/browser/pacem-3d.js +646 -2
- package/dist/browser/pacem-3d.js.map +1 -1
- package/dist/browser/pacem-3d.min.js +1 -1
- package/dist/browser/pacem-charts.js +21 -1
- package/dist/browser/pacem-charts.js.map +1 -1
- package/dist/browser/pacem-charts.min.js +1 -1
- package/dist/browser/pacem-cms.js +118 -3
- package/dist/browser/pacem-cms.js.map +1 -1
- package/dist/browser/pacem-cms.min.js +1 -1
- package/dist/browser/pacem-core.js +870 -9
- package/dist/browser/pacem-core.js.map +1 -1
- package/dist/browser/pacem-core.min.js +2 -2
- package/dist/browser/pacem-foundation.js +296 -1
- package/dist/browser/pacem-foundation.js.map +1 -1
- package/dist/browser/pacem-foundation.min.js +1 -1
- package/dist/browser/pacem-fx.js +18 -1
- package/dist/browser/pacem-fx.js.map +1 -1
- package/dist/browser/pacem-fx.min.js +1 -1
- package/dist/browser/pacem-logging.js +15 -1
- package/dist/browser/pacem-logging.js.map +1 -1
- package/dist/browser/pacem-logging.min.js +1 -1
- package/dist/browser/pacem-maps.js +97 -1
- package/dist/browser/pacem-maps.js.map +1 -1
- package/dist/browser/pacem-maps.min.js +1 -1
- package/dist/browser/pacem-media.js +14 -1
- package/dist/browser/pacem-media.js.map +1 -1
- package/dist/browser/pacem-media.min.js +1 -1
- package/dist/browser/pacem-networking.js +22 -1
- package/dist/browser/pacem-networking.js.map +1 -1
- package/dist/browser/pacem-networking.min.js +1 -1
- package/dist/browser/pacem-numerical.js +360 -1
- package/dist/browser/pacem-numerical.js.map +1 -1
- package/dist/browser/pacem-numerical.min.js +1 -1
- package/dist/browser/pacem-plus.js +195 -4
- package/dist/browser/pacem-plus.js.map +1 -1
- package/dist/browser/pacem-plus.min.js +1 -1
- package/dist/browser/pacem-scaffolding.js +420 -38
- package/dist/browser/pacem-scaffolding.js.map +1 -1
- package/dist/browser/pacem-scaffolding.min.js +2 -2
- package/dist/browser/pacem-ui.js +143 -19
- package/dist/browser/pacem-ui.js.map +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/bundle/pacem.min.mjs +147 -147
- package/dist/bundle/pacem.mjs +2905 -1417
- package/dist/bundle/pacem.mjs.map +3 -3
- package/dist/docs/pacem-2d.json +11549 -0
- package/dist/docs/pacem-3d.json +29096 -0
- package/dist/docs/pacem-charts.json +4244 -0
- package/dist/docs/pacem-cms.json +9325 -0
- package/dist/docs/pacem-core.json +40109 -0
- package/dist/docs/pacem-foundation.json +8941 -0
- package/dist/docs/pacem-fx.json +3121 -0
- package/dist/docs/pacem-logging.json +941 -0
- package/dist/docs/pacem-maps.json +17387 -0
- package/dist/docs/pacem-media.json +1203 -0
- package/dist/docs/pacem-networking.json +1798 -0
- package/dist/docs/pacem-numerical.json +13706 -0
- package/dist/docs/pacem-plus.json +8468 -0
- package/dist/docs/pacem-scaffolding.json +34788 -0
- package/dist/docs/pacem-ui.json +18628 -0
- package/dist/typings/index.d.ts +4109 -31
- package/dist/vscode.html-custom.json +1303 -741
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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}\n/** Custom UI event dispatched by chart elements when the user interacts with a rendered data point (e.g. `itemclick`, `itemmouseover`). */\nexport class ChartEvent extends CustomUIEvent {\n constructor(type, eventInit, originalEvent) {\n super(type, eventInit, originalEvent);\n }\n}\n/**\n * Represents a single data series to be plotted within a `<pacem-chart>`-like element.\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\";\n/**\n * Abstract base class for chart elements hosting a collection of {@link PacemChartSeriesElement} items.\n * Provides axis/grid computation and SVG drawing helpers shared by concrete chart-series elements (e.g. `PacemChartElement`, `PacemColumnChartElement`).\n */\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\";\n/**\n * Renders a line, spline, area or spline-area chart out of one or more {@link PacemChartSeriesElement} series.\n */\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;\n/**\n * Renders a clustered or stacked column (bar) chart out of one or more {@link PacemChartSeriesElement} series.\n */\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 {\n/**\n * Represents a single slice within a `<pacem-pie-chart>`.\n */\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;\n/**\n * Renders a pie or doughnut chart out of one or more {@link PacemPieSliceElement} slices.\n */\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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"}
|