@pacem/pacem-2d 1.0.0-bessel → 1.0.0-dirac
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/bundle/pacem-2d.min.mjs +1 -1
- package/dist/bundle/pacem-2d.mjs +71 -1
- package/dist/bundle/pacem-2d.mjs.map +2 -2
- package/dist/docs/pacem-2d.json +11549 -0
- package/dist/esm/adapter.js +15 -1
- package/dist/esm/constants.js +3 -1
- package/dist/esm/drawable-element.js +8 -1
- package/dist/esm/drawing.js +28 -1
- package/dist/esm/ellipse.js +20 -1
- package/dist/esm/group.js +3 -1
- package/dist/esm/image.js +2 -1
- package/dist/esm/index-components-drawing.js +1 -1
- package/dist/esm/index-components.js +1 -1
- package/dist/esm/index-iife.js +1 -1
- package/dist/esm/index-root.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/line.js +4 -1
- package/dist/esm/path.js +3 -1
- package/dist/esm/polygon.js +11 -1
- package/dist/esm/polyline.js +10 -1
- package/dist/esm/rect.js +4 -1
- package/dist/esm/stage-abstractions.js +1 -1
- package/dist/esm/stage.js +14 -1
- package/dist/esm/text.js +2 -1
- package/dist/esm/types.js +18 -1
- package/package.json +2 -1
- package/typings/index.d.ts +236 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../esm/index-components.js", "../esm/index-components-drawing.js", "../esm/drawable-element.js", "../esm/stage.js", "../esm/constants.js", "../esm/drawing.js", "../esm/types.js", "../esm/group.js", "../esm/ellipse.js", "../esm/rect.js", "../esm/line.js", "../esm/path.js", "../esm/polygon.js", "../esm/polyline.js", "../esm/image.js", "../esm/text.js", "../esm/adapters/utils.js", "../esm/adapters/canvasadapter.js", "../esm/adapter.js", "../esm/adapters/svgadapter.js"],
|
|
4
|
-
"sourcesContent": ["export * as Drawing from './index-components-drawing';\n", "export * from './drawable-element';\nexport * from './stage-abstractions';\nexport * from './types';\nexport * from './group';\nexport * from './ellipse';\nexport * from './rect';\nexport * from './line';\nexport * from './path';\nexport * from './polygon';\nexport * from './polyline';\nexport * from './image';\nexport * from './text';\nexport * from './stage';\nexport * from './adapters/utils';\nexport * from './adapters/canvasadapter';\nexport * from './adapters/svgadapter';\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 { Components, CustomElementUtils, PropertyConverters, Watch, } from '@pacem/pacem-core';\nimport { Pacem2DElement } from './stage';\nexport class DrawableElement extends Components.PacemCrossItemsContainerElement {\n validate(_) {\n // by default no children allowed (Group will except)\n return false;\n }\n findContainer() {\n // override\n return this.parent || this.stage;\n }\n get stage() {\n return this['_scene'] = this['_scene'] || CustomElementUtils.findAncestorOfType(this, Pacem2DElement);\n }\n get parent() {\n return this['_drawableParent'] = this['_drawableParent'] || CustomElementUtils.findAncestor(this, i => i instanceof DrawableElement);\n }\n disconnectedCallback() {\n delete this['_scene'];\n delete this['_drawableParent'];\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'hide':\n this.stage?.draw(this);\n break;\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], DrawableElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], DrawableElement.prototype, \"inert\", void 0);\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, ViewChild, Debounce, PCSS, P, Utils, PropertyConverters, PropertyChangeEvent, CustomEventUtils, avoidHandler, EventKeyModifier, Components } from '@pacem/pacem-core';\nimport { Rect, Matrix2D } from '@pacem/pacem-foundation';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { DrawableElement } from './drawable-element';\nimport { isGroup } from './drawing';\n//namespace Pacem.Components.Drawing {\n// group [1] := align x,[3] := align y,[6] := slice\nconst ASPECTRATIO_PATTERN = /^\\s*[xX]\\s*([Mm](in|ax|id))\\s*[yY]\\s*([Mm](in|ax|id))(\\s+(none|slice|meet))?\\s*$/;\nconst aspectRatioPropertyConverter = {\n convert: (attr) => {\n const regArr = ASPECTRATIO_PATTERN.exec(attr);\n if (regArr && regArr.length >= 4) {\n return {\n x: regArr[1].toLowerCase(),\n y: regArr[3].toLowerCase(),\n slice: regArr[6] === 'slice'\n };\n }\n return 'none';\n },\n convertBack: (val) => {\n if (Utils.isNull(val) || typeof val === 'string') {\n return 'none';\n }\n return `xM${(val.x.substring(1))}YM${(val.y.substring(1))} ${(val.slice ? 'slice' : 'meet')}`;\n }\n};\nconst DEFAULT_STAGE_OPTIONS = {\n panControl: true,\n zoomControl: true,\n panModifiers: [EventKeyModifier.AltKey],\n zoomModifiers: [EventKeyModifier.AltKey],\n clickModifiers: []\n};\nexport function getStageOptions(stage) {\n const options = stage instanceof Pacem2DElement ? stage.options : {};\n return Utils.extend({}, DEFAULT_STAGE_OPTIONS, options);\n}\nlet Pacem2DElement = class Pacem2DElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this.#transformMatrix = Matrix2D.identity;\n this.#options = DEFAULT_STAGE_OPTIONS;\n this._resizeHandler = (evt) => {\n this.#size = { x: evt.detail.left, y: evt.detail.top, width: evt.detail.width, height: evt.detail.height };\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n this._invalidateSize();\n }\n };\n this._zoomHandler = (evt) => {\n // only trusted ui interaction\n if (!evt.isTrusted) {\n return;\n }\n const opts = this.#options;\n if (opts.zoomControl && CustomEventUtils.matchModifiers(evt, opts.zoomModifiers)) {\n // prevent anything\n avoidHandler(evt);\n const zoomingOut = evt.deltaY < 0;\n // center change?\n const factor = .1, sign = zoomingOut ? -1 : 1, factorWSign = factor * sign, scale = 1 + factorWSign;\n const stageRect = Utils.offsetRect(evt.currentTarget), pt = { x: evt.clientX, y: evt.clientY };\n this._zoom(scale, stageRect, pt);\n }\n };\n this._panHandler = (evt) => {\n const state = this.#panningStart, actual = this._getPanPoint(evt);\n if (!Utils.isNullOrEmpty(state && state.point) && !Utils.isNull(actual)) {\n avoidHandler(evt);\n const factor = state.factor, vbox = state.box, start = state.point;\n this.viewbox = {\n x: vbox.x - factor * (actual.x - start.x),\n y: vbox.y - factor * (actual.y - start.y),\n width: vbox.width,\n height: vbox.height\n };\n }\n };\n this._panStartHandler = (evt) => {\n const opts = this.#options;\n if (!opts.panControl) {\n return;\n }\n // only trusted ui interaction\n if (!evt.isTrusted) {\n return;\n }\n const size = this.#size, vbox = this.viewbox || { x: 0, y: 0, width: size.width, height: size.height }, start = this._getPanPoint(evt);\n if (start) {\n avoidHandler(evt);\n this._stage.style.pointerEvents = 'none';\n const aspectRatio = this._getActualAspectRatio();\n const wBased = vbox.width / size.width, hBased = vbox.height / size.height, factor = aspectRatio.slice ? Math.min(wBased, hBased) : Math.max(wBased, hBased);\n this.#panningStart = { point: start, box: vbox, factor };\n }\n };\n this._panEndHandler = (evt) => {\n this._stage.style.pointerEvents = '';\n this.#panningStart = null;\n };\n }\n get stage() {\n return this._stage;\n }\n snapshot(bgColor, type, quality) {\n const adapter = this.adapter;\n if (Utils.isNull(adapter)) {\n return Promise.resolve(null);\n }\n return adapter.snapshot(this, bgColor, type, quality);\n }\n #originalViewBox;\n #transformMatrix;\n get transformMatrix() {\n return this.#transformMatrix;\n }\n _transformMatrixScale() {\n const sizeObj = this.#size || Utils.offsetRect(this._stage);\n var origVbox = this.#originalViewBox || sizeObj;\n const vbox = this.viewbox || origVbox;\n const aspectRatio = this.aspectRatio || 'none';\n const mode = aspectRatio === 'none' ? 'stretch' : (aspectRatio.slice ? 'cover' : 'contain');\n const actual = Rect.findTransform(vbox, origVbox, mode);\n return actual.a;\n }\n validate(item) {\n return item instanceof DrawableElement && /* only direct items */ Utils.isNull(item.parent);\n }\n draw(item, redraw = false) {\n const adapter = this.adapter;\n if (!this.disabled && !Utils.isNull(adapter)) {\n let cancelable = new CustomEvent('predraw', { cancelable: true });\n this.dispatchEvent(cancelable);\n if (!cancelable.defaultPrevented) {\n adapter.draw(this, item, redraw);\n this.dispatchEvent(new CustomEvent('draw'));\n }\n }\n }\n _drawDebounced(item, force = false) {\n if (!Utils.isNull(item) && isGroup(item)) {\n this.draw(item, force);\n }\n else {\n this.draw(item);\n }\n }\n requestDraw(item, redraw = false) {\n this._drawDebounced(item, redraw);\n }\n _buildUpDatasourceFromDOM() {\n this.datasource = (this.items || []).slice();\n }\n #options;\n #size;\n _getActualAspectRatio() {\n const aspectRatio = this.aspectRatio || 'none';\n const alignmentX = aspectRatio === 'none' ? 'mid' : aspectRatio.x;\n const alignmentY = aspectRatio === 'none' ? 'mid' : aspectRatio.y;\n const slice = aspectRatio === 'none' ? false : aspectRatio.slice;\n return { x: alignmentX, y: alignmentY, slice };\n }\n _zoomFromValue(scale) {\n const sizeObj = this.#size;\n if (Utils.isNull(sizeObj)) {\n return;\n }\n const sizeRect = sizeObj;\n const origVbox = this.#originalViewBox || sizeRect, vbox = this.viewbox || origVbox;\n const aspectRatio = this.aspectRatio || 'none';\n const mode = aspectRatio === 'none' ? 'stretch' : (aspectRatio.slice ? 'cover' : 'contain');\n const actual = Rect.findTransform(vbox, sizeRect, mode);\n const original = Rect.findTransform(origVbox, sizeRect, mode);\n const actualScale = actual.a;\n const origScale = original.a;\n const targetScale = origScale * scale;\n const incrementalInverseScale = actualScale / targetScale;\n this._zoom(incrementalInverseScale);\n }\n _zoom(scale, stageRect, pt) {\n if (Utils.isNull(stageRect)) {\n stageRect = Utils.offsetRect(this._stage);\n }\n if (Utils.isNull(pt)) {\n pt = { x: stageRect.x + stageRect.width * .5, y: stageRect.y + stageRect.height * .5 };\n }\n const sizeObj = this.#size, vbox = this.viewbox || sizeObj;\n const vsize = Math.min(vbox.width, vbox.height), targetWidth = vsize * scale, targetHeight = vsize * scale;\n if (targetWidth > 0 && targetHeight > 0) {\n const aspectRatio = this._getActualAspectRatio();\n const alignmentX = aspectRatio.x;\n const alignmentY = aspectRatio.y;\n const slice = aspectRatio.slice;\n // offset\n const vboxRatio = vbox.width / vbox.height, size = slice ? Math.max(stageRect.width, stageRect.height) : Math.min(stageRect.width, stageRect.height);\n let \n // to be adjusted based on aspectRatio\n adjX, adjY;\n ;\n switch (alignmentX) {\n case 'mid':\n adjX = (targetWidth - vbox.width) * (pt.x - stageRect.x - .5 * (stageRect.width - size)) / (size * vboxRatio);\n break;\n case 'max':\n adjX = (targetWidth - vbox.width) * (pt.x - stageRect.x - (stageRect.width - size)) / (size * vboxRatio);\n break;\n default:\n adjX = (targetWidth - vbox.width) * (pt.x - stageRect.x) / (size * vboxRatio);\n break;\n }\n switch (alignmentY) {\n case 'mid':\n adjY = (targetHeight - vbox.height) * (pt.y - stageRect.y - .5 * (stageRect.height - size)) / (size * vboxRatio);\n break;\n case 'max':\n adjY = (targetHeight - vbox.height) * (pt.y - stageRect.y - (stageRect.height - size)) / (size * vboxRatio);\n break;\n default:\n adjY = (targetHeight - vbox.height) * (pt.y - stageRect.y) / (size * vboxRatio);\n break;\n }\n const targetX = vbox.x - adjX, targetY = vbox.y - adjY;\n this.viewbox = { x: targetX, y: targetY, width: targetWidth, height: targetHeight };\n }\n }\n _getPanPoint(evt) {\n const opts = this.#options;\n if (evt instanceof MouseEvent && CustomEventUtils.matchModifiers(evt, opts.panModifiers)) {\n return CustomEventUtils.getEventCoordinates(evt).page;\n }\n return null;\n }\n #panningStart;\n _invalidateSize() {\n this.adapter.invalidateSize(this, this.#size);\n const prevTransformMatrix = this.#transformMatrix;\n this.#transformMatrix = this.adapter.getTransformMatrix(this);\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'transformMatrix', currentValue: this.#transformMatrix, oldValue: prevTransformMatrix }));\n this.zoom = this._transformMatrixScale();\n this.dispatchEvent(new Components.ResizeEvent(this.#size));\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n adapter.initialize(this);\n this._invalidateSize();\n // request draw right away\n this._drawDebounced();\n }\n const resize = this._resize;\n resize.addEventListener(Components.ResizeEventName, this._resizeHandler, false);\n const stage = this._stage;\n resize.target = stage;\n const options = { capture: false, passive: true };\n // zooming\n stage.addEventListener('wheel', this._zoomHandler, false);\n // panning\n stage.addEventListener('mousedown', this._panStartHandler, false);\n stage.addEventListener('touchstart', this._panStartHandler, options);\n window.addEventListener('mousemove', this._panHandler, false);\n window.addEventListener('mouseup', this._panEndHandler, false);\n window.addEventListener('touchmove', this._panHandler, options);\n window.addEventListener('touchend', this._panEndHandler, options);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'adapter':\n if (!Utils.isNull(old)) {\n old.dispose(this);\n }\n if (!Utils.isNull(val)) {\n val.initialize(this);\n this._invalidateSize();\n this._drawDebounced();\n }\n break;\n case 'aspectRatio':\n if (!Utils.isNull(this.adapter)) {\n this._invalidateSize();\n }\n break;\n case 'viewbox':\n if (!Utils.isNull(this.adapter)) {\n this._invalidateSize();\n }\n this.#originalViewBox ??= (this.viewbox || null);\n break;\n case 'items':\n this._buildUpDatasourceFromDOM();\n break;\n case 'zoom':\n if (val !== this._transformMatrixScale()) {\n this._zoomFromValue(val);\n }\n break;\n case 'options':\n this.#options = getStageOptions(this); // Utils.extend({}, DEFAULT_STAGE_OPTIONS, val || {});\n break;\n case 'disabled':\n case 'datasource':\n this._drawDebounced();\n break;\n }\n }\n disconnectedCallback() {\n const resizer = this._resize, stage = this._stage;\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener(Components.ResizeEventName, this._resizeHandler, false);\n }\n if (!Utils.isNull(stage)) {\n // zooming\n stage.removeEventListener('wheel', this._zoomHandler, false);\n // panning\n stage.removeEventListener('mousedown', this._panStartHandler, false);\n stage.removeEventListener('touchstart', this._panStartHandler);\n window.removeEventListener('mousemove', this._panHandler, false);\n window.removeEventListener('mouseup', this._panEndHandler, false);\n window.removeEventListener('touchmove', this._panHandler);\n window.removeEventListener('touchend', this._panEndHandler);\n }\n if (!Utils.isNull(this.adapter)) {\n this.adapter.dispose(this);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], Pacem2DElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Rect })\n], Pacem2DElement.prototype, \"viewbox\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: aspectRatioPropertyConverter })\n], Pacem2DElement.prototype, \"aspectRatio\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem2DElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem2DElement.prototype, \"options\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], Pacem2DElement.prototype, \"zoom\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-2d')\n], Pacem2DElement.prototype, \"_stage\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], Pacem2DElement.prototype, \"_resize\", void 0);\n__decorate([\n Debounce(true)\n], Pacem2DElement.prototype, \"_drawDebounced\", null);\nPacem2DElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME, shadow: true, template: `<${P}-resize watch-position=\"true\"></${P}-resize><div class=\"${PCSS}-2d\" part=\"container\"></div><slot></slot>` })\n], Pacem2DElement);\nexport { Pacem2DElement };\n", "export const TAG_MIDDLE_NAME = \"2d\";\nexport const TWO_PI = 2 * Math.PI;\n", "import { Utils, CustomUIEvent } from '@pacem/pacem-core';\nimport { Point, Matrix2D } from '@pacem/pacem-foundation';\nexport function isDrawable(object) {\n return !Utils.isNull(object) && 'stage' in object;\n}\nexport function isUiObject(object) {\n return /*'transformMatrix' in object &&*/ isDrawable(object);\n}\nfunction isGradient(object) {\n return 'stops' in object && Utils.isArray(object.stops);\n}\nexport function isLinearGradient(object) {\n return isGradient(object) && 'start' in object && Point.isPoint(object.start)\n && 'end' in object && Point.isPoint(object.end);\n}\nexport function isRadialGradient(object) {\n return isGradient(object) && 'center' in object && Point.isPoint(object.center)\n && 'radius' in object && typeof object.radius === 'number';\n}\nexport class PresentationState {\n static combine(lhs, rhs, precomputedMatrix = null) {\n return {\n opacity: (lhs.opacity ?? 1) * (rhs.opacity ?? 1),\n transformMatrix: precomputedMatrix ?? Matrix2D.multiply(rhs.transformMatrix, lhs.transformMatrix),\n dashArray: lhs.dashArray ?? rhs.dashArray,\n fill: lhs.fill ?? rhs.fill,\n lineCap: lhs.lineCap ?? rhs.lineCap,\n lineJoin: lhs.lineJoin ?? rhs.lineJoin,\n lineWidth: lhs.lineWidth ?? rhs.lineWidth,\n stroke: lhs.stroke ?? rhs.stroke\n };\n }\n}\nexport function isPresentationObject(object) {\n return isUiObject(object)\n && ('fill' in object\n || 'transformMatrix' in object\n || 'stroke' in object\n || 'lineJoin' in object\n || 'dashArray' in object\n || 'lineWidth' in object\n || 'opacity' in object\n || 'lineCap' in object);\n}\nexport function isShape(object) {\n return isUiObject(object) && 'pathData' in object;\n}\nexport function isGroup(object) {\n return isUiObject(object) && 'childDrawables' in object && !Utils.isNullOrEmpty(object['childDrawables']);\n}\nexport function isText(object) {\n return isUiObject(object) && 'text' in object && typeof object['text'] === 'string';\n}\nexport function isImage(object) {\n return isUiObject(object) && 'src' in object && typeof object['src'] === 'string';\n}\nexport class UI2DEvent extends CustomUIEvent {\n constructor(type, eventInit, originalEvent, transformMatrix) {\n super(type, eventInit, originalEvent);\n this.#transformMatrix = transformMatrix;\n }\n #transformMatrix;\n /** Gets the screen transform matrix. */\n get transformMatrix() {\n return this.#transformMatrix;\n }\n project(pt = { x: this.screenX, y: this.screenY }) {\n return Matrix2D.multiply(pt, this.#transformMatrix);\n }\n}\nexport class Shape {\n static empty() {\n return { pathData: '', vertices: [], boundingRect: { x: 0, y: 0, width: 0, height: 0 } };\n }\n}\nexport class DragEvent extends UI2DEvent {\n}\nexport class DrawableEvent extends UI2DEvent {\n constructor(type, args, originalEvent, m) {\n super(type, { detail: args, bubbles: true, cancelable: true }, originalEvent, m);\n }\n}\nexport class StageEvent extends UI2DEvent {\n constructor(type, args, originalEvent, m = args.transformMatrix) {\n super(type, { detail: args, bubbles: true, cancelable: true }, originalEvent, m);\n }\n}\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 { Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { Matrix2D } from '@pacem/pacem-foundation';\nimport { DrawableElement } from './drawable-element';\n//namespace Pacem.Components.Drawing {\nconst DEG2RAD = Math.PI / 180.0;\nexport class UiElement extends DrawableElement {\n #transformMatrix = Matrix2D.identity;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._updateTransformMatrix();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'rotate':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n this._updateTransformMatrix();\n // flow down\n case 'opacity':\n this.stage?.draw(this);\n break;\n }\n }\n }\n _updateTransformMatrix() {\n let rotation = DEG2RAD * (this.rotate ?? 0), cos = Math.cos(rotation), sin = Math.sin(rotation), a = (this.scaleX ?? 1) * cos, b = -sin, c = sin, d = (this.scaleY ?? 1) * cos, e = this.translateX ?? 0, f = this.translateY ?? 0;\n this.#transformMatrix = { a, b, c, d, e, f };\n }\n /** @internal */\n get transformMatrix() {\n const m = this.#transformMatrix;\n return { a: m.a, b: m.b, c: m.c, d: m.d, e: m.e, f: m.f };\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"rotate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"scaleX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"scaleY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"translateX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"translateY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"opacity\", void 0);\nexport class PresentationElement extends UiElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'stroke':\n case 'lineWidth':\n case 'lineJoin':\n case 'lineCap':\n case 'dashArray':\n case 'fill':\n if (!Utils.isNull(this.stage)) {\n this.stage.draw(this);\n }\n break;\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"stroke\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"fill\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => attr?.split(',').map(i => parseInt(i)).filter(i => !Number.isNaN(i)),\n convertBack: (prop) => prop?.join(',')\n }\n })\n], PresentationElement.prototype, \"dashArray\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PresentationElement.prototype, \"lineWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"lineJoin\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"lineCap\", void 0);\nexport class ShapeElement extends PresentationElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'data':\n this.stage?.draw(this);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.recomputeShape();\n }\n recomputeShape() {\n const { pathData, vertices, boundingRect } = this.getShapeGeometry();\n this.#vertices = vertices;\n this.#boundingRect = boundingRect;\n this.data = pathData;\n }\n get pathData() {\n return this.data;\n }\n #boundingRect;\n get boundingRect() {\n return this.#boundingRect;\n }\n #vertices;\n get vertices() {\n return this.#vertices;\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], ShapeElement.prototype, \"data\", void 0);\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, P, Utils } from '@pacem/pacem-core';\nimport { PresentationElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { DrawableElement } from './drawable-element';\n//namespace Pacem.Components.Drawing {\nlet PacemGroupElement = class PacemGroupElement extends PresentationElement {\n validate(item) {\n return item instanceof DrawableElement && item.parent === this;\n }\n #children = [];\n get childDrawables() {\n return this.#children;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'items':\n case 'datasource':\n this.#children = (val || []);\n const scene = this.stage;\n if (!Utils.isNull(scene)) {\n scene.draw(this, true);\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], PacemGroupElement.prototype, \"datasource\", void 0);\nPacemGroupElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-group' })\n], PacemGroupElement);\nexport { PacemGroupElement };\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};\nvar PacemEllipseElement_1, PacemCircleElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { Rect } from '@pacem/pacem-foundation';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\nfunction full(c, rx, ry) {\n const d = 2 * rx, cx = c.x, cy = c.y;\n return {\n pathData: `M ${cx} ${cy} m ${-rx},0 a ${rx},${ry} 0 1,1 ${d},0 a ${rx},${ry} 0 1,1 ${-d},0`,\n vertices: [],\n boundingRect: { x: cx - rx, y: cy - ry, width: 2 * rx, height: 2 * ry }\n };\n}\nfunction sect(c, rx, ry, start, end) {\n const degToRad = Math.PI / 180;\n const s = degToRad * start, e = degToRad * end;\n //\n const polar = (theta) => rx * ry / Math.sqrt(Math.pow(Math.cos(theta) * ry, 2) + Math.pow(Math.sin(theta) * rx, 2));\n const rhoStart = polar(s), rhoEnd = polar(e);\n const cartesian = (rho, theta) => {\n return { x: rho * Math.cos(theta), y: rho * Math.sin(theta) };\n };\n const cartStart = cartesian(rhoStart, s), cartEnd = cartesian(rhoEnd, e);\n const p0 = { x: c.x + cartStart.x, y: c.y + cartStart.y }, p1 = { x: c.x + cartEnd.x, y: c.y + cartEnd.y };\n let boundingRect = Rect.expand(c, p0, p1);\n if (end < start)\n end += 360;\n if (start <= 0 && end > 0 || end >= 360) {\n boundingRect = Rect.expand(boundingRect, { x: c.x + rx, y: c.y });\n }\n if (start <= 90 && end > 90 || end >= 450) {\n boundingRect = Rect.expand(boundingRect, { x: c.x, y: c.y + ry });\n }\n if (start <= 180 && end > 180 || end >= 540) {\n boundingRect = Rect.expand(boundingRect, { x: c.x - rx, y: c.y });\n }\n if (start <= 270 && end > 270 || end >= 630) {\n boundingRect = Rect.expand(boundingRect, { x: c.x, y: c.y - ry });\n }\n const flag = e - s > Math.PI ? '1' : '0';\n return {\n pathData: `M ${p0.x} ${p0.y} A ${rx},${ry} 0 ${flag},1 ${p1.x},${p1.y} L ${c.x},${c.y} Z`, vertices: [p0, p1], boundingRect\n };\n}\nfunction getShapeGeometry(c, rx, ry, start, end) {\n start ??= 0, end ??= 0;\n start %= 360;\n end %= 360;\n while (start < 0)\n start += 360;\n while (end < start)\n end += 360;\n const threesixty = (start - end).isCloseTo(0);\n return threesixty ? full(c, rx, ry) : sect(c, rx, ry, start, end);\n}\nlet PacemEllipseElement = PacemEllipseElement_1 = class PacemEllipseElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'center':\n case 'rx':\n case 'ry':\n case 'start':\n case 'end':\n this.recomputeShape();\n break;\n }\n }\n }\n getPathData() {\n const a = this.rx, b = this.ry, c = this.center, s = this.start ?? 0, e = this.end ?? 0;\n if (!Utils.isNull(c) && !Utils.isNull(a) && !Utils.isNull(b)) {\n return PacemEllipseElement_1.getPathData(c, a, b, s, e);\n }\n return null;\n }\n getShapeGeometry() {\n const center = this.center ?? { x: 0, y: 0 };\n const a = this.rx ?? 0, b = this.ry ?? 0;\n return getShapeGeometry(center, a, b, this.start, this.end);\n }\n static getPathData(c = { x: NaN, y: NaN }, rx = NaN, ry = NaN, start, end) {\n const { pathData } = getShapeGeometry(c, rx, ry, start, end);\n return pathData;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemEllipseElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"rx\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"ry\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"end\", void 0);\nPacemEllipseElement = PacemEllipseElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-ellipse' })\n], PacemEllipseElement);\nexport { PacemEllipseElement };\nlet PacemCircleElement = PacemCircleElement_1 = class PacemCircleElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'center':\n case 'radius':\n case 'start':\n case 'end':\n this.recomputeShape();\n break;\n }\n }\n }\n getPathData() {\n const r = this.radius, c = this.center;\n if (!Utils.isNull(c) && !Utils.isNull(r)) {\n return PacemCircleElement_1.getPathData(c, r, this.start, this.end);\n }\n return null;\n }\n getShapeGeometry() {\n const center = this.center ?? { x: 0, y: 0 };\n const r = this.radius ?? 0;\n return getShapeGeometry(center, r, r, this.start, this.end);\n }\n static getPathData(c = { x: NaN, y: NaN }, r = NaN, start, end) {\n return PacemEllipseElement.getPathData(c, r, r, start, end);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemCircleElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCircleElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCircleElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCircleElement.prototype, \"end\", void 0);\nPacemCircleElement = PacemCircleElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-circle' })\n], PacemCircleElement);\nexport { PacemCircleElement };\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};\nvar PacemRectElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\n/*\n r=\"4\" // every corner has a rx equalt o ry equal to 8 units\n r=\"4,8 cut\" // every corner has a rx equal to 4px and a ry equal to 8px (cut corners)\n r=\"4,8 cut 5,6 3,20% round 50%,4\" // top-left corner has a rx equal to 4px and a ry equal to 8px (cut corner), top-right corner has a rx equal to 5px and a ry equal to 6px,\n // bottom-right corner has a rx equal to 3px and a ry equal to 20% the height,\n // bottom-left corner has a rx equal to 50% the width and a ry equal to 4px.\n\n */\nfunction parseCornerRadius(radius) {\n const rx = radius[2], ry = radius[4] ?? rx, type = radius[6] === 'cut' ? CornerType.Cut : CornerType.Rounded;\n return { rx: parseCornerRadiusComponent(rx), ry: parseCornerRadiusComponent(ry), type };\n}\nfunction parseCornerRadiusComponent(radius) {\n const val = parseFloat(radius);\n return { value: val, unit: radius.endsWith('%') ? 'pct' : 'u' };\n}\nfunction stringifyCornerRadiusComponent(radius) {\n return `${radius.value}${radius.unit === 'pct' ? '%' : ''}`;\n}\nconst CORNERS_PATTERN = /(([\\d\\.]+%?)(\\s*,?\\s*([\\d\\.]+%?))?(\\s+(cut|round))?)/g;\nfunction parseCornerRadii(radii) {\n let numbers;\n const acc = [];\n while (numbers = CORNERS_PATTERN.exec(radii)) {\n acc.push(numbers);\n }\n switch (acc.length) {\n case 1:\n const single = parseCornerRadius(acc[0]);\n return [single, single, single, single];\n case 4:\n const topLeft = parseCornerRadius(acc[0]);\n const topRight = parseCornerRadius(acc[1]);\n const bottomRight = parseCornerRadius(acc[2]);\n const bottomLeft = parseCornerRadius(acc[3]);\n return [topLeft, topRight, bottomRight, bottomLeft];\n default:\n return null;\n }\n}\nfunction stringifyCornerRadii(radii) {\n const topLeft = radii[0], topRight = radii[1], bottomRight = radii[2], bottomLeft = radii[3];\n const tlX = stringifyCornerRadiusComponent(topLeft.rx), tlY = stringifyCornerRadiusComponent(topLeft.ry);\n const trX = stringifyCornerRadiusComponent(topRight.rx), trY = stringifyCornerRadiusComponent(topRight.ry);\n const brX = stringifyCornerRadiusComponent(bottomRight.rx), brY = stringifyCornerRadiusComponent(bottomRight.ry);\n const blX = stringifyCornerRadiusComponent(bottomLeft.rx), blY = stringifyCornerRadiusComponent(bottomLeft.ry);\n return `${tlX},${tlY} ${trX},${trY} ${brX},${brY} ${blX},${blY}`;\n}\nexport var CornerType;\n(function (CornerType) {\n CornerType[\"Rounded\"] = \"rounded\";\n CornerType[\"Cut\"] = \"cut\";\n})(CornerType || (CornerType = {}));\nlet PacemRectElement = PacemRectElement_1 = class PacemRectElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && (name === 'x' || name === 'y' || name === 'w' || name === 'h' || name === 'r' || name === 'cornerType')) {\n this.recomputeShape();\n }\n }\n getPathData() {\n const x = this.x, y = this.y, w = this.w, h = this.h;\n let r = this.r ?? { rx: { value: 0 }, ry: { value: 0 }, type: CornerType.Rounded };\n if (!Utils.isArray(r)) {\n r = [r, r, r, r];\n }\n // forgiving behavior\n r = r.map(i => { return typeof i === 'number' ? { rx: { value: i }, ry: { value: i }, type: this.cornerType } : i; });\n if (!Utils.isNull(x) && !Utils.isNull(y) && !Utils.isNull(w) && !Utils.isNull(h)) {\n return PacemRectElement_1.getPathData(x, y, w, h, r);\n }\n return null;\n }\n getShapeGeometry() {\n const x = this.x, y = this.y, x1 = x + this.w, y1 = y + this.h;\n return {\n pathData: this.getPathData(), vertices: [{ x, y }, { x: x1, y }, { x: x1, y: y1 }, { x, y: y1 }], boundingRect: { x, y, width: this.w, height: this.h }\n };\n }\n static getPathData(x = NaN, y = NaN, w = NaN, h = NaN, r = null) {\n if (!r) {\n return `M ${x} ${y} h ${w} v ${h} h ${-w} z`;\n }\n if (!Utils.isArray(r)) {\n r = [r, r, r, r];\n }\n const tl = r[0], tr = r[1], br = r[2], bl = r[3];\n const vx = (rx) => rx.unit === 'pct' ? rx.value * .01 * w : rx.value;\n const vy = (ry) => ry.unit === 'pct' ? ry.value * .01 * h : ry.value;\n const tlX = vx(tl.rx), tlY = vy(tl.ry);\n const trX = vx(tr.rx), trY = vy(tr.ry);\n const brX = vx(br.rx), brY = vy(br.ry);\n const blX = vx(bl.rx), blY = vy(bl.ry);\n let retval = `M ${x},${y + tlY}`;\n // top-left\n switch (tl.type) {\n case 'cut':\n retval += ` l ${tlX},${-tlY}`;\n break;\n default:\n retval += ` a ${tlX} ${tlY} 0 0 1 ${tlX} ${-tlY}`;\n break;\n }\n retval += ` h ${w - tlX - trX}`;\n // top-right\n switch (tr.type) {\n case 'cut':\n retval += ` l ${trX},${trY}`;\n break;\n default:\n retval += ` a ${trX} ${trY} 0 0 1 ${trX} ${trY}`;\n break;\n }\n retval += ` v ${h - trY - brY}`;\n // bottom-right\n switch (br.type) {\n case 'cut':\n retval += ` l ${-brX},${brY}`;\n break;\n default:\n retval += ` a ${brX} ${brY} 0 0 1 ${-brX} ${brY}`;\n break;\n }\n retval += ` h ${-(w - brX - blX)}`;\n // bottom-left\n switch (bl.type) {\n case 'cut':\n retval += ` l ${-blX},${-blY}`;\n break;\n default:\n retval += ` a ${blX} ${blY} 0 0 1 ${-blX} ${-blY}`;\n break;\n }\n return retval + ' z';\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"x\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"y\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"w\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"h\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: attr => parseCornerRadii(attr),\n convertBack: (radii) => stringifyCornerRadii(radii)\n }\n })\n], PacemRectElement.prototype, \"r\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRectElement.prototype, \"cornerType\", void 0);\nPacemRectElement = PacemRectElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-rect' })\n], PacemRectElement);\nexport { PacemRectElement };\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};\nvar PacemLineElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { Shape } from './drawing';\n//namespace Pacem.Components.Drawing {\nlet PacemLineElement = PacemLineElement_1 = class PacemLineElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'from':\n case 'to':\n this.recomputeShape();\n break;\n }\n }\n }\n getShapeGeometry() {\n const from = this.from, to = this.to;\n if (Utils.isNull(from) || Utils.isNull(to)) {\n return Shape.empty();\n }\n const x0 = from.x, y0 = from.y, x1 = to.x, y1 = to.y;\n const boundingRect = { x: Math.min(x0, x1), y: Math.min(y0, y1), width: Math.abs(x0 - x1), height: Math.abs(y0 - y1) };\n return { pathData: this.getPathData(), vertices: [from, to], boundingRect };\n }\n getPathData() {\n const from = this.from, to = this.to;\n if (!Utils.isNull(from) && !Utils.isNull(to)) {\n return PacemLineElement_1.getPathData(from, to);\n }\n return null;\n }\n static getPathData(from = { x: NaN, y: NaN }, to = { x: NaN, y: NaN }) {\n const x0 = from.x, y0 = from.y, x1 = to.x, y1 = to.y;\n return `M ${x0} ${y0} L ${x1} ${y1}`;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemLineElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemLineElement.prototype, \"to\", void 0);\nPacemLineElement = PacemLineElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-line' })\n], PacemLineElement);\nexport { PacemLineElement };\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 } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\nlet PacemPathElement = class PacemPathElement extends ShapeElement {\n constructor() {\n super(...arguments);\n this.getPathData = () => this.d;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'd' && !first) {\n this.recomputeShape();\n }\n }\n getShapeGeometry() {\n return { pathData: this.getPathData(), /* TODO: parse d */ boundingRect: null, vertices: [] };\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPathElement.prototype, \"d\", void 0);\nPacemPathElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-path' })\n], PacemPathElement);\nexport { PacemPathElement };\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};\nvar PacemPolygonElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { Shape } from './drawing';\n//namespace Pacem.Components.Drawing {\nlet PacemPolygonElement = PacemPolygonElement_1 = class PacemPolygonElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'radius':\n case 'starIndent':\n case 'sides':\n this.recomputeShape();\n break;\n }\n }\n }\n getPathData() {\n const sides = this.sides, radius = this.radius, center = this.center;\n if (!Utils.isNull(sides) && !Utils.isNull(radius)) {\n return PacemPolygonElement_1.getPathData(center, radius, sides, this.starIndent);\n }\n return null;\n }\n getShapeGeometry() {\n const c = this.center ?? { x: 0, y: 0 }, r = this.radius ?? 0, sides = this.sides ?? 3, si = this.starIndent;\n if (sides < 3) {\n return Shape.empty();\n }\n return PacemPolygonElement_1.getShapeGeometry(c, r, sides, si);\n }\n static getShapeGeometry(center, radius, sides, starIndent = .0) {\n const p0 = { x: center.x, y: center.y - radius };\n let retval = `M ${p0.x} ${(p0.y)}`;\n const vertices = [p0];\n const theta = 2 * Math.PI / sides, theta2 = .5 * theta, isStar = starIndent > 0, apothem = radius * Math.cos(theta2);\n for (let j = 1; j < sides; j++) {\n const angle = j * theta, x = center.x + Math.sin(angle) * radius, y = center.y - Math.cos(angle) * radius;\n if (isStar) {\n const innerRadius = apothem * (1.0 - starIndent);\n const angle2 = angle - theta2, x1 = center.x + Math.sin(angle2) * innerRadius, y1 = center.y - Math.cos(angle2) * innerRadius;\n retval += ` L ${x1} ${y1} L ${x} ${y}`;\n vertices.push({ x: x1, y: y1 });\n }\n else {\n retval += ` L ${x} ${y}`;\n }\n vertices.push({ x, y });\n }\n if (isStar) {\n const innerRadius = apothem * (1.0 - starIndent);\n const angle2 = 2 * Math.PI - theta2, x1 = center.x + Math.sin(angle2) * innerRadius, y1 = center.y - Math.cos(angle2) * innerRadius;\n retval += ` L ${x1} ${y1}`;\n vertices.push({ x: x1, y: y1 });\n }\n vertices.push(p0);\n const width = radius * 2;\n return {\n pathData: retval + ' Z', vertices, boundingRect: { x: p0.x - radius, y: p0.y, width, height: width }\n };\n }\n static getPathData(center, radius, sides, starIndent = .0) {\n const { pathData } = PacemPolygonElement_1.getShapeGeometry(center, radius, sides, starIndent);\n return pathData;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPolygonElement.prototype, \"sides\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPolygonElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemPolygonElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPolygonElement.prototype, \"starIndent\", void 0);\nPacemPolygonElement = PacemPolygonElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-polygon' })\n], PacemPolygonElement);\nexport { PacemPolygonElement };\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};\nvar PacemPolylineElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { parseAsNumericalArray } from '@pacem/pacem-foundation';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { Shape } from './drawing';\n//namespace Pacem.Components.Drawing {\nconst PointArrayOrJsonConverter = {\n convert: (attr) => {\n const arr = parseAsNumericalArray(attr);\n if (arr.length % 2 === 0) {\n const retval = [];\n for (let j = 0; j < arr.length; j += 2) {\n retval.push({ x: arr[j], y: arr[j + 1] });\n }\n return retval;\n }\n return JSON.parse(attr);\n },\n convertBack: (prop) => JSON.stringify(prop)\n};\nlet PacemPolylineElement = PacemPolylineElement_1 = class PacemPolylineElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'points':\n case 'closed':\n this.recomputeShape();\n break;\n }\n }\n }\n static getShapeGeometry(points, closed) {\n if (Utils.isNullOrEmpty(points)) {\n return Shape.empty();\n }\n let d = '';\n let xmin = Number.MAX_VALUE, ymin = Number.MAX_VALUE, xmax = Number.MIN_VALUE, ymax = Number.MIN_VALUE;\n for (let j = 0; j < points.length; j++) {\n const { x, y } = points[j];\n d += `${(j === 0 ? 'M' : 'L')} ${x} ${y} `;\n xmin = Math.min(xmin, x);\n xmax = Math.max(xmax, x);\n ymin = Math.min(ymin, y);\n ymax = Math.max(ymax, y);\n }\n const boundingRect = { x: xmin, y: ymin, width: xmax - xmin, height: ymax - ymin };\n if (closed) {\n d += 'Z';\n }\n return { pathData: d, vertices: points, boundingRect };\n }\n getShapeGeometry() {\n return PacemPolylineElement_1.getShapeGeometry(this.points, this.closed);\n }\n getPathData() {\n const { pathData } = this.getShapeGeometry();\n return pathData;\n }\n static getPathData(points, closed) {\n const { pathData } = PacemPolylineElement_1.getShapeGeometry(points, closed);\n return pathData;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PointArrayOrJsonConverter })\n], PacemPolylineElement.prototype, \"points\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemPolylineElement.prototype, \"closed\", void 0);\nPacemPolylineElement = PacemPolylineElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-polyline' })\n], PacemPolylineElement);\nexport { PacemPolylineElement };\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 } from '@pacem/pacem-core';\nimport { UiElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\nlet PacemImageElement = class PacemImageElement extends UiElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n case 'x':\n case 'y':\n case 'width':\n case 'height':\n this.stage?.draw(this);\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"x\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"y\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"height\", void 0);\nPacemImageElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-image' })\n], PacemImageElement);\nexport { PacemImageElement };\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 } from '@pacem/pacem-core';\nimport { UiElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\nlet PacemTextElement = class PacemTextElement extends UiElement {\n propertyChangedCallback(name, old, val, first) {\n if (!first) {\n switch (name) {\n case 'text':\n case 'color':\n case 'fontFamily':\n case 'fontSize':\n case 'fontWeight':\n case 'fontStyle':\n case 'anchor':\n if (!Utils.isNull(this.stage)) {\n this.stage.draw(this);\n }\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"text\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"fontFamily\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextElement.prototype, \"fontSize\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"fontWeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"fontStyle\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemTextElement.prototype, \"anchor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"textAnchor\", void 0);\nPacemTextElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-text' })\n], PacemTextElement);\nexport { PacemTextElement };\n", "import { Utils, UI } from '@pacem/pacem-core';\nimport { Rect } from '@pacem/pacem-foundation';\nimport { StageEvent, DrawableEvent, DragEvent } from '../drawing';\n//namespace Pacem.Components.Drawing {\nexport class AdapterUtils {\n static stageDispatch(stage, type, evt) {\n if (stage instanceof EventTarget) {\n stage.dispatchEvent(new StageEvent('stage' + type, stage, evt, stage.transformMatrix));\n }\n }\n static isValidViewbox(viewbox) {\n return !Utils.isNullOrEmpty(viewbox) && Rect.isRect(viewbox) && Number.isFinite(viewbox.x) // isFinite includes NaN check\n && Number.isFinite(viewbox.y) && Number.isFinite(viewbox.width) && Number.isFinite(viewbox.height);\n }\n static itemDispatch(target, type, offset) {\n if (Utils.isNull(target?.stage)) {\n return false;\n }\n var dragArgs, originalEvent, evtType;\n if (offset instanceof Event) {\n originalEvent = offset;\n }\n else {\n dragArgs = { item: target, offset: offset };\n }\n if (typeof type === 'string') {\n evtType = type;\n }\n else {\n evtType = type.type;\n originalEvent = type.originalEvent;\n }\n const m = target.stage.transformMatrix;\n const evt = () => offset instanceof Event\n ? new DrawableEvent(evtType, target, originalEvent, m)\n : new DragEvent(evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);\n const itemevt = offset instanceof Event\n ? new DrawableEvent('item' + evtType, target, originalEvent, m)\n : new DragEvent('item' + evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);\n var prevent = false;\n if (target instanceof EventTarget) {\n const evnt = evt();\n target.dispatchEvent(evnt);\n prevent = evnt.defaultPrevented;\n }\n target.stage.dispatchEvent(itemevt);\n // was the event (in one of its forms) rejected?\n return prevent || itemevt.defaultPrevented;\n }\n}\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, P, CustomElementUtils, Utils, Logging, CustomEventUtils, UI, avoidHandler } from '@pacem/pacem-core';\nimport { Matrix2D, Rect } from '@pacem/pacem-foundation';\nimport { UiElement, ShapeElement } from '../types';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { Pacem2DAdapterElement } from '../adapter';\nimport { getStageOptions } from '../stage';\nimport { AdapterUtils } from './utils';\nimport { PacemGroupElement } from '../group';\nimport { PacemImageElement } from '../image';\nimport { PacemTextElement } from '../text';\nimport { PresentationState, isDrawable, isUiObject, isPresentationObject, isShape, isText, isImage, isGroup, isLinearGradient, isRadialGradient, DrawableEvent } from '../drawing';\n//namespace Pacem.Components.Drawing {\nconst CANVAS_SCENE_VAR = 'pacem:2d-canvas-scene';\nconst PARENT_MATRIX_VAR = 'pacem:2d-parent-matrix';\nconst WORLD_MATRIX_VAR = 'pacem:2d-world-matrix';\nconst SETVAR = CustomElementUtils.setAttachedPropertyValue, GETVAR = CustomElementUtils.getAttachedPropertyValue;\nfunction isNone(fillOrStroke) {\n return fillOrStroke === 'none' || Utils.isNullOrEmpty(fillOrStroke);\n}\nfunction fallback(v, f) {\n return Utils.isNull(v) ? f : v;\n}\n/** Implementation postponed. Focus on SVG adapter. */\nlet PacemCanvasAdapterElement = class PacemCanvasAdapterElement extends Pacem2DAdapterElement {\n constructor() {\n super(...arguments);\n this._pointer = {\n page: { x: Number.NaN, y: Number.NaN }, screen: { x: Number.NaN, y: Number.NaN }, client: { x: Number.NaN, y: Number.NaN }\n };\n this._dragInitHandler = (evt) => {\n const hitTarget = this._hitTarget;\n if (Utils.isNull(hitTarget) || !isUiObject(hitTarget) || !hitTarget.draggable) {\n evt.preventDefault();\n return;\n }\n const args = evt.detail, drawable = hitTarget, initialMatrix = hitTarget.transformMatrix ?? Matrix2D.identity, parentMatrix = GETVAR(hitTarget, PARENT_MATRIX_VAR, Matrix2D.identity);\n args.data = {\n item: drawable,\n initialTransformMatrix: initialMatrix,\n parentMatrix\n };\n const reject = AdapterUtils.itemDispatch(drawable, evt, { x: 0, y: 0 });\n if (reject) {\n // reject dragging\n evt.preventDefault();\n }\n };\n this._draggingHandler = (evt) => {\n avoidHandler(evt);\n this._dragging = true;\n const args = evt.detail;\n const data = args.data;\n const screenOffset = { x: args.currentPosition.x - args.origin.x, y: args.currentPosition.y - args.origin.y };\n const offset = {\n x: screenOffset.x * data.parentMatrix.a + data.initialTransformMatrix.e,\n y: screenOffset.y * data.parentMatrix.d + data.initialTransformMatrix.f\n };\n //console.log(`current pos: ${args.currentPosition.x},${args.currentPosition.y}`);\n //console.log(`origin pos: ${args.origin.x},${args.origin.y}`);\n //console.log(`screen offset: ${screenOffset.x},${screenOffset.y}`);\n //console.log(`offset: ${offset.x},${offset.y}`);\n //console.log(data.item.transformMatrix);\n //console.log(GETVAR(data.item, PARENT_MATRIX_VAR));\n //console.log(GETVAR(data.item, WORLD_MATRIX_VAR));\n //console.log(data.initialTransformMatrix);\n const stageTransformMatrix = data.item.stage.transformMatrix;\n const rejected = AdapterUtils.itemDispatch(data.item, evt, { x: screenOffset.x * stageTransformMatrix.a + stageTransformMatrix.e, y: screenOffset.y * stageTransformMatrix.d + stageTransformMatrix.f });\n if (!rejected) {\n if (data.item instanceof UiElement) {\n data.item.translateX = offset.x;\n data.item.translateY = offset.y;\n }\n else {\n const init = data.initialTransformMatrix, actual = { a: init.a, b: init.b, c: init.c, d: init.d, e: offset.x, f: offset.y };\n Utils.extend(data.item, { transformMatrix: actual });\n }\n // console.log(data.item.transformMatrix);\n }\n };\n this._dragEndHandler = (evt) => {\n this._dragging = false;\n const args = evt.detail, data = args.data, transform = data.item.transformMatrix;\n AdapterUtils.itemDispatch(data.item, evt, { x: transform.e, y: transform.f });\n };\n // #endregion\n this._mouseleaveHandler = (evt) => {\n if (this._dragging) {\n return;\n }\n const hitTarget = this._hitTarget;\n if (Utils.isNull(hitTarget)) {\n return;\n }\n this._scopeEvent = evt;\n const nap = { x: Number.NaN, y: Number.NaN };\n this._pointer = { page: nap, screen: nap, client: nap };\n const canvas = evt.srcElement;\n const stage = GETVAR(canvas, CANVAS_SCENE_VAR);\n this._requestDraw(stage);\n };\n this._mousemoveHandler = (evt) => {\n this._scopeEvent = evt;\n this._pointer = CustomEventUtils.getEventCoordinates(evt);\n const canvas = evt.srcElement;\n const stage = GETVAR(canvas, CANVAS_SCENE_VAR);\n this._requestDraw(stage);\n if (!this._dragging) {\n if (!Utils.isNull(this._hitTarget)) {\n AdapterUtils.stageDispatch(stage, 'move', evt);\n }\n }\n };\n this._mouseDownUpHandler = (evt) => {\n this._scopeEvent = evt;\n this._pointer = CustomEventUtils.getEventCoordinates(evt);\n const canvas = evt.target;\n if (canvas instanceof HTMLCanvasElement) {\n const stage = GETVAR(canvas, CANVAS_SCENE_VAR), hitTarget = this._hitTarget;\n const type = evt.type.replace(/^(mouse|touch)/, ''), fineType = type === 'end' ? 'click' : type;\n const opts = getStageOptions(stage);\n if (CustomEventUtils.matchModifiers(evt, opts.clickModifiers)) {\n if (!Utils.isNull(hitTarget) && hitTarget.stage === stage) {\n AdapterUtils.itemDispatch(hitTarget, fineType, evt);\n }\n else {\n AdapterUtils.stageDispatch(stage, fineType, evt);\n }\n }\n }\n };\n this._scenes = new WeakMap();\n this._handles = new WeakMap();\n }\n snapshot(stage, backgroundColor, type, quality) {\n const scenes = this._scenes;\n if (scenes.has(stage)) {\n const ctx2d = scenes.get(stage).context, srcCanvas = ctx2d.canvas;\n return this.snapshotElement(srcCanvas, backgroundColor, type, quality);\n }\n else {\n return Promise.resolve(null);\n }\n }\n getCanvas(stage) {\n const scenes = this._scenes;\n if (scenes.has(stage)) {\n const ctx2d = scenes.get(stage).context;\n return ctx2d.canvas;\n }\n else {\n return null;\n }\n }\n _getScreenInverseMatrix(m, offset) {\n return Matrix2D.invert({ a: m.a, b: m.b, c: m.c, d: m.d, e: m.e + offset.x, f: m.f + offset.y });\n }\n getTransformMatrix(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n return scenes.get(scene).screenInverseMatrix;\n }\n return Matrix2D.identity;\n }\n #dragger;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dragDrop = this.#dragger = document.createElement(P + '-drag-drop');\n dragDrop.mode = UI.DragDataMode.Copy;\n dragDrop.dropBehavior = UI.DropBehavior.None;\n dragDrop.spillBehavior = UI.DropTargetMissedBehavior.None;\n const floater = document.createElement('div');\n floater.hidden = true;\n dragDrop.floater = floater;\n // append\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(dragDrop);\n dragDrop.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n }\n disconnectedCallback() {\n const dragger = this.#dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.remove();\n }\n super.disconnectedCallback();\n }\n invalidateSize(scene, size) {\n const scenes = this._scenes;\n if (!Utils.isNull(scene) && !Utils.isNullOrEmpty(size)) {\n if (scenes.has(scene)) {\n const tuple = scenes.get(scene), ctx = tuple.context;\n ctx.canvas.width = size.width;\n ctx.canvas.height = size.height;\n const offset = tuple.offset = Utils.offsetRect(ctx.canvas);\n // transform matrix\n const stage = { x: 0, y: 0, width: size.width, height: size.height }, aspectRatio = scene.aspectRatio, viewbox = scene.viewbox;\n if (AdapterUtils.isValidViewbox(viewbox)) {\n // defaults to the equivalent of SVG's xMidYMid meet\n let mode = 'contain', align = 'center', valign = 'middle';\n if (typeof aspectRatio === 'object') {\n mode = aspectRatio.slice ? 'cover' : 'contain';\n switch (aspectRatio.x) {\n case 'min':\n align = 'left';\n break;\n case 'max':\n align = 'right';\n break;\n }\n switch (aspectRatio.y) {\n case 'min':\n valign = 'top';\n break;\n case 'max':\n valign = 'bottom';\n break;\n }\n }\n ;\n // mimic svg viewbox\n const mscale = Rect.findTransform({ x: 0, y: 0, width: viewbox.width, height: viewbox.height }, stage, mode, align, valign);\n const m = Matrix2D.translate(mscale, { x: -mscale.a * viewbox.x, y: -mscale.a * viewbox.y });\n tuple.transformMatrix = m;\n tuple.screenInverseMatrix = this._getScreenInverseMatrix(m, offset);\n }\n else {\n tuple.transformMatrix = Matrix2D.identity;\n }\n }\n }\n this._requestDraw(scene);\n }\n getHitTarget(stage) {\n const target = this._hitTarget;\n if (!Utils.isNull(target) && target.stage === stage) {\n return target;\n }\n return null;\n }\n initialize(scene) {\n if (Utils.isNull(scene)) {\n throw 'Provided scene is null or undefined.';\n }\n const scenes = this._scenes;\n const dragger = this.#dragger;\n // already in the store?\n if (scenes.has(scene)) {\n const canvas = scenes.get(scene).context.canvas;\n if (!Utils.isNull(dragger)) {\n dragger.register(canvas);\n }\n return canvas;\n }\n const stage = scene.stage;\n // empty stage DOM\n stage.innerHTML = '';\n const canvas = document.createElement('canvas');\n canvas.setAttribute('part', 'stage');\n SETVAR(canvas, CANVAS_SCENE_VAR, scene);\n const context = canvas.getContext('2d');\n canvas.addEventListener('mousemove', this._mousemoveHandler, false);\n canvas.addEventListener('mouseleave', this._mouseleaveHandler, false);\n canvas.addEventListener('touchstart', this._mouseDownUpHandler, { passive: true });\n canvas.addEventListener('touchmove', this._mouseDownUpHandler, { passive: true });\n canvas.addEventListener('touchend', this._mouseDownUpHandler, { passive: true });\n canvas.addEventListener('click', this._mouseDownUpHandler, false);\n canvas.addEventListener('mousedown', this._mouseDownUpHandler, false);\n canvas.addEventListener('mouseup', this._mouseDownUpHandler, false);\n stage.appendChild(canvas);\n scenes.set(scene, { context, transformMatrix: Matrix2D.identity, offset: Utils.offsetRect(canvas), screenInverseMatrix: Matrix2D.identity });\n if (!Utils.isNull(dragger)) {\n dragger.register(canvas);\n }\n return canvas;\n }\n dispose(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n var tuple = scenes.get(scene), context = tuple.context, canvas = context.canvas;\n const dragger = this.#dragger;\n if (!Utils.isNull(dragger)) {\n dragger.unregister(canvas);\n }\n canvas.removeEventListener('click', this._mouseDownUpHandler, false);\n canvas.removeEventListener('touchend', this._mouseDownUpHandler, false);\n canvas.removeEventListener('mousedown', this._mouseDownUpHandler, false);\n canvas.removeEventListener('mouseup', this._mouseDownUpHandler, false);\n // canvas.removeEventListener('touchmove', this._mouseDownUpHandler);\n canvas.removeEventListener('touchstart', this._mouseDownUpHandler);\n canvas.removeEventListener('mouseleave', this._mouseleaveHandler, false);\n canvas.removeEventListener('mousemove', this._mousemoveHandler, false);\n // remove\n canvas.remove();\n scenes.delete(scene);\n }\n }\n _requestDraw(scene) {\n const handles = this._handles;\n if (handles.has(scene)) {\n cancelAnimationFrame(handles.get(scene));\n }\n const throttle = () => {\n this.draw(scene);\n return requestAnimationFrame(() => { });\n };\n handles.set(scene, throttle());\n }\n #canvasCssStyle;\n draw(scene) {\n const scenes = this._scenes, handles = this._handles;\n if (!Utils.isNull(scene)) {\n if (scene.adapter !== this) {\n // not a pertinent stage anymore\n if (scenes.has(scene)) {\n scenes.delete(scene);\n handles.get(scene);\n }\n return;\n }\n if (!scenes.has(scene)) {\n // forgiving behavior (call initialize() if it's the case)\n this.initialize(scene);\n return;\n }\n if (handles.has(scene)) {\n // already in the drawing loop, reset\n cancelAnimationFrame(handles.get(scene));\n }\n const formerHitTarget = this._hitTarget;\n const items = scene.datasource || [];\n // reset hit target\n this._hitTarget = null;\n // clear stage\n const tuple = scenes.get(scene), context = tuple.context, canvas = context.canvas;\n this.#canvasCssStyle = getComputedStyle(canvas);\n context.resetTransform();\n context.clearRect(0, 0, canvas.width, canvas.height);\n // viewbox\n const m = tuple.transformMatrix;\n context.setTransform(m);\n // hit test\n const pointer = this._pointer, offset = tuple.offset, point = Number.isNaN(pointer.page.x) || Number.isNaN(pointer.page.y) ? null : { x: pointer.page.x - offset.x, y: pointer.page.y - offset.y };\n // draw recursively\n for (let drawable of items) {\n this._draw(scene, context, drawable, { transformMatrix: m }, point);\n }\n // check hit target\n const currentHitTarget = this._hitTarget;\n if (currentHitTarget != formerHitTarget) {\n if (!Utils.isNull(formerHitTarget)) {\n if (formerHitTarget instanceof Element) {\n formerHitTarget.dispatchEvent(new DrawableEvent('out', formerHitTarget, this._scopeEvent, m));\n }\n scene.dispatchEvent(new DrawableEvent('itemout', formerHitTarget, this._scopeEvent, m));\n }\n if (!Utils.isNull(currentHitTarget)) {\n if (currentHitTarget instanceof Element) {\n currentHitTarget.dispatchEvent(new DrawableEvent('over', currentHitTarget, this._scopeEvent, m));\n }\n scene.dispatchEvent(new DrawableEvent('itemover', currentHitTarget, this._scopeEvent, m));\n }\n }\n // do not loop\n // this._requestDraw(scene);\n }\n }\n _draw(scene, ctx, item, state, point) {\n item.stage ??= scene;\n if (isDrawable(item)) {\n if (item.hide) {\n return;\n }\n }\n // store parent matrix value for dragging purposes\n if (isUiObject(item) && item.draggable && !item.hide && !item.inert) {\n SETVAR(item, PARENT_MATRIX_VAR, ctx.getTransform().inverse());\n }\n let t;\n if (isUiObject(item)) {\n t = item.transformMatrix;\n if (!Utils.isNull(t) && !Matrix2D.isIdentity(t)) {\n ctx.transform(t.a, t.b, t.c, t.d, t.e, t.f);\n }\n }\n let contextPresentationState = state;\n if (isPresentationObject(item)) {\n //const stateWithWorldTransformMatrix = Utils.extend({}, state, { transformMatrix: ctx.getTransform() });\n contextPresentationState = PresentationState.combine(item, state, ctx.getTransform());\n // set presentation state\n this._setPresentationState(ctx, contextPresentationState);\n }\n if (isShape(item) || item instanceof ShapeElement) {\n this._drawShape(ctx, item, point);\n }\n else if (isText(item) || item instanceof PacemTextElement) {\n this._drawText(ctx, item, point);\n }\n else if (isImage(item) || item instanceof PacemImageElement) {\n this._drawImage(ctx, item, point);\n }\n else if (isGroup(item) || item instanceof PacemGroupElement) {\n for (let child of item.childDrawables || []) {\n this._draw(scene, ctx, child, contextPresentationState, point);\n }\n }\n // store global matrix value for debugging purposes\n if (isUiObject(item) && item.draggable && !item.hide && !item.inert) {\n SETVAR(item, WORLD_MATRIX_VAR, ctx.getTransform().inverse());\n }\n // reset presentation state\n this._setPresentationState(ctx, state);\n }\n _setPresentationState(ctx, item) {\n ctx.setTransform(item.transformMatrix);\n if (!Utils.isNullOrEmpty(item.stroke) && !isNone(item.stroke)) {\n ctx.strokeStyle = item.stroke;\n }\n else {\n ctx.strokeStyle = 'transparent';\n }\n if (!Utils.isNullOrEmpty(item.lineWidth)) {\n ctx.lineWidth = item.lineWidth;\n }\n else {\n ctx.lineWidth = 0;\n }\n if (!Utils.isNullOrEmpty(item.dashArray)) {\n ctx.setLineDash(item.dashArray);\n }\n else {\n ctx.setLineDash([]);\n }\n if (!Utils.isNullOrEmpty(item.lineCap)) {\n ctx.lineCap = item.lineCap;\n }\n else {\n ctx.lineCap = 'butt';\n }\n if (!Utils.isNullOrEmpty(item.lineJoin)) {\n ctx.lineJoin = item.lineJoin;\n }\n else {\n ctx.lineJoin = 'miter';\n }\n if (typeof item.fill === 'object' && !Utils.isNullOrEmpty(item.fill)) {\n const { stops } = item.fill;\n let gradient;\n if (isLinearGradient(item.fill)) {\n // linear gradient\n const { start, end } = item.fill;\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n }\n else if (isRadialGradient(item.fill)) {\n // radial gradient\n const { center, radius } = item.fill;\n gradient = ctx.createRadialGradient(center.x, center.y, radius, center.x, center.y, radius);\n }\n else {\n throw new Error('Unmanaged gradient type.');\n }\n for (let stop of stops) {\n gradient.addColorStop(stop.offset, stop.color);\n }\n ctx.fillStyle = gradient;\n }\n else if (!Utils.isNullOrEmpty(item.fill) && typeof item.fill === 'string' && !isNone(item.fill)) {\n ctx.fillStyle = item.fill;\n }\n else {\n ctx.fillStyle = 'transparent';\n }\n if (!Utils.isNullOrEmpty(item.opacity)) {\n ctx.globalAlpha = item.opacity;\n }\n else {\n ctx.globalAlpha = 1.0;\n }\n }\n _drawImage(ctx, item, point) {\n const CANVAS_IMAGESOURCE_VAR = 'pacem:2d-canvas-imagesrc';\n let img = GETVAR(item, CANVAS_IMAGESOURCE_VAR);\n const imgLoadHandler = () => {\n let dw = img.naturalWidth, dh = img.naturalHeight, w = item.width, h = item.height;\n if (w > 0 && h > 0) {\n }\n else if (w > 0) {\n h = dh * w / dw;\n }\n else if (h > 0) {\n w = dw * h / dh;\n }\n else {\n w = dw;\n h = dh;\n }\n if (!this._dragging\n && !item.inert /* is hit-test visible? */\n && !Utils.isNull(point)) {\n const path2D = new Path2D(`M ${item.x} ${item.y} h ${w} v ${h} H ${item.x} Z`);\n if (ctx.isPointInPath(path2D, point.x, point.y)) {\n // overwrite current hit-target (last one wins)\n this._hitTarget = item;\n }\n }\n ctx.globalAlpha = fallback(item.opacity, 1);\n ctx.drawImage(img, item.x, item.y, w, h);\n };\n if (Utils.isNull(img)) {\n img = new Image();\n img.src = item.src;\n img.onload = () => {\n SETVAR(item, CANVAS_IMAGESOURCE_VAR, img);\n imgLoadHandler();\n };\n }\n else {\n imgLoadHandler();\n }\n }\n _drawText(ctx, item, point) {\n const defaults = this.DefaultShapeValues;\n const color = ctx.fillStyle = fallback(item.color, defaults.stroke);\n const m = ctx.getTransform(), fontSize = item.fontSize > 0 ? `${item.fontSize}px` : this.#canvasCssStyle.fontSize, fontStyle = item.fontStyle || this.#canvasCssStyle.fontStyle, fontWeight = item.fontWeight || this.#canvasCssStyle.fontWeight;\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize} ${(item.fontFamily ?? this.#canvasCssStyle.fontFamily)}`;\n ctx.textAlign = item.textAnchor === 'middle' ? 'center' : item.textAnchor;\n ctx.fillText(item.text, item.anchor.x, item.anchor.y);\n ctx.globalAlpha = fallback(item.opacity, 1);\n const hasColor = !isNone(color);\n if (!this._dragging\n && !item.inert /* is hit-test visible? */\n && !Utils.isNull(point)) {\n const bbox = ctx.measureText(item.text);\n const width = bbox.width, height = bbox.actualBoundingBoxAscent + bbox.actualBoundingBoxDescent, x = item.anchor.x - bbox.actualBoundingBoxLeft, y = item.anchor.y - bbox.actualBoundingBoxAscent;\n const path2D = new Path2D(`M ${x} ${y} h ${width} v ${height} H ${x} z`);\n if (hasColor && ctx.isPointInPath(path2D, point.x, point.y)) {\n // overwrite current hit-target (last one wins)\n this._hitTarget = item;\n }\n }\n }\n _drawShape(ctx, item, point) {\n if (Utils.isNullOrEmpty(item?.pathData)) {\n return;\n }\n ctx.beginPath();\n // Path2D\n const hasFill = typeof ctx.fillStyle !== 'string' || !isNone(ctx.fillStyle), hasStroke = typeof ctx.strokeStyle !== 'string' || !isNone(ctx.strokeStyle);\n var path2D = new Path2D(item.pathData);\n if (!this._dragging\n && !item.inert /* is hit-test visible? */\n && !Utils.isNull(point)) {\n if ((hasFill && ctx.isPointInPath(path2D, point.x, point.y))\n || (hasStroke && ctx.isPointInStroke(path2D, point.x, point.y))) {\n // overwrite current hit-target (last one wins)\n this._hitTarget = item;\n }\n }\n if (hasStroke) {\n ctx.stroke(path2D);\n }\n if (hasFill) {\n ctx.fill(path2D);\n }\n const hasEnoughVertices = !Utils.isNullOrEmpty(item.vertices) && item.vertices.length > 1, hasMarkerEnd = !Utils.isNull(item.markerEnd), hasMarkerStart = !Utils.isNull(item.markerStart), hasMarkerMid = !Utils.isNull(item.markerMid);\n if (hasMarkerEnd || hasMarkerMid || hasMarkerStart) {\n if (!hasEnoughVertices) {\n this.log(Logging.LogLevel.Warn, \"Not enough vertices were explicited in order to make markers renderable.\");\n }\n }\n // WebGL: we can render markers only if vertices are explicit\n if (hasEnoughVertices) {\n const matrix = ctx.getTransform();\n if (hasMarkerStart) {\n const marker = item.markerEnd, from = item.vertices[1], to = item.vertices[0];\n const orientation = Math.atan2(to.y - from.y, to.x - from.x);\n this._drawMarker(ctx, marker, to, orientation);\n }\n if (hasMarkerMid) {\n const marker = item.markerEnd;\n for (let j = 1; j < item.vertices.length - 1; j++) {\n // reset transform, just in case\n ctx.setTransform(matrix);\n const from = item.vertices[j], to = item.vertices[j + 1];\n const orientation = Math.atan2(to.y - from.y, to.x - from.x);\n this._drawMarker(ctx, marker, to, orientation);\n }\n }\n if (hasMarkerEnd) {\n // reset transform, just in case\n ctx.setTransform(matrix);\n const marker = item.markerEnd, from = item.vertices[item.vertices.length - 2], to = item.vertices[item.vertices.length - 1];\n const orientation = Math.atan2(to.y - from.y, to.x - from.x);\n this._drawMarker(ctx, marker, to, orientation);\n }\n }\n }\n _drawMarker(ctx, marker, point, orientation) {\n const defaults = this.DefaultShapeValues;\n const refX = marker.ref?.x || 0, refY = marker.ref?.y || 0;\n const width = (marker.width || 1) * ctx.lineWidth, height = (marker.width || 1) * ctx.lineWidth;\n let viewbox = marker.viewbox, stage = { x: 0, y: 0, width: width, height: height };\n if (Utils.isNull(viewbox)) {\n viewbox = stage;\n }\n // prepare\n const mscale = { a: stage.width / viewbox.width, d: stage.height / viewbox.height }; // Rect.findTransform({ x: 0, y: 0, width: viewbox.width, height: viewbox.height }, stage, 'stretch', 'left', 'top');\n // execute\n ctx.translate(point.x, point.y);\n ctx.rotate(orientation);\n ctx.scale(mscale.a, mscale.d);\n ctx.translate(-refX, -refY);\n ctx.fillStyle = fallback(marker.fill, defaults.fill);\n ctx.strokeStyle = fallback(marker.stroke, defaults.stroke);\n // Path2D\n const hasMarkerFill = !isNone(marker.fill), hasMarkerStroke = !isNone(marker.stroke);\n var markerPath2D = new Path2D(marker.pathData);\n if (hasMarkerFill) {\n ctx.fill(markerPath2D);\n }\n if (hasMarkerStroke) {\n ctx.stroke(markerPath2D);\n }\n }\n};\nPacemCanvasAdapterElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-canvas-adapter' })\n], PacemCanvasAdapterElement);\nexport { PacemCanvasAdapterElement };\n", "import { PacemEventTarget, Utils } from '@pacem/pacem-core';\nconst JPEG_QUALITY = .9;\nexport class Pacem2DAdapterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.DefaultShapeValues = {\n stroke: \"#000\",\n lineWidth: 1,\n fill: \"#fff\"\n };\n }\n snapshotElement(element, bgColor, type, quality) {\n const jpeg = !Utils.isNullOrEmpty(bgColor), mime = type ?? (jpeg ? 'image/jpeg' : null), compression = quality ?? (jpeg ? JPEG_QUALITY : null);\n return Utils.snapshotElement(element, bgColor, mime, compression);\n }\n}\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, P, CustomElementUtils, CustomEventUtils, Utils, UI, avoidHandler } from '@pacem/pacem-core';\nimport { Matrix2D } from '@pacem/pacem-foundation';\nimport { UiElement, ShapeElement } from '../types';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { Pacem2DAdapterElement } from '../adapter';\nimport { getStageOptions } from '../stage';\nimport { AdapterUtils } from './utils';\nimport { PacemImageElement } from '../image';\nimport { PacemTextElement } from '../text';\nimport { isGroup, isShape, isText, isImage, isUiObject, isPresentationObject, isDrawable, isLinearGradient, isRadialGradient } from '../drawing';\n//namespace Pacem.Components.Drawing {\nconst SVG_NS = 'http://www.w3.org/2000/svg', DRAWABLE_VAR = 'pacem:2-svg-drawable', STAGE_VAR = 'pacem:2d-svg-stage', GETVAR = CustomElementUtils.getAttachedPropertyValue, SETVAR = CustomElementUtils.setAttachedPropertyValue, DELVAR = CustomElementUtils.deleteAttachedPropertyValue;\nfunction fallback(v, f) {\n return Utils.isNull(v) ? f : v;\n}\nfunction replaceChildAt(parent, newChild, targetIndex) {\n if (targetIndex >= parent.children.length) {\n parent.appendChild(newChild);\n return null;\n }\n else {\n return parent.replaceChild(newChild, parent.children.item(targetIndex));\n }\n}\nlet PacemSvgAdapterElement = class PacemSvgAdapterElement extends Pacem2DAdapterElement {\n constructor() {\n super(...arguments);\n this._hitTarget = null;\n this._dragInitHandler = (evt) => {\n const args = evt.detail, el = args.element, drawable = GETVAR(el, DRAWABLE_VAR), stageTransformMatrix = drawable.stage.transformMatrix, initialMatrix = drawable.transformMatrix ?? Matrix2D.identity;\n args.data = {\n stageTransformMatrix, item: drawable,\n initialTransformMatrix: initialMatrix\n };\n const reject = AdapterUtils.itemDispatch(drawable, evt, { x: 0, y: 0 });\n if (reject) {\n // reject dragging\n evt.preventDefault();\n }\n };\n this._draggingHandler = (evt) => {\n avoidHandler(evt);\n this.#dragging = true;\n const el = evt.detail.element;\n const data = evt.detail.data;\n const args = evt.detail;\n const screenOffset = { x: (args.currentPosition.x - args.origin.x) * data.stageTransformMatrix.a, y: (args.currentPosition.y - args.origin.y) * data.stageTransformMatrix.d };\n const offset = {\n x: screenOffset.x + data.initialTransformMatrix.e,\n y: screenOffset.y + data.initialTransformMatrix.f\n }, \n // this is not correct when item or any of its parents have been rotated!\n stageOffset = {\n x: screenOffset.x + data.stageTransformMatrix.e,\n y: screenOffset.y + data.stageTransformMatrix.f\n };\n //console.log(`current pos: ${args.currentPosition.x},${args.currentPosition.y}`);\n //console.log(`origin pos: ${args.origin.x},${args.origin.y}`);\n //console.log(`offset: ${offset.x},${offset.y}`);\n //console.log(data.stageTransformMatrix);\n //console.log(el.style.transform); console.log(data.initialTransformMatrix);\n const rejected = AdapterUtils.itemDispatch(data.item, evt, stageOffset);\n if (!rejected) {\n const init = data.initialTransformMatrix;\n el.style.transform = `matrix(${init.a},${init.b},${init.c},${init.d},${offset.x},${offset.y})`;\n }\n };\n this._dragEndHandler = (evt) => {\n this.#dragging = false;\n const args = evt.detail, el = args.element, data = args.data, transform = Utils.deserializeTransform(el.style);\n // store transform\n const offset = { x: transform.e, y: transform.f };\n if (data.item instanceof UiElement) {\n data.item.translateX = offset.x;\n data.item.translateY = offset.y;\n }\n else {\n const init = data.initialTransformMatrix, actual = { a: init.a, b: init.b, c: init.c, d: init.d, e: offset.x, f: offset.y };\n Utils.extend(data.item, { transformMatrix: actual });\n }\n el.style.transform = '';\n AdapterUtils.itemDispatch(data.item, evt, offset);\n };\n this._mouseleaveHandler = (evt) => {\n if (this.#dragging) {\n return;\n }\n const hitTarget = this._hitTarget;\n if (Utils.isNull(hitTarget)) {\n return;\n }\n this._hitTarget = null;\n if (!Utils.isNull(hitTarget)) {\n this.#dragger.unregister(this._items.get(hitTarget));\n AdapterUtils.itemDispatch(hitTarget, 'out', evt);\n }\n };\n this._mousemoveHandler = (evt) => {\n var pt = CustomEventUtils.getEventCoordinates(evt).client;\n if (!this.#dragging) {\n // not dragging around\n var d = null;\n const root = evt.target.getRootNode();\n root.elementsFromPoint(pt.x, pt.y).find(i => {\n d = GETVAR(i, DRAWABLE_VAR);\n return d && !d.inert;\n });\n var old = this._hitTarget, val = d;\n if (Utils.isNull(d && d.stage) || !this._scenes.has(d.stage) || d.inert) {\n val = null;\n }\n const hitTarget = this._hitTarget = val;\n if (val !== old) {\n if (!Utils.isNull(old)) {\n this.#dragger.unregister(this._items.get(old));\n AdapterUtils.itemDispatch(old, 'out', evt);\n }\n if (!Utils.isNull(val)) {\n if (val.draggable) {\n this.#dragger.register(this._items.get(val));\n }\n AdapterUtils.itemDispatch(val, 'over', evt);\n }\n }\n if (Utils.isNull(hitTarget)) {\n // dispatch only if no hit target\n const svg = evt.currentTarget;\n const stage = GETVAR(svg, STAGE_VAR);\n if (!Utils.isNull(stage)) {\n AdapterUtils.stageDispatch(stage, 'move', evt);\n }\n }\n }\n };\n this._mouseDownUpHandler = (evt) => {\n const svg = evt.currentTarget;\n if (svg instanceof SVGSVGElement) {\n const stage = GETVAR(svg, STAGE_VAR), hitTarget = this._hitTarget;\n const type = evt.type.replace(/^mouse/, '');\n const opts = getStageOptions(stage);\n if (CustomEventUtils.matchModifiers(evt, opts.clickModifiers)) {\n if (!Utils.isNull(hitTarget) && hitTarget.stage === stage) {\n AdapterUtils.itemDispatch(hitTarget, type, evt);\n }\n else {\n AdapterUtils.stageDispatch(stage, type, evt);\n }\n }\n }\n };\n this._scenes = new WeakMap();\n this._markers = new WeakMap();\n this._gradients = new WeakMap();\n this._items = new WeakMap();\n }\n snapshot(stage, background, type, quality) {\n if (this._scenes.has(stage)) {\n const svg = this._scenes.get(stage);\n return this.snapshotElement(svg, background, type, quality);\n }\n else {\n return Promise.resolve(null);\n }\n }\n getTransformMatrix(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n return scenes.get(scene).getScreenCTM().inverse();\n }\n return Matrix2D.identity;\n }\n #dragger;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dragDrop = this.#dragger = document.createElement(P + '-drag-drop');\n dragDrop.mode = UI.DragDataMode.Self;\n // append\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(dragDrop);\n dragDrop.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n }\n disconnectedCallback() {\n const dragger = this.#dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.remove();\n }\n super.disconnectedCallback();\n }\n invalidateSize(scene, size) {\n const scenes = this._scenes;\n if (!Utils.isNull(scene) && !Utils.isNullOrEmpty(size)) {\n if (scenes.has(scene)) {\n var svg = scenes.get(scene);\n svg.setAttribute('width', size.width + '');\n svg.setAttribute('height', size.height + '');\n const rect = scene.viewbox, aspectRatio = scene.aspectRatio;\n if (AdapterUtils.isValidViewbox(rect)) {\n svg.setAttribute('viewBox', `${rect.x} ${rect.y} ${rect.width} ${rect.height}`);\n }\n else {\n svg.removeAttribute('viewBox');\n }\n if (Utils.isNullOrEmpty(aspectRatio) || typeof aspectRatio === 'string') {\n svg.removeAttribute('preserveAspectRatio');\n }\n else {\n svg.setAttribute('preserveAspectRatio', `xM${aspectRatio.x.substring(1)}YM${aspectRatio.y.substring(1)} ${(aspectRatio.slice ? 'slice' : 'meet')}`);\n }\n }\n }\n }\n initialize(scene) {\n if (Utils.isNull(scene)) {\n throw 'Provided scene is null or undefined.';\n }\n const scenes = this._scenes;\n // already in the store?\n if (scenes.has(scene)) {\n return scenes.get(scene);\n }\n const stage = scene.stage;\n // empty stage DOM and clear dictionary\n stage.innerHTML = '';\n this._items = new WeakMap();\n var svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('part', 'stage');\n SETVAR(svg, STAGE_VAR, scene);\n stage.appendChild(svg);\n scenes.set(scene, svg);\n const options = { passive: false, capture: true };\n svg.addEventListener('mousemove', this._mousemoveHandler, false);\n svg.addEventListener('click', this._mouseDownUpHandler, false);\n svg.addEventListener('mousedown', this._mouseDownUpHandler, false);\n svg.addEventListener('mouseup', this._mouseDownUpHandler, false);\n svg.addEventListener('mouseleave', this._mouseleaveHandler, false);\n // draw right away\n // this.draw(scene);\n return svg;\n }\n dispose(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n var svg = scenes.get(scene);\n svg.removeEventListener('mousemove', this._mousemoveHandler);\n svg.removeEventListener('click', this._mouseDownUpHandler);\n svg.removeEventListener('mousedown', this._mouseDownUpHandler);\n svg.removeEventListener('mouseup', this._mouseDownUpHandler);\n svg.removeEventListener('mouseleave', this._mouseleaveHandler);\n // remove\n DELVAR(svg, STAGE_VAR);\n svg.remove();\n scenes.delete(scene);\n }\n }\n getHitTarget(scene) {\n return this._hitTarget;\n }\n draw(scene, item, deepRedraw = false) {\n const scenes = this._scenes, dict = this._items;\n if (!Utils.isNull(scene)) {\n if (scene.adapter === this) {\n if (!scenes.has(scene)) {\n // forgiving behavior (call initialize() if it's the case)\n this.initialize(scene);\n }\n }\n else {\n if (scenes.has(scene)) {\n scenes.delete(scene);\n }\n return;\n }\n }\n else {\n return;\n }\n var items = scene.datasource, flow = true, parent = scenes.get(scene);\n // item provided?\n if (!Utils.isNull(item) && dict.has(item)) {\n items = [item];\n parent = dict.get(item).parentNode;\n flow = false;\n }\n if (flow) {\n // sweep everything, quick and dirty\n parent.innerHTML = '<defs></defs>';\n this._markers = new WeakMap();\n }\n this._draw(scene, parent, items || [], flow, deepRedraw);\n }\n #dragging;\n _hasItems(object) {\n return isGroup(object);\n }\n _disposeSvg(el) {\n if (!Utils.isNull(el)) {\n var drawable = GETVAR(el, DRAWABLE_VAR);\n DELVAR(el, DRAWABLE_VAR);\n this._items.delete(drawable);\n }\n }\n _draw(scene, parent, items, flow, deepRedraw) {\n const dict = this._items;\n // children counter\n let j = 0;\n if (parent.firstElementChild instanceof SVGDefsElement) {\n j++;\n }\n if (!Utils.isNullOrEmpty(items)) {\n for (let item of items) {\n item.stage ??= scene;\n let el;\n if (!dict.has(item)) {\n el = this._buildSVGElement(item);\n SETVAR(el, DRAWABLE_VAR, item);\n this._disposeSvg(replaceChildAt(parent, el, j));\n dict.set(item, el);\n }\n else {\n el = dict.get(item);\n if (el.parentNode !== parent) {\n this._disposeSvg(replaceChildAt(parent, el, j));\n }\n }\n if (isDrawable(item)) {\n if (item.hide) {\n el.setAttribute('display', 'none');\n }\n else {\n el.removeAttribute('display');\n }\n el.style.transform = '';\n }\n if (isShape(item)) {\n const path = el;\n path.setAttribute('d', fallback(item.pathData, 'M0,0'));\n // markers\n for (let { marker, suffix } of [{ marker: item.markerStart, suffix: 'start' }, { marker: item.markerEnd, suffix: 'end' }, { marker: item.markerMid, suffix: 'mid' }]) {\n if (marker) {\n const markerSvg = this._ensureMarker(parent, marker);\n path.setAttribute('marker-' + suffix, `url(#${markerSvg.id})`);\n }\n else {\n path.removeAttribute('marker-' + suffix);\n }\n }\n }\n else if (isText(item)) {\n const text = el;\n text.textContent = item.text;\n text.style.fill = Utils.isNullOrEmpty(item.color) ? '' : item.color;\n text.style.fontFamily = Utils.isNullOrEmpty(item.fontFamily) ? '' : item.fontFamily;\n //if (item.fontSize > 0) {\n // text.setAttribute('font-size', item.fontSize.toString());\n //} else {\n // text.removeAttribute('font-size');\n //}\n text.style.fontSize = Utils.isNull(item.fontSize) ? '' : item.fontSize + 'px';\n if (!Utils.isNullOrEmpty(item.fontWeight)) {\n text.style.fontWeight = item.fontWeight;\n }\n if (!Utils.isNullOrEmpty(item.fontStyle)) {\n text.style.fontStyle = item.fontStyle;\n }\n text.setAttribute('text-anchor', fallback(item.textAnchor, 'start'));\n if (!Utils.isNull(item.anchor)) {\n text.setAttribute('x', item.anchor.x.toString());\n text.setAttribute('y', item.anchor.y.toString());\n }\n else {\n text.removeAttribute('x');\n text.removeAttribute('y');\n }\n }\n else if (isImage(item)) {\n const img = el;\n img.setAttribute('href', item.src);\n img.setAttribute('preserveAspectRatio', 'none');\n if (item.width > 0) {\n img.setAttribute('width', '' + item.width);\n }\n else {\n img.removeAttribute('width');\n }\n if (item.height > 0) {\n img.setAttribute('height', '' + item.height);\n }\n else {\n img.removeAttribute('height');\n }\n if (!Utils.isNull(item.x)) {\n img.setAttribute('x', '' + item.x);\n }\n else {\n img.removeAttribute('x');\n }\n if (!Utils.isNull(item.y)) {\n img.setAttribute('y', '' + item.y);\n }\n else {\n img.removeAttribute('y');\n }\n }\n if (isUiObject(item)) {\n const t = item.transformMatrix;\n if (Utils.isNull(t) || Matrix2D.isIdentity(t)) {\n el.removeAttribute('transform');\n }\n else {\n el.setAttribute('transform', `matrix(${t.a} ${t.b} ${t.c} ${t.d} ${t.e} ${t.f})`);\n }\n const opacity = fallback(item.opacity, 1);\n if (opacity === 1) {\n el.removeAttribute('opacity');\n }\n else {\n el.setAttribute('opacity', '' + opacity);\n }\n }\n if (isPresentationObject(item)) {\n if (Utils.isNullOrEmpty(item.fill)) {\n el.removeAttribute('fill');\n }\n else if (typeof item.fill === 'string') {\n el.setAttribute('fill', item.fill);\n }\n else {\n const grad = this._ensureGradient(parent, item.fill);\n el.setAttribute('fill', `url(#${grad.id})`);\n }\n if (Utils.isNullOrEmpty(item.stroke)) {\n el.removeAttribute('stroke');\n }\n else {\n el.setAttribute('stroke', item.stroke);\n }\n if (Utils.isNullOrEmpty(item.dashArray)) {\n el.removeAttribute('stroke-dasharray');\n }\n else {\n el.setAttribute('stroke-dasharray', item.dashArray.join(' '));\n }\n if (Utils.isNullOrEmpty(item.lineCap)) {\n el.removeAttribute('stroke-linecap');\n }\n else {\n el.setAttribute('stroke-linecap', item.lineCap);\n }\n if (Utils.isNullOrEmpty(item.lineJoin)) {\n el.removeAttribute('stroke-linejoin');\n }\n else {\n el.setAttribute('stroke-linejoin', item.lineJoin);\n }\n if (Utils.isNullOrEmpty(item.lineWidth)) {\n el.removeAttribute('stroke-width');\n }\n else {\n el.setAttribute('stroke-width', '' + item.lineWidth);\n }\n //let css = '';\n //if (!Utils.isNullOrEmpty(item.dashArray)) {\n // css += `stroke-dasharray: ${item.dashArray.join(',')};`;\n //}\n //if (!Utils.isNullOrEmpty(item.lineCap)) {\n // css += `stroke-linecap: ${item.lineCap};`;\n //}\n //if (!Utils.isNullOrEmpty(item.lineJoin)) {\n // css += `stroke-linejoin: ${item.lineJoin};`;\n //}\n //el.style.cssText = css;\n //el.setAttribute('stroke-width', '' + fallback(item.lineWidth, defaults.lineWidth));\n }\n // hit test visibility\n if (item.inert) {\n el.style.pointerEvents = 'none';\n }\n else {\n el.style.pointerEvents = '';\n }\n if ((flow || deepRedraw) && this._hasItems(item)) {\n // recursion\n this._draw(scene, el, item.childDrawables, true, deepRedraw);\n }\n j++;\n }\n }\n if (flow) {\n // remove exceeding children (except defs)\n for (let k = parent.children.length - 1; k >= j; k--) {\n const el = parent.children.item(k);\n this._disposeSvg(el);\n el.remove();\n }\n }\n }\n _buildSVGElement(item) {\n if (isShape(item) || item instanceof ShapeElement) {\n return document.createElementNS(SVG_NS, 'path');\n }\n if (isText(item) || item instanceof PacemTextElement) {\n return document.createElementNS(SVG_NS, 'text');\n }\n if (isImage(item) || item instanceof PacemImageElement) {\n return document.createElementNS(SVG_NS, 'image');\n }\n return document.createElementNS(SVG_NS, 'g');\n }\n _ensureGradient(parent, gradient) {\n const store = this._gradients;\n if (!store.has(parent)) {\n store.set(parent, new WeakMap());\n }\n const map = store.get(parent);\n // linear or radial?\n const isLinear = isLinearGradient(gradient), isRadial = isRadialGradient(gradient);\n if (map.has(gradient)) {\n const current = map.get(gradient);\n if ((isLinear && current instanceof SVGLinearGradientElement)\n || (isRadial && current instanceof SVGRadialGradientElement)) {\n // remove from DOM\n current.remove();\n // remove from memoizer\n map.delete(gradient);\n }\n }\n if (!map.has(gradient)) {\n // <defs>\n let defsContainer = parent;\n let defs;\n while (Utils.isNull(defs = defsContainer.querySelector(':scope > defs'))) {\n const parent1 = defsContainer.parentElement;\n if (parent1 instanceof SVGElement) {\n defsContainer = parent1;\n }\n else {\n break;\n }\n }\n if (Utils.isNull(defs)) {\n throw new Error('Must provide a <defs> element.');\n }\n var gradientSvg = null;\n if (isLinear) {\n // create linear gradient node\n gradientSvg = document.createElementNS(SVG_NS, 'linearGradient');\n }\n else if (isRadialGradient(gradient)) {\n // create radial gradient node\n gradientSvg = document.createElementNS(SVG_NS, 'radialGradient');\n }\n else {\n throw new Error('Unmanaged gradient type.');\n }\n gradientSvg.setAttribute('gradientUnits', 'userSpaceOnUse');\n gradientSvg.setAttribute('id', `grad-${Utils.uniqueCode()}`);\n defs.appendChild(gradientSvg);\n map.set(gradient, gradientSvg);\n }\n const retval = map.get(gradient);\n if (isLinear) {\n // linear\n retval.setAttribute('x1', gradient.start.x.toString());\n retval.setAttribute('y1', gradient.start.y.toString());\n retval.setAttribute('x2', gradient.end.x.toString());\n retval.setAttribute('y2', gradient.end.y.toString());\n }\n else if (isRadial) {\n retval.setAttribute('cx', gradient.center.x.toString());\n retval.setAttribute('cy', gradient.center.y.toString());\n retval.setAttribute('r', gradient.radius.toString());\n }\n // stops\n let j = 0;\n for (let stop of gradient.stops) {\n while (retval.children.length <= j) {\n const stopSvgAdd = document.createElementNS(SVG_NS, 'stop');\n retval.appendChild(stopSvgAdd);\n }\n const stopSvg = retval.children.item(j);\n stopSvg.setAttribute('offset', (stop.offset * 100) + '%');\n stopSvg.setAttribute('stop-color', stop.color);\n if (!Utils.isNull(stop.opacity)) {\n stopSvg.setAttribute('stop-opacity', stop.opacity.toString());\n }\n j++;\n }\n while (retval.children.length > gradient.stops.length) {\n const lastChild = retval.children.item(retval.children.length - 1);\n retval.removeChild(lastChild);\n }\n return retval;\n }\n _ensureMarker(parent, marker) {\n const store = this._markers;\n if (!store.has(parent)) {\n store.set(parent, new WeakMap());\n }\n const map = store.get(parent);\n if (!map.has(marker)) {\n const markerSvg = document.createElementNS(SVG_NS, 'marker');\n map.set(marker, markerSvg);\n const markerPath = document.createElementNS(SVG_NS, 'path');\n markerSvg.appendChild(markerPath);\n markerSvg.setAttribute('id', 'mark' + Utils.uniqueCode());\n let defsContainer = parent;\n let defs;\n while (Utils.isNull(defs = defsContainer.querySelector(':scope > defs'))) {\n const parent1 = defsContainer.parentElement;\n if (parent1 instanceof SVGElement) {\n defsContainer = parent1;\n }\n else {\n break;\n }\n }\n if (Utils.isNull(defs)) {\n throw new Error('Must provide a <defs> element.');\n }\n defs.appendChild(markerSvg);\n }\n const markerSvg = map.get(marker), markerPath = markerSvg.firstElementChild;\n // marker attributes\n markerSvg.setAttribute('orient', 'auto-start-reverse');\n if (!Utils.isNullOrEmpty(marker.viewbox)) {\n markerSvg.setAttribute('viewBox', `${marker.viewbox.x} ${marker.viewbox.y} ${marker.viewbox.width} ${marker.viewbox.height}`);\n }\n else {\n markerSvg.removeAttribute('viewBox');\n }\n if (!Utils.isNullOrEmpty(marker.ref)) {\n markerSvg.setAttribute('refX', marker.ref.x.toString());\n markerSvg.setAttribute('refY', marker.ref.y.toString());\n }\n else {\n markerSvg.removeAttribute('refX');\n markerSvg.removeAttribute('refY');\n }\n if (marker.height > 0) {\n markerSvg.setAttribute('markerHeight', marker.height.toString());\n }\n else {\n markerSvg.removeAttribute('markerHeight');\n }\n if (marker.width > 0) {\n markerSvg.setAttribute('markerWidth', marker.width.toString());\n }\n else {\n markerSvg.removeAttribute('markerWidth');\n }\n // path attributes\n markerPath.setAttribute('d', marker.pathData);\n if (!Utils.isNullOrEmpty(marker.fill)) {\n markerPath.setAttribute('fill', marker.fill);\n }\n else {\n markerPath.removeAttribute('fill');\n }\n if (!Utils.isNullOrEmpty(marker.stroke)) {\n markerPath.setAttribute('stroke', marker.stroke);\n }\n else {\n markerPath.removeAttribute('stroke');\n }\n return markerSvg;\n }\n};\nPacemSvgAdapterElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-svg-adapter' })\n], PacemSvgAdapterElement);\nexport { PacemSvgAdapterElement };\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["export * as Drawing from './index-components-drawing';\n", "export * from './drawable-element';\nexport * from './stage-abstractions';\nexport * from './types';\nexport * from './group';\nexport * from './ellipse';\nexport * from './rect';\nexport * from './line';\nexport * from './path';\nexport * from './polygon';\nexport * from './polyline';\nexport * from './image';\nexport * from './text';\nexport * from './stage';\nexport * from './adapters/utils';\nexport * from './adapters/canvasadapter';\nexport * from './adapters/svgadapter';\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 { Components, CustomElementUtils, PropertyConverters, Watch, } from '@pacem/pacem-core';\nimport { Pacem2DElement } from './stage';\n/**\n * Root of the `<pacem-2d-*>` drawable elements hierarchy: wires a custom element up to its containing\n * `Pacem2DElement` stage and, in case of nesting, its parent drawable. By default children are not allowed\n * (only `PacemGroupElement` overrides `validate` to accept them).\n */\nexport class DrawableElement extends Components.PacemCrossItemsContainerElement {\n validate(_) {\n // by default no children allowed (Group will except)\n return false;\n }\n findContainer() {\n // override\n return this.parent || this.stage;\n }\n /** @readonly Gets the `Pacem2DElement` stage this drawable belongs to. */\n get stage() {\n return this['_scene'] = this['_scene'] || CustomElementUtils.findAncestorOfType(this, Pacem2DElement);\n }\n /** @readonly Gets the closest ancestor `DrawableElement` (e.g. a containing group), if any. */\n get parent() {\n return this['_drawableParent'] = this['_drawableParent'] || CustomElementUtils.findAncestor(this, i => i instanceof DrawableElement);\n }\n disconnectedCallback() {\n delete this['_scene'];\n delete this['_drawableParent'];\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'hide':\n this.stage?.draw(this);\n break;\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], DrawableElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], DrawableElement.prototype, \"inert\", void 0);\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, ViewChild, Debounce, PCSS, P, Utils, PropertyConverters, PropertyChangeEvent, CustomEventUtils, avoidHandler, EventKeyModifier, Components } from '@pacem/pacem-core';\nimport { Rect, Matrix2D } from '@pacem/pacem-foundation';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { DrawableElement } from './drawable-element';\nimport { isGroup } from './drawing';\n//namespace Pacem.Components.Drawing {\n// group [1] := align x,[3] := align y,[6] := slice\nconst ASPECTRATIO_PATTERN = /^\\s*[xX]\\s*([Mm](in|ax|id))\\s*[yY]\\s*([Mm](in|ax|id))(\\s+(none|slice|meet))?\\s*$/;\nconst aspectRatioPropertyConverter = {\n convert: (attr) => {\n const regArr = ASPECTRATIO_PATTERN.exec(attr);\n if (regArr && regArr.length >= 4) {\n return {\n x: regArr[1].toLowerCase(),\n y: regArr[3].toLowerCase(),\n slice: regArr[6] === 'slice'\n };\n }\n return 'none';\n },\n convertBack: (val) => {\n if (Utils.isNull(val) || typeof val === 'string') {\n return 'none';\n }\n return `xM${(val.x.substring(1))}YM${(val.y.substring(1))} ${(val.slice ? 'slice' : 'meet')}`;\n }\n};\nconst DEFAULT_STAGE_OPTIONS = {\n panControl: true,\n zoomControl: true,\n panModifiers: [EventKeyModifier.AltKey],\n zoomModifiers: [EventKeyModifier.AltKey],\n clickModifiers: []\n};\n/**\n * Returns the effective `StageOptions` for the given stage, filling in any option left unset with the\n * library defaults.\n * @param stage The stage to resolve options for.\n */\nexport function getStageOptions(stage) {\n const options = stage instanceof Pacem2DElement ? stage.options : {};\n return Utils.extend({}, DEFAULT_STAGE_OPTIONS, options);\n}\n/**\n * The `<pacem-2d>` element: root stage/scene container for the drawable elements (shapes, text, images,\n * groups...). Delegates actual rendering to the assigned `adapter` (SVG or Canvas) and handles the\n * viewbox/aspect-ratio mapping plus built-in pan and zoom interactions.\n */\nlet Pacem2DElement = class Pacem2DElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this.#transformMatrix = Matrix2D.identity;\n this.#options = DEFAULT_STAGE_OPTIONS;\n this._resizeHandler = (evt) => {\n this.#size = { x: evt.detail.left, y: evt.detail.top, width: evt.detail.width, height: evt.detail.height };\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n this._invalidateSize();\n }\n };\n this._zoomHandler = (evt) => {\n // only trusted ui interaction\n if (!evt.isTrusted) {\n return;\n }\n const opts = this.#options;\n if (opts.zoomControl && CustomEventUtils.matchModifiers(evt, opts.zoomModifiers)) {\n // prevent anything\n avoidHandler(evt);\n const zoomingOut = evt.deltaY < 0;\n // center change?\n const factor = .1, sign = zoomingOut ? -1 : 1, factorWSign = factor * sign, scale = 1 + factorWSign;\n const stageRect = Utils.offsetRect(evt.currentTarget), pt = { x: evt.clientX, y: evt.clientY };\n this._zoom(scale, stageRect, pt);\n }\n };\n this._panHandler = (evt) => {\n const state = this.#panningStart, actual = this._getPanPoint(evt);\n if (!Utils.isNullOrEmpty(state && state.point) && !Utils.isNull(actual)) {\n avoidHandler(evt);\n const factor = state.factor, vbox = state.box, start = state.point;\n this.viewbox = {\n x: vbox.x - factor * (actual.x - start.x),\n y: vbox.y - factor * (actual.y - start.y),\n width: vbox.width,\n height: vbox.height\n };\n }\n };\n this._panStartHandler = (evt) => {\n const opts = this.#options;\n if (!opts.panControl) {\n return;\n }\n // only trusted ui interaction\n if (!evt.isTrusted) {\n return;\n }\n const size = this.#size, vbox = this.viewbox || { x: 0, y: 0, width: size.width, height: size.height }, start = this._getPanPoint(evt);\n if (start) {\n avoidHandler(evt);\n this._stage.style.pointerEvents = 'none';\n const aspectRatio = this._getActualAspectRatio();\n const wBased = vbox.width / size.width, hBased = vbox.height / size.height, factor = aspectRatio.slice ? Math.min(wBased, hBased) : Math.max(wBased, hBased);\n this.#panningStart = { point: start, box: vbox, factor };\n }\n };\n this._panEndHandler = (evt) => {\n this._stage.style.pointerEvents = '';\n this.#panningStart = null;\n };\n }\n /** @readonly Gets the DOM element hosting the stage content. */\n get stage() {\n return this._stage;\n }\n /** Processes the stage content and returns a snapshot image (delegates to the current `adapter`). */\n snapshot(bgColor, type, quality) {\n const adapter = this.adapter;\n if (Utils.isNull(adapter)) {\n return Promise.resolve(null);\n }\n return adapter.snapshot(this, bgColor, type, quality);\n }\n #originalViewBox;\n #transformMatrix;\n /** @readonly Gets the matrix that projects stage coords into screen coords. */\n get transformMatrix() {\n return this.#transformMatrix;\n }\n _transformMatrixScale() {\n const sizeObj = this.#size || Utils.offsetRect(this._stage);\n var origVbox = this.#originalViewBox || sizeObj;\n const vbox = this.viewbox || origVbox;\n const aspectRatio = this.aspectRatio || 'none';\n const mode = aspectRatio === 'none' ? 'stretch' : (aspectRatio.slice ? 'cover' : 'contain');\n const actual = Rect.findTransform(vbox, origVbox, mode);\n return actual.a;\n }\n validate(item) {\n return item instanceof DrawableElement && /* only direct items */ Utils.isNull(item.parent);\n }\n draw(item, redraw = false) {\n const adapter = this.adapter;\n if (!this.disabled && !Utils.isNull(adapter)) {\n let cancelable = new CustomEvent('predraw', { cancelable: true });\n this.dispatchEvent(cancelable);\n if (!cancelable.defaultPrevented) {\n adapter.draw(this, item, redraw);\n this.dispatchEvent(new CustomEvent('draw'));\n }\n }\n }\n _drawDebounced(item, force = false) {\n if (!Utils.isNull(item) && isGroup(item)) {\n this.draw(item, force);\n }\n else {\n this.draw(item);\n }\n }\n requestDraw(item, redraw = false) {\n this._drawDebounced(item, redraw);\n }\n _buildUpDatasourceFromDOM() {\n this.datasource = (this.items || []).slice();\n }\n #options;\n #size;\n _getActualAspectRatio() {\n const aspectRatio = this.aspectRatio || 'none';\n const alignmentX = aspectRatio === 'none' ? 'mid' : aspectRatio.x;\n const alignmentY = aspectRatio === 'none' ? 'mid' : aspectRatio.y;\n const slice = aspectRatio === 'none' ? false : aspectRatio.slice;\n return { x: alignmentX, y: alignmentY, slice };\n }\n _zoomFromValue(scale) {\n const sizeObj = this.#size;\n if (Utils.isNull(sizeObj)) {\n return;\n }\n const sizeRect = sizeObj;\n const origVbox = this.#originalViewBox || sizeRect, vbox = this.viewbox || origVbox;\n const aspectRatio = this.aspectRatio || 'none';\n const mode = aspectRatio === 'none' ? 'stretch' : (aspectRatio.slice ? 'cover' : 'contain');\n const actual = Rect.findTransform(vbox, sizeRect, mode);\n const original = Rect.findTransform(origVbox, sizeRect, mode);\n const actualScale = actual.a;\n const origScale = original.a;\n const targetScale = origScale * scale;\n const incrementalInverseScale = actualScale / targetScale;\n this._zoom(incrementalInverseScale);\n }\n _zoom(scale, stageRect, pt) {\n if (Utils.isNull(stageRect)) {\n stageRect = Utils.offsetRect(this._stage);\n }\n if (Utils.isNull(pt)) {\n pt = { x: stageRect.x + stageRect.width * .5, y: stageRect.y + stageRect.height * .5 };\n }\n const sizeObj = this.#size, vbox = this.viewbox || sizeObj;\n const vsize = Math.min(vbox.width, vbox.height), targetWidth = vsize * scale, targetHeight = vsize * scale;\n if (targetWidth > 0 && targetHeight > 0) {\n const aspectRatio = this._getActualAspectRatio();\n const alignmentX = aspectRatio.x;\n const alignmentY = aspectRatio.y;\n const slice = aspectRatio.slice;\n // offset\n const vboxRatio = vbox.width / vbox.height, size = slice ? Math.max(stageRect.width, stageRect.height) : Math.min(stageRect.width, stageRect.height);\n let \n // to be adjusted based on aspectRatio\n adjX, adjY;\n ;\n switch (alignmentX) {\n case 'mid':\n adjX = (targetWidth - vbox.width) * (pt.x - stageRect.x - .5 * (stageRect.width - size)) / (size * vboxRatio);\n break;\n case 'max':\n adjX = (targetWidth - vbox.width) * (pt.x - stageRect.x - (stageRect.width - size)) / (size * vboxRatio);\n break;\n default:\n adjX = (targetWidth - vbox.width) * (pt.x - stageRect.x) / (size * vboxRatio);\n break;\n }\n switch (alignmentY) {\n case 'mid':\n adjY = (targetHeight - vbox.height) * (pt.y - stageRect.y - .5 * (stageRect.height - size)) / (size * vboxRatio);\n break;\n case 'max':\n adjY = (targetHeight - vbox.height) * (pt.y - stageRect.y - (stageRect.height - size)) / (size * vboxRatio);\n break;\n default:\n adjY = (targetHeight - vbox.height) * (pt.y - stageRect.y) / (size * vboxRatio);\n break;\n }\n const targetX = vbox.x - adjX, targetY = vbox.y - adjY;\n this.viewbox = { x: targetX, y: targetY, width: targetWidth, height: targetHeight };\n }\n }\n _getPanPoint(evt) {\n const opts = this.#options;\n if (evt instanceof MouseEvent && CustomEventUtils.matchModifiers(evt, opts.panModifiers)) {\n return CustomEventUtils.getEventCoordinates(evt).page;\n }\n return null;\n }\n #panningStart;\n _invalidateSize() {\n this.adapter.invalidateSize(this, this.#size);\n const prevTransformMatrix = this.#transformMatrix;\n this.#transformMatrix = this.adapter.getTransformMatrix(this);\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'transformMatrix', currentValue: this.#transformMatrix, oldValue: prevTransformMatrix }));\n this.zoom = this._transformMatrixScale();\n this.dispatchEvent(new Components.ResizeEvent(this.#size));\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n adapter.initialize(this);\n this._invalidateSize();\n // request draw right away\n this._drawDebounced();\n }\n const resize = this._resize;\n resize.addEventListener(Components.ResizeEventName, this._resizeHandler, false);\n const stage = this._stage;\n resize.target = stage;\n const options = { capture: false, passive: true };\n // zooming\n stage.addEventListener('wheel', this._zoomHandler, false);\n // panning\n stage.addEventListener('mousedown', this._panStartHandler, false);\n stage.addEventListener('touchstart', this._panStartHandler, options);\n window.addEventListener('mousemove', this._panHandler, false);\n window.addEventListener('mouseup', this._panEndHandler, false);\n window.addEventListener('touchmove', this._panHandler, options);\n window.addEventListener('touchend', this._panEndHandler, options);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'adapter':\n if (!Utils.isNull(old)) {\n old.dispose(this);\n }\n if (!Utils.isNull(val)) {\n val.initialize(this);\n this._invalidateSize();\n this._drawDebounced();\n }\n break;\n case 'aspectRatio':\n if (!Utils.isNull(this.adapter)) {\n this._invalidateSize();\n }\n break;\n case 'viewbox':\n if (!Utils.isNull(this.adapter)) {\n this._invalidateSize();\n }\n this.#originalViewBox ??= (this.viewbox || null);\n break;\n case 'items':\n this._buildUpDatasourceFromDOM();\n break;\n case 'zoom':\n if (val !== this._transformMatrixScale()) {\n this._zoomFromValue(val);\n }\n break;\n case 'options':\n this.#options = getStageOptions(this); // Utils.extend({}, DEFAULT_STAGE_OPTIONS, val || {});\n break;\n case 'disabled':\n case 'datasource':\n this._drawDebounced();\n break;\n }\n }\n disconnectedCallback() {\n const resizer = this._resize, stage = this._stage;\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener(Components.ResizeEventName, this._resizeHandler, false);\n }\n if (!Utils.isNull(stage)) {\n // zooming\n stage.removeEventListener('wheel', this._zoomHandler, false);\n // panning\n stage.removeEventListener('mousedown', this._panStartHandler, false);\n stage.removeEventListener('touchstart', this._panStartHandler);\n window.removeEventListener('mousemove', this._panHandler, false);\n window.removeEventListener('mouseup', this._panEndHandler, false);\n window.removeEventListener('touchmove', this._panHandler);\n window.removeEventListener('touchend', this._panEndHandler);\n }\n if (!Utils.isNull(this.adapter)) {\n this.adapter.dispose(this);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], Pacem2DElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Rect })\n], Pacem2DElement.prototype, \"viewbox\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: aspectRatioPropertyConverter })\n], Pacem2DElement.prototype, \"aspectRatio\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem2DElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem2DElement.prototype, \"options\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], Pacem2DElement.prototype, \"zoom\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-2d')\n], Pacem2DElement.prototype, \"_stage\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], Pacem2DElement.prototype, \"_resize\", void 0);\n__decorate([\n Debounce(true)\n], Pacem2DElement.prototype, \"_drawDebounced\", null);\nPacem2DElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME, shadow: true, template: `<${P}-resize watch-position=\"true\"></${P}-resize><div class=\"${PCSS}-2d\" part=\"container\"></div><slot></slot>` })\n], Pacem2DElement);\nexport { Pacem2DElement };\n", "/** Middle segment shared by every `<pacem-2d-*>` custom element tag name. */\nexport const TAG_MIDDLE_NAME = \"2d\";\n/** `2 * Math.PI`, a full turn in radians. */\nexport const TWO_PI = 2 * Math.PI;\n", "import { Utils, CustomUIEvent } from '@pacem/pacem-core';\nimport { Point, Matrix2D } from '@pacem/pacem-foundation';\n/** Type guard telling whether `object` implements `Drawable`. */\nexport function isDrawable(object) {\n return !Utils.isNull(object) && 'stage' in object;\n}\n/** Type guard telling whether `object` implements `UiObject`. */\nexport function isUiObject(object) {\n return /*'transformMatrix' in object &&*/ isDrawable(object);\n}\nfunction isGradient(object) {\n return 'stops' in object && Utils.isArray(object.stops);\n}\n/** Type guard telling whether `object` is a `LinearGradient`. */\nexport function isLinearGradient(object) {\n return isGradient(object) && 'start' in object && Point.isPoint(object.start)\n && 'end' in object && Point.isPoint(object.end);\n}\n/** Type guard telling whether `object` is a `RadialGradient`. */\nexport function isRadialGradient(object) {\n return isGradient(object) && 'center' in object && Point.isPoint(object.center)\n && 'radius' in object && typeof object.radius === 'number';\n}\n/** Static helpers to combine `PresentationState` instances (e.g. a shape's own state with its inherited parent state). */\nexport class PresentationState {\n /**\n * Combines two presentation states (typically an item's own state and the one inherited from its\n * ancestors), giving precedence to `lhs` whenever both define a value.\n * @param lhs Own/most specific presentation state.\n * @param rhs Inherited/fallback presentation state.\n * @param precomputedMatrix If provided, used as-is instead of multiplying `lhs`'s and `rhs`'s transform matrices.\n */\n static combine(lhs, rhs, precomputedMatrix = null) {\n return {\n opacity: (lhs.opacity ?? 1) * (rhs.opacity ?? 1),\n transformMatrix: precomputedMatrix ?? Matrix2D.multiply(rhs.transformMatrix, lhs.transformMatrix),\n dashArray: lhs.dashArray ?? rhs.dashArray,\n fill: lhs.fill ?? rhs.fill,\n lineCap: lhs.lineCap ?? rhs.lineCap,\n lineJoin: lhs.lineJoin ?? rhs.lineJoin,\n lineWidth: lhs.lineWidth ?? rhs.lineWidth,\n stroke: lhs.stroke ?? rhs.stroke\n };\n }\n}\n/** Type guard telling whether `object` implements `PresentationObject`. */\nexport function isPresentationObject(object) {\n return isUiObject(object)\n && ('fill' in object\n || 'transformMatrix' in object\n || 'stroke' in object\n || 'lineJoin' in object\n || 'dashArray' in object\n || 'lineWidth' in object\n || 'opacity' in object\n || 'lineCap' in object);\n}\n/** Type guard telling whether `object` implements `Shape`. */\nexport function isShape(object) {\n return isUiObject(object) && 'pathData' in object;\n}\n/** Type guard telling whether `object` implements `Group` and has at least one child drawable. */\nexport function isGroup(object) {\n return isUiObject(object) && 'childDrawables' in object && !Utils.isNullOrEmpty(object['childDrawables']);\n}\n/** Type guard telling whether `object` implements `Text`. */\nexport function isText(object) {\n return isUiObject(object) && 'text' in object && typeof object['text'] === 'string';\n}\n/** Type guard telling whether `object` implements `Image`. */\nexport function isImage(object) {\n return isUiObject(object) && 'src' in object && typeof object['src'] === 'string';\n}\n/**\n * Base class for the custom UI events dispatched by the 2D stage/adapters, carrying the screen transform\n * matrix in effect at dispatch time so consumers can project screen coordinates into stage coordinates.\n */\nexport class UI2DEvent extends CustomUIEvent {\n constructor(type, eventInit, originalEvent, transformMatrix) {\n super(type, eventInit, originalEvent);\n this.#transformMatrix = transformMatrix;\n }\n #transformMatrix;\n /** Gets the screen transform matrix. */\n get transformMatrix() {\n return this.#transformMatrix;\n }\n /** Projects a point (defaults to the event's screen coordinates) through the event's transform matrix. */\n project(pt = { x: this.screenX, y: this.screenY }) {\n return Matrix2D.multiply(pt, this.#transformMatrix);\n }\n}\n/** Static helper to build an empty `ShapeGeometry`. */\nexport class Shape {\n /** Returns an empty `ShapeGeometry` (no path, no vertices, zero-sized bounding rect). */\n static empty() {\n return { pathData: '', vertices: [], boundingRect: { x: 0, y: 0, width: 0, height: 0 } };\n }\n}\n/** Event dispatched throughout a `Drawable`'s drag lifecycle, carrying `DragEventArgs`. */\nexport class DragEvent extends UI2DEvent {\n}\n/** Event dispatched for pointer interactions (over/out/down/up/click) targeting a `Drawable`. */\nexport class DrawableEvent extends UI2DEvent {\n constructor(type, args, originalEvent, m) {\n super(type, { detail: args, bubbles: true, cancelable: true }, originalEvent, m);\n }\n}\n/** Event dispatched for pointer interactions (move/down/up/click) targeting a `Stage` at large (i.e. no specific hit `Drawable`). */\nexport class StageEvent extends UI2DEvent {\n constructor(type, args, originalEvent, m = args.transformMatrix) {\n super(type, { detail: args, bubbles: true, cancelable: true }, originalEvent, m);\n }\n}\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 { Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { Matrix2D } from '@pacem/pacem-foundation';\nimport { DrawableElement } from './drawable-element';\n//namespace Pacem.Components.Drawing {\nconst DEG2RAD = Math.PI / 180.0;\n/**\n * Base class for every drawable that participates in the 2D transform pipeline (rotation, scale,\n * translation) and exposes an `opacity`. Computes and caches the corresponding `transformMatrix`.\n */\nexport class UiElement extends DrawableElement {\n #transformMatrix = Matrix2D.identity;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._updateTransformMatrix();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'rotate':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n this._updateTransformMatrix();\n // flow down\n case 'opacity':\n this.stage?.draw(this);\n break;\n }\n }\n }\n _updateTransformMatrix() {\n let rotation = DEG2RAD * (this.rotate ?? 0), cos = Math.cos(rotation), sin = Math.sin(rotation), a = (this.scaleX ?? 1) * cos, b = -sin, c = sin, d = (this.scaleY ?? 1) * cos, e = this.translateX ?? 0, f = this.translateY ?? 0;\n this.#transformMatrix = { a, b, c, d, e, f };\n }\n /** @internal */\n get transformMatrix() {\n const m = this.#transformMatrix;\n return { a: m.a, b: m.b, c: m.c, d: m.d, e: m.e, f: m.f };\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"rotate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"scaleX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"scaleY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"translateX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"translateY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], UiElement.prototype, \"opacity\", void 0);\n/**\n * Base class for drawables that carry stroke/fill presentation state (color, line width, dash pattern,\n * line join/cap), on top of the transform/opacity inherited from `UiElement`.\n */\nexport class PresentationElement extends UiElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'stroke':\n case 'lineWidth':\n case 'lineJoin':\n case 'lineCap':\n case 'dashArray':\n case 'fill':\n if (!Utils.isNull(this.stage)) {\n this.stage.draw(this);\n }\n break;\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"stroke\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"fill\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => attr?.split(',').map(i => parseInt(i)).filter(i => !Number.isNaN(i)),\n convertBack: (prop) => prop?.join(',')\n }\n })\n], PresentationElement.prototype, \"dashArray\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PresentationElement.prototype, \"lineWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"lineJoin\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PresentationElement.prototype, \"lineCap\", void 0);\n/**\n * Base class for drawables whose visual is an SVG path (`pathData`) computed out of their own geometry\n * properties (e.g. center/radius, points, corners). Subclasses implement `getShapeGeometry` and this\n * class takes care of recomputing `data`/`vertices`/`boundingRect` and requesting a redraw.\n */\nexport class ShapeElement extends PresentationElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'data':\n this.stage?.draw(this);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.recomputeShape();\n }\n /** Recomputes `data`, `vertices` and `boundingRect` from `getShapeGeometry()`. */\n recomputeShape() {\n const { pathData, vertices, boundingRect } = this.getShapeGeometry();\n this.#vertices = vertices;\n this.#boundingRect = boundingRect;\n this.data = pathData;\n }\n /** @readonly Gets the SVG path data backing the shape. */\n get pathData() {\n return this.data;\n }\n #boundingRect;\n /** @readonly Gets the bounding rectangle of the shape. */\n get boundingRect() {\n return this.#boundingRect;\n }\n #vertices;\n /** @readonly Gets the vertices making up the shape. */\n get vertices() {\n return this.#vertices;\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], ShapeElement.prototype, \"data\", void 0);\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, P, Utils } from '@pacem/pacem-core';\nimport { PresentationElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { DrawableElement } from './drawable-element';\n//namespace Pacem.Components.Drawing {\n/** `<pacem-2d-group>`: a container that groups child drawables, applying its own transform/presentation state to all of them. */\nlet PacemGroupElement = class PacemGroupElement extends PresentationElement {\n validate(item) {\n return item instanceof DrawableElement && item.parent === this;\n }\n #children = [];\n /** @readonly Gets the child drawables currently in the group. */\n get childDrawables() {\n return this.#children;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'items':\n case 'datasource':\n this.#children = (val || []);\n const scene = this.stage;\n if (!Utils.isNull(scene)) {\n scene.draw(this, true);\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], PacemGroupElement.prototype, \"datasource\", void 0);\nPacemGroupElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-group' })\n], PacemGroupElement);\nexport { PacemGroupElement };\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};\nvar PacemEllipseElement_1, PacemCircleElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { Rect } from '@pacem/pacem-foundation';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\nfunction full(c, rx, ry) {\n const d = 2 * rx, cx = c.x, cy = c.y;\n return {\n pathData: `M ${cx} ${cy} m ${-rx},0 a ${rx},${ry} 0 1,1 ${d},0 a ${rx},${ry} 0 1,1 ${-d},0`,\n vertices: [],\n boundingRect: { x: cx - rx, y: cy - ry, width: 2 * rx, height: 2 * ry }\n };\n}\nfunction sect(c, rx, ry, start, end) {\n const degToRad = Math.PI / 180;\n const s = degToRad * start, e = degToRad * end;\n //\n const polar = (theta) => rx * ry / Math.sqrt(Math.pow(Math.cos(theta) * ry, 2) + Math.pow(Math.sin(theta) * rx, 2));\n const rhoStart = polar(s), rhoEnd = polar(e);\n const cartesian = (rho, theta) => {\n return { x: rho * Math.cos(theta), y: rho * Math.sin(theta) };\n };\n const cartStart = cartesian(rhoStart, s), cartEnd = cartesian(rhoEnd, e);\n const p0 = { x: c.x + cartStart.x, y: c.y + cartStart.y }, p1 = { x: c.x + cartEnd.x, y: c.y + cartEnd.y };\n let boundingRect = Rect.expand(c, p0, p1);\n if (end < start)\n end += 360;\n if (start <= 0 && end > 0 || end >= 360) {\n boundingRect = Rect.expand(boundingRect, { x: c.x + rx, y: c.y });\n }\n if (start <= 90 && end > 90 || end >= 450) {\n boundingRect = Rect.expand(boundingRect, { x: c.x, y: c.y + ry });\n }\n if (start <= 180 && end > 180 || end >= 540) {\n boundingRect = Rect.expand(boundingRect, { x: c.x - rx, y: c.y });\n }\n if (start <= 270 && end > 270 || end >= 630) {\n boundingRect = Rect.expand(boundingRect, { x: c.x, y: c.y - ry });\n }\n const flag = e - s > Math.PI ? '1' : '0';\n return {\n pathData: `M ${p0.x} ${p0.y} A ${rx},${ry} 0 ${flag},1 ${p1.x},${p1.y} L ${c.x},${c.y} Z`, vertices: [p0, p1], boundingRect\n };\n}\nfunction getShapeGeometry(c, rx, ry, start, end) {\n start ??= 0, end ??= 0;\n start %= 360;\n end %= 360;\n while (start < 0)\n start += 360;\n while (end < start)\n end += 360;\n const threesixty = (start - end).isCloseTo(0);\n return threesixty ? full(c, rx, ry) : sect(c, rx, ry, start, end);\n}\n/** `<pacem-2d-ellipse>`: renders a full ellipse, or a pie-slice sector when `start`/`end` are set. */\nlet PacemEllipseElement = PacemEllipseElement_1 = class PacemEllipseElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'center':\n case 'rx':\n case 'ry':\n case 'start':\n case 'end':\n this.recomputeShape();\n break;\n }\n }\n }\n /** Computes the SVG path data of the ellipse (or sector) out of its own `center`/`rx`/`ry`/`start`/`end`. */\n getPathData() {\n const a = this.rx, b = this.ry, c = this.center, s = this.start ?? 0, e = this.end ?? 0;\n if (!Utils.isNull(c) && !Utils.isNull(a) && !Utils.isNull(b)) {\n return PacemEllipseElement_1.getPathData(c, a, b, s, e);\n }\n return null;\n }\n getShapeGeometry() {\n const center = this.center ?? { x: 0, y: 0 };\n const a = this.rx ?? 0, b = this.ry ?? 0;\n return getShapeGeometry(center, a, b, this.start, this.end);\n }\n /**\n * Computes the SVG path data of an ellipse, or of a pie-slice sector when `start`/`end` don't describe a full turn.\n * @param c Center point.\n * @param rx Horizontal radius.\n * @param ry Vertical radius.\n * @param start Sector start angle, in degrees.\n * @param end Sector end angle, in degrees.\n */\n static getPathData(c = { x: NaN, y: NaN }, rx = NaN, ry = NaN, start, end) {\n const { pathData } = getShapeGeometry(c, rx, ry, start, end);\n return pathData;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemEllipseElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"rx\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"ry\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEllipseElement.prototype, \"end\", void 0);\nPacemEllipseElement = PacemEllipseElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-ellipse' })\n], PacemEllipseElement);\nexport { PacemEllipseElement };\n/** `<pacem-2d-circle>`: renders a full circle, or a pie-slice sector when `start`/`end` are set. */\nlet PacemCircleElement = PacemCircleElement_1 = class PacemCircleElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'center':\n case 'radius':\n case 'start':\n case 'end':\n this.recomputeShape();\n break;\n }\n }\n }\n /** Computes the SVG path data of the circle (or sector) out of its own `center`/`radius`/`start`/`end`. */\n getPathData() {\n const r = this.radius, c = this.center;\n if (!Utils.isNull(c) && !Utils.isNull(r)) {\n return PacemCircleElement_1.getPathData(c, r, this.start, this.end);\n }\n return null;\n }\n getShapeGeometry() {\n const center = this.center ?? { x: 0, y: 0 };\n const r = this.radius ?? 0;\n return getShapeGeometry(center, r, r, this.start, this.end);\n }\n /**\n * Computes the SVG path data of a circle, or of a pie-slice sector when `start`/`end` don't describe a full turn.\n * @param c Center point.\n * @param r Radius.\n * @param start Sector start angle, in degrees.\n * @param end Sector end angle, in degrees.\n */\n static getPathData(c = { x: NaN, y: NaN }, r = NaN, start, end) {\n return PacemEllipseElement.getPathData(c, r, r, start, end);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemCircleElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCircleElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCircleElement.prototype, \"start\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCircleElement.prototype, \"end\", void 0);\nPacemCircleElement = PacemCircleElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-circle' })\n], PacemCircleElement);\nexport { PacemCircleElement };\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};\nvar PacemRectElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\n/*\n r=\"4\" // every corner has a rx equalt o ry equal to 8 units\n r=\"4,8 cut\" // every corner has a rx equal to 4px and a ry equal to 8px (cut corners)\n r=\"4,8 cut 5,6 3,20% round 50%,4\" // top-left corner has a rx equal to 4px and a ry equal to 8px (cut corner), top-right corner has a rx equal to 5px and a ry equal to 6px,\n // bottom-right corner has a rx equal to 3px and a ry equal to 20% the height,\n // bottom-left corner has a rx equal to 50% the width and a ry equal to 4px.\n\n */\nfunction parseCornerRadius(radius) {\n const rx = radius[2], ry = radius[4] ?? rx, type = radius[6] === 'cut' ? CornerType.Cut : CornerType.Rounded;\n return { rx: parseCornerRadiusComponent(rx), ry: parseCornerRadiusComponent(ry), type };\n}\nfunction parseCornerRadiusComponent(radius) {\n const val = parseFloat(radius);\n return { value: val, unit: radius.endsWith('%') ? 'pct' : 'u' };\n}\nfunction stringifyCornerRadiusComponent(radius) {\n return `${radius.value}${radius.unit === 'pct' ? '%' : ''}`;\n}\nconst CORNERS_PATTERN = /(([\\d\\.]+%?)(\\s*,?\\s*([\\d\\.]+%?))?(\\s+(cut|round))?)/g;\nfunction parseCornerRadii(radii) {\n let numbers;\n const acc = [];\n while (numbers = CORNERS_PATTERN.exec(radii)) {\n acc.push(numbers);\n }\n switch (acc.length) {\n case 1:\n const single = parseCornerRadius(acc[0]);\n return [single, single, single, single];\n case 4:\n const topLeft = parseCornerRadius(acc[0]);\n const topRight = parseCornerRadius(acc[1]);\n const bottomRight = parseCornerRadius(acc[2]);\n const bottomLeft = parseCornerRadius(acc[3]);\n return [topLeft, topRight, bottomRight, bottomLeft];\n default:\n return null;\n }\n}\nfunction stringifyCornerRadii(radii) {\n const topLeft = radii[0], topRight = radii[1], bottomRight = radii[2], bottomLeft = radii[3];\n const tlX = stringifyCornerRadiusComponent(topLeft.rx), tlY = stringifyCornerRadiusComponent(topLeft.ry);\n const trX = stringifyCornerRadiusComponent(topRight.rx), trY = stringifyCornerRadiusComponent(topRight.ry);\n const brX = stringifyCornerRadiusComponent(bottomRight.rx), brY = stringifyCornerRadiusComponent(bottomRight.ry);\n const blX = stringifyCornerRadiusComponent(bottomLeft.rx), blY = stringifyCornerRadiusComponent(bottomLeft.ry);\n return `${tlX},${tlY} ${trX},${trY} ${brX},${brY} ${blX},${blY}`;\n}\n/** How a `PacemRectElement` corner is rendered: smoothly `Rounded` or straight-line `Cut` (chamfered). */\nexport var CornerType;\n(function (CornerType) {\n CornerType[\"Rounded\"] = \"rounded\";\n CornerType[\"Cut\"] = \"cut\";\n})(CornerType || (CornerType = {}));\n/** `<pacem-2d-rect>`: renders a rectangle, optionally with independently rounded or cut corners. */\nlet PacemRectElement = PacemRectElement_1 = class PacemRectElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && (name === 'x' || name === 'y' || name === 'w' || name === 'h' || name === 'r' || name === 'cornerType')) {\n this.recomputeShape();\n }\n }\n /** Computes the SVG path data of the rectangle out of its own `x`/`y`/`w`/`h`/`r`/`cornerType`. */\n getPathData() {\n const x = this.x, y = this.y, w = this.w, h = this.h;\n let r = this.r ?? { rx: { value: 0 }, ry: { value: 0 }, type: CornerType.Rounded };\n if (!Utils.isArray(r)) {\n r = [r, r, r, r];\n }\n // forgiving behavior\n r = r.map(i => { return typeof i === 'number' ? { rx: { value: i }, ry: { value: i }, type: this.cornerType } : i; });\n if (!Utils.isNull(x) && !Utils.isNull(y) && !Utils.isNull(w) && !Utils.isNull(h)) {\n return PacemRectElement_1.getPathData(x, y, w, h, r);\n }\n return null;\n }\n getShapeGeometry() {\n const x = this.x, y = this.y, x1 = x + this.w, y1 = y + this.h;\n return {\n pathData: this.getPathData(), vertices: [{ x, y }, { x: x1, y }, { x: x1, y: y1 }, { x, y: y1 }], boundingRect: { x, y, width: this.w, height: this.h }\n };\n }\n static getPathData(x = NaN, y = NaN, w = NaN, h = NaN, r = null) {\n if (!r) {\n return `M ${x} ${y} h ${w} v ${h} h ${-w} z`;\n }\n if (!Utils.isArray(r)) {\n r = [r, r, r, r];\n }\n const tl = r[0], tr = r[1], br = r[2], bl = r[3];\n const vx = (rx) => rx.unit === 'pct' ? rx.value * .01 * w : rx.value;\n const vy = (ry) => ry.unit === 'pct' ? ry.value * .01 * h : ry.value;\n const tlX = vx(tl.rx), tlY = vy(tl.ry);\n const trX = vx(tr.rx), trY = vy(tr.ry);\n const brX = vx(br.rx), brY = vy(br.ry);\n const blX = vx(bl.rx), blY = vy(bl.ry);\n let retval = `M ${x},${y + tlY}`;\n // top-left\n switch (tl.type) {\n case 'cut':\n retval += ` l ${tlX},${-tlY}`;\n break;\n default:\n retval += ` a ${tlX} ${tlY} 0 0 1 ${tlX} ${-tlY}`;\n break;\n }\n retval += ` h ${w - tlX - trX}`;\n // top-right\n switch (tr.type) {\n case 'cut':\n retval += ` l ${trX},${trY}`;\n break;\n default:\n retval += ` a ${trX} ${trY} 0 0 1 ${trX} ${trY}`;\n break;\n }\n retval += ` v ${h - trY - brY}`;\n // bottom-right\n switch (br.type) {\n case 'cut':\n retval += ` l ${-brX},${brY}`;\n break;\n default:\n retval += ` a ${brX} ${brY} 0 0 1 ${-brX} ${brY}`;\n break;\n }\n retval += ` h ${-(w - brX - blX)}`;\n // bottom-left\n switch (bl.type) {\n case 'cut':\n retval += ` l ${-blX},${-blY}`;\n break;\n default:\n retval += ` a ${blX} ${blY} 0 0 1 ${-blX} ${-blY}`;\n break;\n }\n return retval + ' z';\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"x\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"y\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"w\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRectElement.prototype, \"h\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: attr => parseCornerRadii(attr),\n convertBack: (radii) => stringifyCornerRadii(radii)\n }\n })\n], PacemRectElement.prototype, \"r\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRectElement.prototype, \"cornerType\", void 0);\nPacemRectElement = PacemRectElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-rect' })\n], PacemRectElement);\nexport { PacemRectElement };\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};\nvar PacemLineElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { Shape } from './drawing';\n//namespace Pacem.Components.Drawing {\n/** `<pacem-2d-line>`: renders a straight segment between two points. */\nlet PacemLineElement = PacemLineElement_1 = class PacemLineElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'from':\n case 'to':\n this.recomputeShape();\n break;\n }\n }\n }\n getShapeGeometry() {\n const from = this.from, to = this.to;\n if (Utils.isNull(from) || Utils.isNull(to)) {\n return Shape.empty();\n }\n const x0 = from.x, y0 = from.y, x1 = to.x, y1 = to.y;\n const boundingRect = { x: Math.min(x0, x1), y: Math.min(y0, y1), width: Math.abs(x0 - x1), height: Math.abs(y0 - y1) };\n return { pathData: this.getPathData(), vertices: [from, to], boundingRect };\n }\n /** Computes the SVG path data of the line out of its own `from`/`to` points. */\n getPathData() {\n const from = this.from, to = this.to;\n if (!Utils.isNull(from) && !Utils.isNull(to)) {\n return PacemLineElement_1.getPathData(from, to);\n }\n return null;\n }\n /** Computes the SVG path data of a straight segment between `from` and `to`. */\n static getPathData(from = { x: NaN, y: NaN }, to = { x: NaN, y: NaN }) {\n const x0 = from.x, y0 = from.y, x1 = to.x, y1 = to.y;\n return `M ${x0} ${y0} L ${x1} ${y1}`;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemLineElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemLineElement.prototype, \"to\", void 0);\nPacemLineElement = PacemLineElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-line' })\n], PacemLineElement);\nexport { PacemLineElement };\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 } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\n/** `<pacem-2d-path>`: renders an arbitrary SVG path, provided verbatim through the `d` property. */\nlet PacemPathElement = class PacemPathElement extends ShapeElement {\n constructor() {\n super(...arguments);\n /** Returns the raw path data, i.e. `d`. */\n this.getPathData = () => this.d;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'd' && !first) {\n this.recomputeShape();\n }\n }\n getShapeGeometry() {\n return { pathData: this.getPathData(), /* TODO: parse d */ boundingRect: null, vertices: [] };\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemPathElement.prototype, \"d\", void 0);\nPacemPathElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-path' })\n], PacemPathElement);\nexport { PacemPathElement };\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};\nvar PacemPolygonElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { Shape } from './drawing';\n//namespace Pacem.Components.Drawing {\n/** `<pacem-2d-polygon>`: renders a regular polygon (or, with `starIndent` set, a star) centered on `center`. */\nlet PacemPolygonElement = PacemPolygonElement_1 = class PacemPolygonElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'radius':\n case 'starIndent':\n case 'sides':\n this.recomputeShape();\n break;\n }\n }\n }\n /** Computes the SVG path data of the polygon out of its own `center`, `radius`, `sides` and `starIndent`. */\n getPathData() {\n const sides = this.sides, radius = this.radius, center = this.center;\n if (!Utils.isNull(sides) && !Utils.isNull(radius)) {\n return PacemPolygonElement_1.getPathData(center, radius, sides, this.starIndent);\n }\n return null;\n }\n getShapeGeometry() {\n const c = this.center ?? { x: 0, y: 0 }, r = this.radius ?? 0, sides = this.sides ?? 3, si = this.starIndent;\n if (sides < 3) {\n return Shape.empty();\n }\n return PacemPolygonElement_1.getShapeGeometry(c, r, sides, si);\n }\n /**\n * Computes the geometry (path data, vertices, bounding rect) of a regular polygon or star.\n * @param center Center point.\n * @param radius Circumradius.\n * @param sides Number of sides (or points, for a star).\n * @param starIndent Star indentation factor (0 = regular polygon).\n */\n static getShapeGeometry(center, radius, sides, starIndent = .0) {\n const p0 = { x: center.x, y: center.y - radius };\n let retval = `M ${p0.x} ${(p0.y)}`;\n const vertices = [p0];\n const theta = 2 * Math.PI / sides, theta2 = .5 * theta, isStar = starIndent > 0, apothem = radius * Math.cos(theta2);\n for (let j = 1; j < sides; j++) {\n const angle = j * theta, x = center.x + Math.sin(angle) * radius, y = center.y - Math.cos(angle) * radius;\n if (isStar) {\n const innerRadius = apothem * (1.0 - starIndent);\n const angle2 = angle - theta2, x1 = center.x + Math.sin(angle2) * innerRadius, y1 = center.y - Math.cos(angle2) * innerRadius;\n retval += ` L ${x1} ${y1} L ${x} ${y}`;\n vertices.push({ x: x1, y: y1 });\n }\n else {\n retval += ` L ${x} ${y}`;\n }\n vertices.push({ x, y });\n }\n if (isStar) {\n const innerRadius = apothem * (1.0 - starIndent);\n const angle2 = 2 * Math.PI - theta2, x1 = center.x + Math.sin(angle2) * innerRadius, y1 = center.y - Math.cos(angle2) * innerRadius;\n retval += ` L ${x1} ${y1}`;\n vertices.push({ x: x1, y: y1 });\n }\n vertices.push(p0);\n const width = radius * 2;\n return {\n pathData: retval + ' Z', vertices, boundingRect: { x: p0.x - radius, y: p0.y, width, height: width }\n };\n }\n /** Computes the SVG path data of a regular polygon or star. See `getShapeGeometry` for the parameters. */\n static getPathData(center, radius, sides, starIndent = .0) {\n const { pathData } = PacemPolygonElement_1.getShapeGeometry(center, radius, sides, starIndent);\n return pathData;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPolygonElement.prototype, \"sides\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPolygonElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemPolygonElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPolygonElement.prototype, \"starIndent\", void 0);\nPacemPolygonElement = PacemPolygonElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-polygon' })\n], PacemPolygonElement);\nexport { PacemPolygonElement };\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};\nvar PacemPolylineElement_1;\nimport { CustomElement, Watch, PropertyConverters, P, Utils } from '@pacem/pacem-core';\nimport { parseAsNumericalArray } from '@pacem/pacem-foundation';\nimport { ShapeElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\nimport { Shape } from './drawing';\n//namespace Pacem.Components.Drawing {\n/** Converts the `points` attribute either from a flat `x1,y1,x2,y2,...` numeric list or from JSON. */\nconst PointArrayOrJsonConverter = {\n convert: (attr) => {\n const arr = parseAsNumericalArray(attr);\n if (arr.length % 2 === 0) {\n const retval = [];\n for (let j = 0; j < arr.length; j += 2) {\n retval.push({ x: arr[j], y: arr[j + 1] });\n }\n return retval;\n }\n return JSON.parse(attr);\n },\n convertBack: (prop) => JSON.stringify(prop)\n};\n/** `<pacem-2d-polyline>`: renders a series of connected segments through `points`, optionally `closed` into a polygon. */\nlet PacemPolylineElement = PacemPolylineElement_1 = class PacemPolylineElement extends ShapeElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'points':\n case 'closed':\n this.recomputeShape();\n break;\n }\n }\n }\n /**\n * Computes the geometry (path data, vertices, bounding rect) of a polyline.\n * @param points Vertices, in order.\n * @param closed Whether the polyline is closed back onto its first point.\n */\n static getShapeGeometry(points, closed) {\n if (Utils.isNullOrEmpty(points)) {\n return Shape.empty();\n }\n let d = '';\n let xmin = Number.MAX_VALUE, ymin = Number.MAX_VALUE, xmax = Number.MIN_VALUE, ymax = Number.MIN_VALUE;\n for (let j = 0; j < points.length; j++) {\n const { x, y } = points[j];\n d += `${(j === 0 ? 'M' : 'L')} ${x} ${y} `;\n xmin = Math.min(xmin, x);\n xmax = Math.max(xmax, x);\n ymin = Math.min(ymin, y);\n ymax = Math.max(ymax, y);\n }\n const boundingRect = { x: xmin, y: ymin, width: xmax - xmin, height: ymax - ymin };\n if (closed) {\n d += 'Z';\n }\n return { pathData: d, vertices: points, boundingRect };\n }\n getShapeGeometry() {\n return PacemPolylineElement_1.getShapeGeometry(this.points, this.closed);\n }\n /** Computes the SVG path data of the polyline out of its own `points`/`closed`. */\n getPathData() {\n const { pathData } = this.getShapeGeometry();\n return pathData;\n }\n /** Computes the SVG path data of a polyline. See `getShapeGeometry` for the parameters. */\n static getPathData(points, closed) {\n const { pathData } = PacemPolylineElement_1.getShapeGeometry(points, closed);\n return pathData;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PointArrayOrJsonConverter })\n], PacemPolylineElement.prototype, \"points\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemPolylineElement.prototype, \"closed\", void 0);\nPacemPolylineElement = PacemPolylineElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-polyline' })\n], PacemPolylineElement);\nexport { PacemPolylineElement };\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 } from '@pacem/pacem-core';\nimport { UiElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\n/** `<pacem-2d-image>`: renders a raster image at a given position and size within the stage. */\nlet PacemImageElement = class PacemImageElement extends UiElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n case 'x':\n case 'y':\n case 'width':\n case 'height':\n this.stage?.draw(this);\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"x\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"y\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageElement.prototype, \"height\", void 0);\nPacemImageElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-image' })\n], PacemImageElement);\nexport { PacemImageElement };\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 } from '@pacem/pacem-core';\nimport { UiElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing {\n/** `<pacem-2d-text>`: renders a text label anchored at a given point. */\nlet PacemTextElement = class PacemTextElement extends UiElement {\n propertyChangedCallback(name, old, val, first) {\n if (!first) {\n switch (name) {\n case 'text':\n case 'color':\n case 'fontFamily':\n case 'fontSize':\n case 'fontWeight':\n case 'fontStyle':\n case 'anchor':\n if (!Utils.isNull(this.stage)) {\n this.stage.draw(this);\n }\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"text\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"fontFamily\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextElement.prototype, \"fontSize\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"fontWeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"fontStyle\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemTextElement.prototype, \"anchor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemTextElement.prototype, \"textAnchor\", void 0);\nPacemTextElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-text' })\n], PacemTextElement);\nexport { PacemTextElement };\n", "import { Utils, UI } from '@pacem/pacem-core';\nimport { Rect } from '@pacem/pacem-foundation';\nimport { StageEvent, DrawableEvent, DragEvent } from '../drawing';\n//namespace Pacem.Components.Drawing {\n/** Shared static helpers used by the 2D rendering adapters (SVG/Canvas) to dispatch UI events and validate viewboxes. */\nexport class AdapterUtils {\n /**\n * Dispatches a `StageEvent` (prefixed with `'stage'`) on the given stage, when it is an `EventTarget`.\n * @param stage The target stage.\n * @param type Short event type name.\n * @param evt The original event.\n */\n static stageDispatch(stage, type, evt) {\n if (stage instanceof EventTarget) {\n stage.dispatchEvent(new StageEvent('stage' + type, stage, evt, stage.transformMatrix));\n }\n }\n /** Type guard telling whether `viewbox` is a well-formed, finite `Rect` usable as a stage viewbox. */\n static isValidViewbox(viewbox) {\n return !Utils.isNullOrEmpty(viewbox) && Rect.isRect(viewbox) && Number.isFinite(viewbox.x) // isFinite includes NaN check\n && Number.isFinite(viewbox.y) && Number.isFinite(viewbox.width) && Number.isFinite(viewbox.height);\n }\n static itemDispatch(target, type, offset) {\n if (Utils.isNull(target?.stage)) {\n return false;\n }\n var dragArgs, originalEvent, evtType;\n if (offset instanceof Event) {\n originalEvent = offset;\n }\n else {\n dragArgs = { item: target, offset: offset };\n }\n if (typeof type === 'string') {\n evtType = type;\n }\n else {\n evtType = type.type;\n originalEvent = type.originalEvent;\n }\n const m = target.stage.transformMatrix;\n const evt = () => offset instanceof Event\n ? new DrawableEvent(evtType, target, originalEvent, m)\n : new DragEvent(evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);\n const itemevt = offset instanceof Event\n ? new DrawableEvent('item' + evtType, target, originalEvent, m)\n : new DragEvent('item' + evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);\n var prevent = false;\n if (target instanceof EventTarget) {\n const evnt = evt();\n target.dispatchEvent(evnt);\n prevent = evnt.defaultPrevented;\n }\n target.stage.dispatchEvent(itemevt);\n // was the event (in one of its forms) rejected?\n return prevent || itemevt.defaultPrevented;\n }\n}\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, P, CustomElementUtils, Utils, Logging, CustomEventUtils, UI, avoidHandler } from '@pacem/pacem-core';\nimport { Matrix2D, Rect } from '@pacem/pacem-foundation';\nimport { UiElement, ShapeElement } from '../types';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { Pacem2DAdapterElement } from '../adapter';\nimport { getStageOptions } from '../stage';\nimport { AdapterUtils } from './utils';\nimport { PacemGroupElement } from '../group';\nimport { PacemImageElement } from '../image';\nimport { PacemTextElement } from '../text';\nimport { PresentationState, isDrawable, isUiObject, isPresentationObject, isShape, isText, isImage, isGroup, isLinearGradient, isRadialGradient, DrawableEvent } from '../drawing';\n//namespace Pacem.Components.Drawing {\nconst CANVAS_SCENE_VAR = 'pacem:2d-canvas-scene';\nconst PARENT_MATRIX_VAR = 'pacem:2d-parent-matrix';\nconst WORLD_MATRIX_VAR = 'pacem:2d-world-matrix';\nconst SETVAR = CustomElementUtils.setAttachedPropertyValue, GETVAR = CustomElementUtils.getAttachedPropertyValue;\nfunction isNone(fillOrStroke) {\n return fillOrStroke === 'none' || Utils.isNullOrEmpty(fillOrStroke);\n}\nfunction fallback(v, f) {\n return Utils.isNull(v) ? f : v;\n}\n/**\n * `<pacem-2d-canvas-adapter>`: renders a `Pacem2DElement` stage onto an `HTMLCanvasElement`, redrawing the\n * whole scene graph on every frame and performing manual (path-based) pointer hit-testing.\n *\n * @deprecated Implementation postponed. Focus on SVG adapter.\n */\nlet PacemCanvasAdapterElement = class PacemCanvasAdapterElement extends Pacem2DAdapterElement {\n constructor() {\n super(...arguments);\n this._pointer = {\n page: { x: Number.NaN, y: Number.NaN }, screen: { x: Number.NaN, y: Number.NaN }, client: { x: Number.NaN, y: Number.NaN }\n };\n this._dragInitHandler = (evt) => {\n const hitTarget = this._hitTarget;\n if (Utils.isNull(hitTarget) || !isUiObject(hitTarget) || !hitTarget.draggable) {\n evt.preventDefault();\n return;\n }\n const args = evt.detail, drawable = hitTarget, initialMatrix = hitTarget.transformMatrix ?? Matrix2D.identity, parentMatrix = GETVAR(hitTarget, PARENT_MATRIX_VAR, Matrix2D.identity);\n args.data = {\n item: drawable,\n initialTransformMatrix: initialMatrix,\n parentMatrix\n };\n const reject = AdapterUtils.itemDispatch(drawable, evt, { x: 0, y: 0 });\n if (reject) {\n // reject dragging\n evt.preventDefault();\n }\n };\n this._draggingHandler = (evt) => {\n avoidHandler(evt);\n this._dragging = true;\n const args = evt.detail;\n const data = args.data;\n const screenOffset = { x: args.currentPosition.x - args.origin.x, y: args.currentPosition.y - args.origin.y };\n const offset = {\n x: screenOffset.x * data.parentMatrix.a + data.initialTransformMatrix.e,\n y: screenOffset.y * data.parentMatrix.d + data.initialTransformMatrix.f\n };\n //console.log(`current pos: ${args.currentPosition.x},${args.currentPosition.y}`);\n //console.log(`origin pos: ${args.origin.x},${args.origin.y}`);\n //console.log(`screen offset: ${screenOffset.x},${screenOffset.y}`);\n //console.log(`offset: ${offset.x},${offset.y}`);\n //console.log(data.item.transformMatrix);\n //console.log(GETVAR(data.item, PARENT_MATRIX_VAR));\n //console.log(GETVAR(data.item, WORLD_MATRIX_VAR));\n //console.log(data.initialTransformMatrix);\n const stageTransformMatrix = data.item.stage.transformMatrix;\n const rejected = AdapterUtils.itemDispatch(data.item, evt, { x: screenOffset.x * stageTransformMatrix.a + stageTransformMatrix.e, y: screenOffset.y * stageTransformMatrix.d + stageTransformMatrix.f });\n if (!rejected) {\n if (data.item instanceof UiElement) {\n data.item.translateX = offset.x;\n data.item.translateY = offset.y;\n }\n else {\n const init = data.initialTransformMatrix, actual = { a: init.a, b: init.b, c: init.c, d: init.d, e: offset.x, f: offset.y };\n Utils.extend(data.item, { transformMatrix: actual });\n }\n // console.log(data.item.transformMatrix);\n }\n };\n this._dragEndHandler = (evt) => {\n this._dragging = false;\n const args = evt.detail, data = args.data, transform = data.item.transformMatrix;\n AdapterUtils.itemDispatch(data.item, evt, { x: transform.e, y: transform.f });\n };\n // #endregion\n this._mouseleaveHandler = (evt) => {\n if (this._dragging) {\n return;\n }\n const hitTarget = this._hitTarget;\n if (Utils.isNull(hitTarget)) {\n return;\n }\n this._scopeEvent = evt;\n const nap = { x: Number.NaN, y: Number.NaN };\n this._pointer = { page: nap, screen: nap, client: nap };\n const canvas = evt.srcElement;\n const stage = GETVAR(canvas, CANVAS_SCENE_VAR);\n this._requestDraw(stage);\n };\n this._mousemoveHandler = (evt) => {\n this._scopeEvent = evt;\n this._pointer = CustomEventUtils.getEventCoordinates(evt);\n const canvas = evt.srcElement;\n const stage = GETVAR(canvas, CANVAS_SCENE_VAR);\n this._requestDraw(stage);\n if (!this._dragging) {\n if (!Utils.isNull(this._hitTarget)) {\n AdapterUtils.stageDispatch(stage, 'move', evt);\n }\n }\n };\n this._mouseDownUpHandler = (evt) => {\n this._scopeEvent = evt;\n this._pointer = CustomEventUtils.getEventCoordinates(evt);\n const canvas = evt.target;\n if (canvas instanceof HTMLCanvasElement) {\n const stage = GETVAR(canvas, CANVAS_SCENE_VAR), hitTarget = this._hitTarget;\n const type = evt.type.replace(/^(mouse|touch)/, ''), fineType = type === 'end' ? 'click' : type;\n const opts = getStageOptions(stage);\n if (CustomEventUtils.matchModifiers(evt, opts.clickModifiers)) {\n if (!Utils.isNull(hitTarget) && hitTarget.stage === stage) {\n AdapterUtils.itemDispatch(hitTarget, fineType, evt);\n }\n else {\n AdapterUtils.stageDispatch(stage, fineType, evt);\n }\n }\n }\n };\n this._scenes = new WeakMap();\n this._handles = new WeakMap();\n }\n snapshot(stage, backgroundColor, type, quality) {\n const scenes = this._scenes;\n if (scenes.has(stage)) {\n const ctx2d = scenes.get(stage).context, srcCanvas = ctx2d.canvas;\n return this.snapshotElement(srcCanvas, backgroundColor, type, quality);\n }\n else {\n return Promise.resolve(null);\n }\n }\n getCanvas(stage) {\n const scenes = this._scenes;\n if (scenes.has(stage)) {\n const ctx2d = scenes.get(stage).context;\n return ctx2d.canvas;\n }\n else {\n return null;\n }\n }\n _getScreenInverseMatrix(m, offset) {\n return Matrix2D.invert({ a: m.a, b: m.b, c: m.c, d: m.d, e: m.e + offset.x, f: m.f + offset.y });\n }\n getTransformMatrix(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n return scenes.get(scene).screenInverseMatrix;\n }\n return Matrix2D.identity;\n }\n #dragger;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dragDrop = this.#dragger = document.createElement(P + '-drag-drop');\n dragDrop.mode = UI.DragDataMode.Copy;\n dragDrop.dropBehavior = UI.DropBehavior.None;\n dragDrop.spillBehavior = UI.DropTargetMissedBehavior.None;\n const floater = document.createElement('div');\n floater.hidden = true;\n dragDrop.floater = floater;\n // append\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(dragDrop);\n dragDrop.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n }\n disconnectedCallback() {\n const dragger = this.#dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.remove();\n }\n super.disconnectedCallback();\n }\n invalidateSize(scene, size) {\n const scenes = this._scenes;\n if (!Utils.isNull(scene) && !Utils.isNullOrEmpty(size)) {\n if (scenes.has(scene)) {\n const tuple = scenes.get(scene), ctx = tuple.context;\n ctx.canvas.width = size.width;\n ctx.canvas.height = size.height;\n const offset = tuple.offset = Utils.offsetRect(ctx.canvas);\n // transform matrix\n const stage = { x: 0, y: 0, width: size.width, height: size.height }, aspectRatio = scene.aspectRatio, viewbox = scene.viewbox;\n if (AdapterUtils.isValidViewbox(viewbox)) {\n // defaults to the equivalent of SVG's xMidYMid meet\n let mode = 'contain', align = 'center', valign = 'middle';\n if (typeof aspectRatio === 'object') {\n mode = aspectRatio.slice ? 'cover' : 'contain';\n switch (aspectRatio.x) {\n case 'min':\n align = 'left';\n break;\n case 'max':\n align = 'right';\n break;\n }\n switch (aspectRatio.y) {\n case 'min':\n valign = 'top';\n break;\n case 'max':\n valign = 'bottom';\n break;\n }\n }\n ;\n // mimic svg viewbox\n const mscale = Rect.findTransform({ x: 0, y: 0, width: viewbox.width, height: viewbox.height }, stage, mode, align, valign);\n const m = Matrix2D.translate(mscale, { x: -mscale.a * viewbox.x, y: -mscale.a * viewbox.y });\n tuple.transformMatrix = m;\n tuple.screenInverseMatrix = this._getScreenInverseMatrix(m, offset);\n }\n else {\n tuple.transformMatrix = Matrix2D.identity;\n }\n }\n }\n this._requestDraw(scene);\n }\n getHitTarget(stage) {\n const target = this._hitTarget;\n if (!Utils.isNull(target) && target.stage === stage) {\n return target;\n }\n return null;\n }\n initialize(scene) {\n if (Utils.isNull(scene)) {\n throw 'Provided scene is null or undefined.';\n }\n const scenes = this._scenes;\n const dragger = this.#dragger;\n // already in the store?\n if (scenes.has(scene)) {\n const canvas = scenes.get(scene).context.canvas;\n if (!Utils.isNull(dragger)) {\n dragger.register(canvas);\n }\n return canvas;\n }\n const stage = scene.stage;\n // empty stage DOM\n stage.innerHTML = '';\n const canvas = document.createElement('canvas');\n canvas.setAttribute('part', 'stage');\n SETVAR(canvas, CANVAS_SCENE_VAR, scene);\n const context = canvas.getContext('2d');\n canvas.addEventListener('mousemove', this._mousemoveHandler, false);\n canvas.addEventListener('mouseleave', this._mouseleaveHandler, false);\n canvas.addEventListener('touchstart', this._mouseDownUpHandler, { passive: true });\n canvas.addEventListener('touchmove', this._mouseDownUpHandler, { passive: true });\n canvas.addEventListener('touchend', this._mouseDownUpHandler, { passive: true });\n canvas.addEventListener('click', this._mouseDownUpHandler, false);\n canvas.addEventListener('mousedown', this._mouseDownUpHandler, false);\n canvas.addEventListener('mouseup', this._mouseDownUpHandler, false);\n stage.appendChild(canvas);\n scenes.set(scene, { context, transformMatrix: Matrix2D.identity, offset: Utils.offsetRect(canvas), screenInverseMatrix: Matrix2D.identity });\n if (!Utils.isNull(dragger)) {\n dragger.register(canvas);\n }\n return canvas;\n }\n dispose(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n var tuple = scenes.get(scene), context = tuple.context, canvas = context.canvas;\n const dragger = this.#dragger;\n if (!Utils.isNull(dragger)) {\n dragger.unregister(canvas);\n }\n canvas.removeEventListener('click', this._mouseDownUpHandler, false);\n canvas.removeEventListener('touchend', this._mouseDownUpHandler, false);\n canvas.removeEventListener('mousedown', this._mouseDownUpHandler, false);\n canvas.removeEventListener('mouseup', this._mouseDownUpHandler, false);\n // canvas.removeEventListener('touchmove', this._mouseDownUpHandler);\n canvas.removeEventListener('touchstart', this._mouseDownUpHandler);\n canvas.removeEventListener('mouseleave', this._mouseleaveHandler, false);\n canvas.removeEventListener('mousemove', this._mousemoveHandler, false);\n // remove\n canvas.remove();\n scenes.delete(scene);\n }\n }\n _requestDraw(scene) {\n const handles = this._handles;\n if (handles.has(scene)) {\n cancelAnimationFrame(handles.get(scene));\n }\n const throttle = () => {\n this.draw(scene);\n return requestAnimationFrame(() => { });\n };\n handles.set(scene, throttle());\n }\n #canvasCssStyle;\n draw(scene) {\n const scenes = this._scenes, handles = this._handles;\n if (!Utils.isNull(scene)) {\n if (scene.adapter !== this) {\n // not a pertinent stage anymore\n if (scenes.has(scene)) {\n scenes.delete(scene);\n handles.get(scene);\n }\n return;\n }\n if (!scenes.has(scene)) {\n // forgiving behavior (call initialize() if it's the case)\n this.initialize(scene);\n return;\n }\n if (handles.has(scene)) {\n // already in the drawing loop, reset\n cancelAnimationFrame(handles.get(scene));\n }\n const formerHitTarget = this._hitTarget;\n const items = scene.datasource || [];\n // reset hit target\n this._hitTarget = null;\n // clear stage\n const tuple = scenes.get(scene), context = tuple.context, canvas = context.canvas;\n this.#canvasCssStyle = getComputedStyle(canvas);\n context.resetTransform();\n context.clearRect(0, 0, canvas.width, canvas.height);\n // viewbox\n const m = tuple.transformMatrix;\n context.setTransform(m);\n // hit test\n const pointer = this._pointer, offset = tuple.offset, point = Number.isNaN(pointer.page.x) || Number.isNaN(pointer.page.y) ? null : { x: pointer.page.x - offset.x, y: pointer.page.y - offset.y };\n // draw recursively\n for (let drawable of items) {\n this._draw(scene, context, drawable, { transformMatrix: m }, point);\n }\n // check hit target\n const currentHitTarget = this._hitTarget;\n if (currentHitTarget != formerHitTarget) {\n if (!Utils.isNull(formerHitTarget)) {\n if (formerHitTarget instanceof Element) {\n formerHitTarget.dispatchEvent(new DrawableEvent('out', formerHitTarget, this._scopeEvent, m));\n }\n scene.dispatchEvent(new DrawableEvent('itemout', formerHitTarget, this._scopeEvent, m));\n }\n if (!Utils.isNull(currentHitTarget)) {\n if (currentHitTarget instanceof Element) {\n currentHitTarget.dispatchEvent(new DrawableEvent('over', currentHitTarget, this._scopeEvent, m));\n }\n scene.dispatchEvent(new DrawableEvent('itemover', currentHitTarget, this._scopeEvent, m));\n }\n }\n // do not loop\n // this._requestDraw(scene);\n }\n }\n _draw(scene, ctx, item, state, point) {\n item.stage ??= scene;\n if (isDrawable(item)) {\n if (item.hide) {\n return;\n }\n }\n // store parent matrix value for dragging purposes\n if (isUiObject(item) && item.draggable && !item.hide && !item.inert) {\n SETVAR(item, PARENT_MATRIX_VAR, ctx.getTransform().inverse());\n }\n let t;\n if (isUiObject(item)) {\n t = item.transformMatrix;\n if (!Utils.isNull(t) && !Matrix2D.isIdentity(t)) {\n ctx.transform(t.a, t.b, t.c, t.d, t.e, t.f);\n }\n }\n let contextPresentationState = state;\n if (isPresentationObject(item)) {\n //const stateWithWorldTransformMatrix = Utils.extend({}, state, { transformMatrix: ctx.getTransform() });\n contextPresentationState = PresentationState.combine(item, state, ctx.getTransform());\n // set presentation state\n this._setPresentationState(ctx, contextPresentationState);\n }\n if (isShape(item) || item instanceof ShapeElement) {\n this._drawShape(ctx, item, point);\n }\n else if (isText(item) || item instanceof PacemTextElement) {\n this._drawText(ctx, item, point);\n }\n else if (isImage(item) || item instanceof PacemImageElement) {\n this._drawImage(ctx, item, point);\n }\n else if (isGroup(item) || item instanceof PacemGroupElement) {\n for (let child of item.childDrawables || []) {\n this._draw(scene, ctx, child, contextPresentationState, point);\n }\n }\n // store global matrix value for debugging purposes\n if (isUiObject(item) && item.draggable && !item.hide && !item.inert) {\n SETVAR(item, WORLD_MATRIX_VAR, ctx.getTransform().inverse());\n }\n // reset presentation state\n this._setPresentationState(ctx, state);\n }\n _setPresentationState(ctx, item) {\n ctx.setTransform(item.transformMatrix);\n if (!Utils.isNullOrEmpty(item.stroke) && !isNone(item.stroke)) {\n ctx.strokeStyle = item.stroke;\n }\n else {\n ctx.strokeStyle = 'transparent';\n }\n if (!Utils.isNullOrEmpty(item.lineWidth)) {\n ctx.lineWidth = item.lineWidth;\n }\n else {\n ctx.lineWidth = 0;\n }\n if (!Utils.isNullOrEmpty(item.dashArray)) {\n ctx.setLineDash(item.dashArray);\n }\n else {\n ctx.setLineDash([]);\n }\n if (!Utils.isNullOrEmpty(item.lineCap)) {\n ctx.lineCap = item.lineCap;\n }\n else {\n ctx.lineCap = 'butt';\n }\n if (!Utils.isNullOrEmpty(item.lineJoin)) {\n ctx.lineJoin = item.lineJoin;\n }\n else {\n ctx.lineJoin = 'miter';\n }\n if (typeof item.fill === 'object' && !Utils.isNullOrEmpty(item.fill)) {\n const { stops } = item.fill;\n let gradient;\n if (isLinearGradient(item.fill)) {\n // linear gradient\n const { start, end } = item.fill;\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n }\n else if (isRadialGradient(item.fill)) {\n // radial gradient\n const { center, radius } = item.fill;\n gradient = ctx.createRadialGradient(center.x, center.y, radius, center.x, center.y, radius);\n }\n else {\n throw new Error('Unmanaged gradient type.');\n }\n for (let stop of stops) {\n gradient.addColorStop(stop.offset, stop.color);\n }\n ctx.fillStyle = gradient;\n }\n else if (!Utils.isNullOrEmpty(item.fill) && typeof item.fill === 'string' && !isNone(item.fill)) {\n ctx.fillStyle = item.fill;\n }\n else {\n ctx.fillStyle = 'transparent';\n }\n if (!Utils.isNullOrEmpty(item.opacity)) {\n ctx.globalAlpha = item.opacity;\n }\n else {\n ctx.globalAlpha = 1.0;\n }\n }\n _drawImage(ctx, item, point) {\n const CANVAS_IMAGESOURCE_VAR = 'pacem:2d-canvas-imagesrc';\n let img = GETVAR(item, CANVAS_IMAGESOURCE_VAR);\n const imgLoadHandler = () => {\n let dw = img.naturalWidth, dh = img.naturalHeight, w = item.width, h = item.height;\n if (w > 0 && h > 0) {\n }\n else if (w > 0) {\n h = dh * w / dw;\n }\n else if (h > 0) {\n w = dw * h / dh;\n }\n else {\n w = dw;\n h = dh;\n }\n if (!this._dragging\n && !item.inert /* is hit-test visible? */\n && !Utils.isNull(point)) {\n const path2D = new Path2D(`M ${item.x} ${item.y} h ${w} v ${h} H ${item.x} Z`);\n if (ctx.isPointInPath(path2D, point.x, point.y)) {\n // overwrite current hit-target (last one wins)\n this._hitTarget = item;\n }\n }\n ctx.globalAlpha = fallback(item.opacity, 1);\n ctx.drawImage(img, item.x, item.y, w, h);\n };\n if (Utils.isNull(img)) {\n img = new Image();\n img.src = item.src;\n img.onload = () => {\n SETVAR(item, CANVAS_IMAGESOURCE_VAR, img);\n imgLoadHandler();\n };\n }\n else {\n imgLoadHandler();\n }\n }\n _drawText(ctx, item, point) {\n const defaults = this.DefaultShapeValues;\n const color = ctx.fillStyle = fallback(item.color, defaults.stroke);\n const m = ctx.getTransform(), fontSize = item.fontSize > 0 ? `${item.fontSize}px` : this.#canvasCssStyle.fontSize, fontStyle = item.fontStyle || this.#canvasCssStyle.fontStyle, fontWeight = item.fontWeight || this.#canvasCssStyle.fontWeight;\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize} ${(item.fontFamily ?? this.#canvasCssStyle.fontFamily)}`;\n ctx.textAlign = item.textAnchor === 'middle' ? 'center' : item.textAnchor;\n ctx.fillText(item.text, item.anchor.x, item.anchor.y);\n ctx.globalAlpha = fallback(item.opacity, 1);\n const hasColor = !isNone(color);\n if (!this._dragging\n && !item.inert /* is hit-test visible? */\n && !Utils.isNull(point)) {\n const bbox = ctx.measureText(item.text);\n const width = bbox.width, height = bbox.actualBoundingBoxAscent + bbox.actualBoundingBoxDescent, x = item.anchor.x - bbox.actualBoundingBoxLeft, y = item.anchor.y - bbox.actualBoundingBoxAscent;\n const path2D = new Path2D(`M ${x} ${y} h ${width} v ${height} H ${x} z`);\n if (hasColor && ctx.isPointInPath(path2D, point.x, point.y)) {\n // overwrite current hit-target (last one wins)\n this._hitTarget = item;\n }\n }\n }\n _drawShape(ctx, item, point) {\n if (Utils.isNullOrEmpty(item?.pathData)) {\n return;\n }\n ctx.beginPath();\n // Path2D\n const hasFill = typeof ctx.fillStyle !== 'string' || !isNone(ctx.fillStyle), hasStroke = typeof ctx.strokeStyle !== 'string' || !isNone(ctx.strokeStyle);\n var path2D = new Path2D(item.pathData);\n if (!this._dragging\n && !item.inert /* is hit-test visible? */\n && !Utils.isNull(point)) {\n if ((hasFill && ctx.isPointInPath(path2D, point.x, point.y))\n || (hasStroke && ctx.isPointInStroke(path2D, point.x, point.y))) {\n // overwrite current hit-target (last one wins)\n this._hitTarget = item;\n }\n }\n if (hasStroke) {\n ctx.stroke(path2D);\n }\n if (hasFill) {\n ctx.fill(path2D);\n }\n const hasEnoughVertices = !Utils.isNullOrEmpty(item.vertices) && item.vertices.length > 1, hasMarkerEnd = !Utils.isNull(item.markerEnd), hasMarkerStart = !Utils.isNull(item.markerStart), hasMarkerMid = !Utils.isNull(item.markerMid);\n if (hasMarkerEnd || hasMarkerMid || hasMarkerStart) {\n if (!hasEnoughVertices) {\n this.log(Logging.LogLevel.Warn, \"Not enough vertices were explicited in order to make markers renderable.\");\n }\n }\n // WebGL: we can render markers only if vertices are explicit\n if (hasEnoughVertices) {\n const matrix = ctx.getTransform();\n if (hasMarkerStart) {\n const marker = item.markerEnd, from = item.vertices[1], to = item.vertices[0];\n const orientation = Math.atan2(to.y - from.y, to.x - from.x);\n this._drawMarker(ctx, marker, to, orientation);\n }\n if (hasMarkerMid) {\n const marker = item.markerEnd;\n for (let j = 1; j < item.vertices.length - 1; j++) {\n // reset transform, just in case\n ctx.setTransform(matrix);\n const from = item.vertices[j], to = item.vertices[j + 1];\n const orientation = Math.atan2(to.y - from.y, to.x - from.x);\n this._drawMarker(ctx, marker, to, orientation);\n }\n }\n if (hasMarkerEnd) {\n // reset transform, just in case\n ctx.setTransform(matrix);\n const marker = item.markerEnd, from = item.vertices[item.vertices.length - 2], to = item.vertices[item.vertices.length - 1];\n const orientation = Math.atan2(to.y - from.y, to.x - from.x);\n this._drawMarker(ctx, marker, to, orientation);\n }\n }\n }\n _drawMarker(ctx, marker, point, orientation) {\n const defaults = this.DefaultShapeValues;\n const refX = marker.ref?.x || 0, refY = marker.ref?.y || 0;\n const width = (marker.width || 1) * ctx.lineWidth, height = (marker.width || 1) * ctx.lineWidth;\n let viewbox = marker.viewbox, stage = { x: 0, y: 0, width: width, height: height };\n if (Utils.isNull(viewbox)) {\n viewbox = stage;\n }\n // prepare\n const mscale = { a: stage.width / viewbox.width, d: stage.height / viewbox.height }; // Rect.findTransform({ x: 0, y: 0, width: viewbox.width, height: viewbox.height }, stage, 'stretch', 'left', 'top');\n // execute\n ctx.translate(point.x, point.y);\n ctx.rotate(orientation);\n ctx.scale(mscale.a, mscale.d);\n ctx.translate(-refX, -refY);\n ctx.fillStyle = fallback(marker.fill, defaults.fill);\n ctx.strokeStyle = fallback(marker.stroke, defaults.stroke);\n // Path2D\n const hasMarkerFill = !isNone(marker.fill), hasMarkerStroke = !isNone(marker.stroke);\n var markerPath2D = new Path2D(marker.pathData);\n if (hasMarkerFill) {\n ctx.fill(markerPath2D);\n }\n if (hasMarkerStroke) {\n ctx.stroke(markerPath2D);\n }\n }\n};\nPacemCanvasAdapterElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-canvas-adapter' })\n], PacemCanvasAdapterElement);\nexport { PacemCanvasAdapterElement };\n", "import { PacemEventTarget, Utils } from '@pacem/pacem-core';\nconst JPEG_QUALITY = .9;\n/**\n * Base class for the rendering adapters (SVG, Canvas) assignable to a `Pacem2DElement` stage. Concrete\n * adapters are responsible for initializing/disposing the underlying DOM surface, sizing it, drawing the\n * scene graph, hit-testing and producing snapshot images.\n */\nexport class Pacem2DAdapterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Fallback stroke/fill/lineWidth values used when a shape doesn't provide its own. */\n this.DefaultShapeValues = {\n stroke: \"#000\",\n lineWidth: 1,\n fill: \"#fff\"\n };\n }\n /**\n * Rasterizes the given DOM element into an image `Blob`, defaulting to JPEG when `bgColor` is provided\n * (to flatten transparency against it) and to PNG otherwise.\n * @param element Element to snapshot.\n * @param bgColor Background color to flatten transparency against; if set, defaults `type` to `'image/jpeg'`.\n * @param type Explicit image MIME type, overrides the `bgColor`-based default.\n * @param quality Compression quality, applicable to lossy formats (defaults to `.9` for JPEG).\n */\n snapshotElement(element, bgColor, type, quality) {\n const jpeg = !Utils.isNullOrEmpty(bgColor), mime = type ?? (jpeg ? 'image/jpeg' : null), compression = quality ?? (jpeg ? JPEG_QUALITY : null);\n return Utils.snapshotElement(element, bgColor, mime, compression);\n }\n}\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, P, CustomElementUtils, CustomEventUtils, Utils, UI, avoidHandler } from '@pacem/pacem-core';\nimport { Matrix2D } from '@pacem/pacem-foundation';\nimport { UiElement, ShapeElement } from '../types';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { Pacem2DAdapterElement } from '../adapter';\nimport { getStageOptions } from '../stage';\nimport { AdapterUtils } from './utils';\nimport { PacemImageElement } from '../image';\nimport { PacemTextElement } from '../text';\nimport { isGroup, isShape, isText, isImage, isUiObject, isPresentationObject, isDrawable, isLinearGradient, isRadialGradient } from '../drawing';\n//namespace Pacem.Components.Drawing {\nconst SVG_NS = 'http://www.w3.org/2000/svg', DRAWABLE_VAR = 'pacem:2-svg-drawable', STAGE_VAR = 'pacem:2d-svg-stage', GETVAR = CustomElementUtils.getAttachedPropertyValue, SETVAR = CustomElementUtils.setAttachedPropertyValue, DELVAR = CustomElementUtils.deleteAttachedPropertyValue;\nfunction fallback(v, f) {\n return Utils.isNull(v) ? f : v;\n}\nfunction replaceChildAt(parent, newChild, targetIndex) {\n if (targetIndex >= parent.children.length) {\n parent.appendChild(newChild);\n return null;\n }\n else {\n return parent.replaceChild(newChild, parent.children.item(targetIndex));\n }\n}\n/**\n * `<pacem-2d-svg-adapter>`: renders a `Pacem2DElement` stage as an inline SVG document, keeping one SVG\n * element per drawable in sync (path/text/image/group), along with markers and gradients, and drives\n * pointer hit-testing and drag & drop through the SVG DOM.\n */\nlet PacemSvgAdapterElement = class PacemSvgAdapterElement extends Pacem2DAdapterElement {\n constructor() {\n super(...arguments);\n this._hitTarget = null;\n this._dragInitHandler = (evt) => {\n const args = evt.detail, el = args.element, drawable = GETVAR(el, DRAWABLE_VAR), stageTransformMatrix = drawable.stage.transformMatrix, initialMatrix = drawable.transformMatrix ?? Matrix2D.identity;\n args.data = {\n stageTransformMatrix, item: drawable,\n initialTransformMatrix: initialMatrix\n };\n const reject = AdapterUtils.itemDispatch(drawable, evt, { x: 0, y: 0 });\n if (reject) {\n // reject dragging\n evt.preventDefault();\n }\n };\n this._draggingHandler = (evt) => {\n avoidHandler(evt);\n this.#dragging = true;\n const el = evt.detail.element;\n const data = evt.detail.data;\n const args = evt.detail;\n const screenOffset = { x: (args.currentPosition.x - args.origin.x) * data.stageTransformMatrix.a, y: (args.currentPosition.y - args.origin.y) * data.stageTransformMatrix.d };\n const offset = {\n x: screenOffset.x + data.initialTransformMatrix.e,\n y: screenOffset.y + data.initialTransformMatrix.f\n }, \n // this is not correct when item or any of its parents have been rotated!\n stageOffset = {\n x: screenOffset.x + data.stageTransformMatrix.e,\n y: screenOffset.y + data.stageTransformMatrix.f\n };\n //console.log(`current pos: ${args.currentPosition.x},${args.currentPosition.y}`);\n //console.log(`origin pos: ${args.origin.x},${args.origin.y}`);\n //console.log(`offset: ${offset.x},${offset.y}`);\n //console.log(data.stageTransformMatrix);\n //console.log(el.style.transform); console.log(data.initialTransformMatrix);\n const rejected = AdapterUtils.itemDispatch(data.item, evt, stageOffset);\n if (!rejected) {\n const init = data.initialTransformMatrix;\n el.style.transform = `matrix(${init.a},${init.b},${init.c},${init.d},${offset.x},${offset.y})`;\n }\n };\n this._dragEndHandler = (evt) => {\n this.#dragging = false;\n const args = evt.detail, el = args.element, data = args.data, transform = Utils.deserializeTransform(el.style);\n // store transform\n const offset = { x: transform.e, y: transform.f };\n if (data.item instanceof UiElement) {\n data.item.translateX = offset.x;\n data.item.translateY = offset.y;\n }\n else {\n const init = data.initialTransformMatrix, actual = { a: init.a, b: init.b, c: init.c, d: init.d, e: offset.x, f: offset.y };\n Utils.extend(data.item, { transformMatrix: actual });\n }\n el.style.transform = '';\n AdapterUtils.itemDispatch(data.item, evt, offset);\n };\n this._mouseleaveHandler = (evt) => {\n if (this.#dragging) {\n return;\n }\n const hitTarget = this._hitTarget;\n if (Utils.isNull(hitTarget)) {\n return;\n }\n this._hitTarget = null;\n if (!Utils.isNull(hitTarget)) {\n this.#dragger.unregister(this._items.get(hitTarget));\n AdapterUtils.itemDispatch(hitTarget, 'out', evt);\n }\n };\n this._mousemoveHandler = (evt) => {\n var pt = CustomEventUtils.getEventCoordinates(evt).client;\n if (!this.#dragging) {\n // not dragging around\n var d = null;\n const root = evt.target.getRootNode();\n root.elementsFromPoint(pt.x, pt.y).find(i => {\n d = GETVAR(i, DRAWABLE_VAR);\n return d && !d.inert;\n });\n var old = this._hitTarget, val = d;\n if (Utils.isNull(d && d.stage) || !this._scenes.has(d.stage) || d.inert) {\n val = null;\n }\n const hitTarget = this._hitTarget = val;\n if (val !== old) {\n if (!Utils.isNull(old)) {\n this.#dragger.unregister(this._items.get(old));\n AdapterUtils.itemDispatch(old, 'out', evt);\n }\n if (!Utils.isNull(val)) {\n if (val.draggable) {\n this.#dragger.register(this._items.get(val));\n }\n AdapterUtils.itemDispatch(val, 'over', evt);\n }\n }\n if (Utils.isNull(hitTarget)) {\n // dispatch only if no hit target\n const svg = evt.currentTarget;\n const stage = GETVAR(svg, STAGE_VAR);\n if (!Utils.isNull(stage)) {\n AdapterUtils.stageDispatch(stage, 'move', evt);\n }\n }\n }\n };\n this._mouseDownUpHandler = (evt) => {\n const svg = evt.currentTarget;\n if (svg instanceof SVGSVGElement) {\n const stage = GETVAR(svg, STAGE_VAR), hitTarget = this._hitTarget;\n const type = evt.type.replace(/^mouse/, '');\n const opts = getStageOptions(stage);\n if (CustomEventUtils.matchModifiers(evt, opts.clickModifiers)) {\n if (!Utils.isNull(hitTarget) && hitTarget.stage === stage) {\n AdapterUtils.itemDispatch(hitTarget, type, evt);\n }\n else {\n AdapterUtils.stageDispatch(stage, type, evt);\n }\n }\n }\n };\n this._scenes = new WeakMap();\n this._markers = new WeakMap();\n this._gradients = new WeakMap();\n this._items = new WeakMap();\n }\n snapshot(stage, background, type, quality) {\n if (this._scenes.has(stage)) {\n const svg = this._scenes.get(stage);\n return this.snapshotElement(svg, background, type, quality);\n }\n else {\n return Promise.resolve(null);\n }\n }\n getTransformMatrix(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n return scenes.get(scene).getScreenCTM().inverse();\n }\n return Matrix2D.identity;\n }\n #dragger;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dragDrop = this.#dragger = document.createElement(P + '-drag-drop');\n dragDrop.mode = UI.DragDataMode.Self;\n // append\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(dragDrop);\n dragDrop.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n }\n disconnectedCallback() {\n const dragger = this.#dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._draggingHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.remove();\n }\n super.disconnectedCallback();\n }\n invalidateSize(scene, size) {\n const scenes = this._scenes;\n if (!Utils.isNull(scene) && !Utils.isNullOrEmpty(size)) {\n if (scenes.has(scene)) {\n var svg = scenes.get(scene);\n svg.setAttribute('width', size.width + '');\n svg.setAttribute('height', size.height + '');\n const rect = scene.viewbox, aspectRatio = scene.aspectRatio;\n if (AdapterUtils.isValidViewbox(rect)) {\n svg.setAttribute('viewBox', `${rect.x} ${rect.y} ${rect.width} ${rect.height}`);\n }\n else {\n svg.removeAttribute('viewBox');\n }\n if (Utils.isNullOrEmpty(aspectRatio) || typeof aspectRatio === 'string') {\n svg.removeAttribute('preserveAspectRatio');\n }\n else {\n svg.setAttribute('preserveAspectRatio', `xM${aspectRatio.x.substring(1)}YM${aspectRatio.y.substring(1)} ${(aspectRatio.slice ? 'slice' : 'meet')}`);\n }\n }\n }\n }\n initialize(scene) {\n if (Utils.isNull(scene)) {\n throw 'Provided scene is null or undefined.';\n }\n const scenes = this._scenes;\n // already in the store?\n if (scenes.has(scene)) {\n return scenes.get(scene);\n }\n const stage = scene.stage;\n // empty stage DOM and clear dictionary\n stage.innerHTML = '';\n this._items = new WeakMap();\n var svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('part', 'stage');\n SETVAR(svg, STAGE_VAR, scene);\n stage.appendChild(svg);\n scenes.set(scene, svg);\n const options = { passive: false, capture: true };\n svg.addEventListener('mousemove', this._mousemoveHandler, false);\n svg.addEventListener('click', this._mouseDownUpHandler, false);\n svg.addEventListener('mousedown', this._mouseDownUpHandler, false);\n svg.addEventListener('mouseup', this._mouseDownUpHandler, false);\n svg.addEventListener('mouseleave', this._mouseleaveHandler, false);\n // draw right away\n // this.draw(scene);\n return svg;\n }\n dispose(scene) {\n const scenes = this._scenes;\n if (scenes.has(scene)) {\n var svg = scenes.get(scene);\n svg.removeEventListener('mousemove', this._mousemoveHandler);\n svg.removeEventListener('click', this._mouseDownUpHandler);\n svg.removeEventListener('mousedown', this._mouseDownUpHandler);\n svg.removeEventListener('mouseup', this._mouseDownUpHandler);\n svg.removeEventListener('mouseleave', this._mouseleaveHandler);\n // remove\n DELVAR(svg, STAGE_VAR);\n svg.remove();\n scenes.delete(scene);\n }\n }\n getHitTarget(scene) {\n return this._hitTarget;\n }\n draw(scene, item, deepRedraw = false) {\n const scenes = this._scenes, dict = this._items;\n if (!Utils.isNull(scene)) {\n if (scene.adapter === this) {\n if (!scenes.has(scene)) {\n // forgiving behavior (call initialize() if it's the case)\n this.initialize(scene);\n }\n }\n else {\n if (scenes.has(scene)) {\n scenes.delete(scene);\n }\n return;\n }\n }\n else {\n return;\n }\n var items = scene.datasource, flow = true, parent = scenes.get(scene);\n // item provided?\n if (!Utils.isNull(item) && dict.has(item)) {\n items = [item];\n parent = dict.get(item).parentNode;\n flow = false;\n }\n if (flow) {\n // sweep everything, quick and dirty\n parent.innerHTML = '<defs></defs>';\n this._markers = new WeakMap();\n }\n this._draw(scene, parent, items || [], flow, deepRedraw);\n }\n #dragging;\n _hasItems(object) {\n return isGroup(object);\n }\n _disposeSvg(el) {\n if (!Utils.isNull(el)) {\n var drawable = GETVAR(el, DRAWABLE_VAR);\n DELVAR(el, DRAWABLE_VAR);\n this._items.delete(drawable);\n }\n }\n _draw(scene, parent, items, flow, deepRedraw) {\n const dict = this._items;\n // children counter\n let j = 0;\n if (parent.firstElementChild instanceof SVGDefsElement) {\n j++;\n }\n if (!Utils.isNullOrEmpty(items)) {\n for (let item of items) {\n item.stage ??= scene;\n let el;\n if (!dict.has(item)) {\n el = this._buildSVGElement(item);\n SETVAR(el, DRAWABLE_VAR, item);\n this._disposeSvg(replaceChildAt(parent, el, j));\n dict.set(item, el);\n }\n else {\n el = dict.get(item);\n if (el.parentNode !== parent) {\n this._disposeSvg(replaceChildAt(parent, el, j));\n }\n }\n if (isDrawable(item)) {\n if (item.hide) {\n el.setAttribute('display', 'none');\n }\n else {\n el.removeAttribute('display');\n }\n el.style.transform = '';\n }\n if (isShape(item)) {\n const path = el;\n path.setAttribute('d', fallback(item.pathData, 'M0,0'));\n // markers\n for (let { marker, suffix } of [{ marker: item.markerStart, suffix: 'start' }, { marker: item.markerEnd, suffix: 'end' }, { marker: item.markerMid, suffix: 'mid' }]) {\n if (marker) {\n const markerSvg = this._ensureMarker(parent, marker);\n path.setAttribute('marker-' + suffix, `url(#${markerSvg.id})`);\n }\n else {\n path.removeAttribute('marker-' + suffix);\n }\n }\n }\n else if (isText(item)) {\n const text = el;\n text.textContent = item.text;\n text.style.fill = Utils.isNullOrEmpty(item.color) ? '' : item.color;\n text.style.fontFamily = Utils.isNullOrEmpty(item.fontFamily) ? '' : item.fontFamily;\n //if (item.fontSize > 0) {\n // text.setAttribute('font-size', item.fontSize.toString());\n //} else {\n // text.removeAttribute('font-size');\n //}\n text.style.fontSize = Utils.isNull(item.fontSize) ? '' : item.fontSize + 'px';\n if (!Utils.isNullOrEmpty(item.fontWeight)) {\n text.style.fontWeight = item.fontWeight;\n }\n if (!Utils.isNullOrEmpty(item.fontStyle)) {\n text.style.fontStyle = item.fontStyle;\n }\n text.setAttribute('text-anchor', fallback(item.textAnchor, 'start'));\n if (!Utils.isNull(item.anchor)) {\n text.setAttribute('x', item.anchor.x.toString());\n text.setAttribute('y', item.anchor.y.toString());\n }\n else {\n text.removeAttribute('x');\n text.removeAttribute('y');\n }\n }\n else if (isImage(item)) {\n const img = el;\n img.setAttribute('href', item.src);\n img.setAttribute('preserveAspectRatio', 'none');\n if (item.width > 0) {\n img.setAttribute('width', '' + item.width);\n }\n else {\n img.removeAttribute('width');\n }\n if (item.height > 0) {\n img.setAttribute('height', '' + item.height);\n }\n else {\n img.removeAttribute('height');\n }\n if (!Utils.isNull(item.x)) {\n img.setAttribute('x', '' + item.x);\n }\n else {\n img.removeAttribute('x');\n }\n if (!Utils.isNull(item.y)) {\n img.setAttribute('y', '' + item.y);\n }\n else {\n img.removeAttribute('y');\n }\n }\n if (isUiObject(item)) {\n const t = item.transformMatrix;\n if (Utils.isNull(t) || Matrix2D.isIdentity(t)) {\n el.removeAttribute('transform');\n }\n else {\n el.setAttribute('transform', `matrix(${t.a} ${t.b} ${t.c} ${t.d} ${t.e} ${t.f})`);\n }\n const opacity = fallback(item.opacity, 1);\n if (opacity === 1) {\n el.removeAttribute('opacity');\n }\n else {\n el.setAttribute('opacity', '' + opacity);\n }\n }\n if (isPresentationObject(item)) {\n if (Utils.isNullOrEmpty(item.fill)) {\n el.removeAttribute('fill');\n }\n else if (typeof item.fill === 'string') {\n el.setAttribute('fill', item.fill);\n }\n else {\n const grad = this._ensureGradient(parent, item.fill);\n el.setAttribute('fill', `url(#${grad.id})`);\n }\n if (Utils.isNullOrEmpty(item.stroke)) {\n el.removeAttribute('stroke');\n }\n else {\n el.setAttribute('stroke', item.stroke);\n }\n if (Utils.isNullOrEmpty(item.dashArray)) {\n el.removeAttribute('stroke-dasharray');\n }\n else {\n el.setAttribute('stroke-dasharray', item.dashArray.join(' '));\n }\n if (Utils.isNullOrEmpty(item.lineCap)) {\n el.removeAttribute('stroke-linecap');\n }\n else {\n el.setAttribute('stroke-linecap', item.lineCap);\n }\n if (Utils.isNullOrEmpty(item.lineJoin)) {\n el.removeAttribute('stroke-linejoin');\n }\n else {\n el.setAttribute('stroke-linejoin', item.lineJoin);\n }\n if (Utils.isNullOrEmpty(item.lineWidth)) {\n el.removeAttribute('stroke-width');\n }\n else {\n el.setAttribute('stroke-width', '' + item.lineWidth);\n }\n //let css = '';\n //if (!Utils.isNullOrEmpty(item.dashArray)) {\n // css += `stroke-dasharray: ${item.dashArray.join(',')};`;\n //}\n //if (!Utils.isNullOrEmpty(item.lineCap)) {\n // css += `stroke-linecap: ${item.lineCap};`;\n //}\n //if (!Utils.isNullOrEmpty(item.lineJoin)) {\n // css += `stroke-linejoin: ${item.lineJoin};`;\n //}\n //el.style.cssText = css;\n //el.setAttribute('stroke-width', '' + fallback(item.lineWidth, defaults.lineWidth));\n }\n // hit test visibility\n if (item.inert) {\n el.style.pointerEvents = 'none';\n }\n else {\n el.style.pointerEvents = '';\n }\n if ((flow || deepRedraw) && this._hasItems(item)) {\n // recursion\n this._draw(scene, el, item.childDrawables, true, deepRedraw);\n }\n j++;\n }\n }\n if (flow) {\n // remove exceeding children (except defs)\n for (let k = parent.children.length - 1; k >= j; k--) {\n const el = parent.children.item(k);\n this._disposeSvg(el);\n el.remove();\n }\n }\n }\n _buildSVGElement(item) {\n if (isShape(item) || item instanceof ShapeElement) {\n return document.createElementNS(SVG_NS, 'path');\n }\n if (isText(item) || item instanceof PacemTextElement) {\n return document.createElementNS(SVG_NS, 'text');\n }\n if (isImage(item) || item instanceof PacemImageElement) {\n return document.createElementNS(SVG_NS, 'image');\n }\n return document.createElementNS(SVG_NS, 'g');\n }\n _ensureGradient(parent, gradient) {\n const store = this._gradients;\n if (!store.has(parent)) {\n store.set(parent, new WeakMap());\n }\n const map = store.get(parent);\n // linear or radial?\n const isLinear = isLinearGradient(gradient), isRadial = isRadialGradient(gradient);\n if (map.has(gradient)) {\n const current = map.get(gradient);\n if ((isLinear && current instanceof SVGLinearGradientElement)\n || (isRadial && current instanceof SVGRadialGradientElement)) {\n // remove from DOM\n current.remove();\n // remove from memoizer\n map.delete(gradient);\n }\n }\n if (!map.has(gradient)) {\n // <defs>\n let defsContainer = parent;\n let defs;\n while (Utils.isNull(defs = defsContainer.querySelector(':scope > defs'))) {\n const parent1 = defsContainer.parentElement;\n if (parent1 instanceof SVGElement) {\n defsContainer = parent1;\n }\n else {\n break;\n }\n }\n if (Utils.isNull(defs)) {\n throw new Error('Must provide a <defs> element.');\n }\n var gradientSvg = null;\n if (isLinear) {\n // create linear gradient node\n gradientSvg = document.createElementNS(SVG_NS, 'linearGradient');\n }\n else if (isRadialGradient(gradient)) {\n // create radial gradient node\n gradientSvg = document.createElementNS(SVG_NS, 'radialGradient');\n }\n else {\n throw new Error('Unmanaged gradient type.');\n }\n gradientSvg.setAttribute('gradientUnits', 'userSpaceOnUse');\n gradientSvg.setAttribute('id', `grad-${Utils.uniqueCode()}`);\n defs.appendChild(gradientSvg);\n map.set(gradient, gradientSvg);\n }\n const retval = map.get(gradient);\n if (isLinear) {\n // linear\n retval.setAttribute('x1', gradient.start.x.toString());\n retval.setAttribute('y1', gradient.start.y.toString());\n retval.setAttribute('x2', gradient.end.x.toString());\n retval.setAttribute('y2', gradient.end.y.toString());\n }\n else if (isRadial) {\n retval.setAttribute('cx', gradient.center.x.toString());\n retval.setAttribute('cy', gradient.center.y.toString());\n retval.setAttribute('r', gradient.radius.toString());\n }\n // stops\n let j = 0;\n for (let stop of gradient.stops) {\n while (retval.children.length <= j) {\n const stopSvgAdd = document.createElementNS(SVG_NS, 'stop');\n retval.appendChild(stopSvgAdd);\n }\n const stopSvg = retval.children.item(j);\n stopSvg.setAttribute('offset', (stop.offset * 100) + '%');\n stopSvg.setAttribute('stop-color', stop.color);\n if (!Utils.isNull(stop.opacity)) {\n stopSvg.setAttribute('stop-opacity', stop.opacity.toString());\n }\n j++;\n }\n while (retval.children.length > gradient.stops.length) {\n const lastChild = retval.children.item(retval.children.length - 1);\n retval.removeChild(lastChild);\n }\n return retval;\n }\n _ensureMarker(parent, marker) {\n const store = this._markers;\n if (!store.has(parent)) {\n store.set(parent, new WeakMap());\n }\n const map = store.get(parent);\n if (!map.has(marker)) {\n const markerSvg = document.createElementNS(SVG_NS, 'marker');\n map.set(marker, markerSvg);\n const markerPath = document.createElementNS(SVG_NS, 'path');\n markerSvg.appendChild(markerPath);\n markerSvg.setAttribute('id', 'mark' + Utils.uniqueCode());\n let defsContainer = parent;\n let defs;\n while (Utils.isNull(defs = defsContainer.querySelector(':scope > defs'))) {\n const parent1 = defsContainer.parentElement;\n if (parent1 instanceof SVGElement) {\n defsContainer = parent1;\n }\n else {\n break;\n }\n }\n if (Utils.isNull(defs)) {\n throw new Error('Must provide a <defs> element.');\n }\n defs.appendChild(markerSvg);\n }\n const markerSvg = map.get(marker), markerPath = markerSvg.firstElementChild;\n // marker attributes\n markerSvg.setAttribute('orient', 'auto-start-reverse');\n if (!Utils.isNullOrEmpty(marker.viewbox)) {\n markerSvg.setAttribute('viewBox', `${marker.viewbox.x} ${marker.viewbox.y} ${marker.viewbox.width} ${marker.viewbox.height}`);\n }\n else {\n markerSvg.removeAttribute('viewBox');\n }\n if (!Utils.isNullOrEmpty(marker.ref)) {\n markerSvg.setAttribute('refX', marker.ref.x.toString());\n markerSvg.setAttribute('refY', marker.ref.y.toString());\n }\n else {\n markerSvg.removeAttribute('refX');\n markerSvg.removeAttribute('refY');\n }\n if (marker.height > 0) {\n markerSvg.setAttribute('markerHeight', marker.height.toString());\n }\n else {\n markerSvg.removeAttribute('markerHeight');\n }\n if (marker.width > 0) {\n markerSvg.setAttribute('markerWidth', marker.width.toString());\n }\n else {\n markerSvg.removeAttribute('markerWidth');\n }\n // path attributes\n markerPath.setAttribute('d', marker.pathData);\n if (!Utils.isNullOrEmpty(marker.fill)) {\n markerPath.setAttribute('fill', marker.fill);\n }\n else {\n markerPath.removeAttribute('fill');\n }\n if (!Utils.isNullOrEmpty(marker.stroke)) {\n markerPath.setAttribute('stroke', marker.stroke);\n }\n else {\n markerPath.removeAttribute('stroke');\n }\n return markerSvg;\n }\n};\nPacemSvgAdapterElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-svg-adapter' })\n], PacemSvgAdapterElement);\nexport { PacemSvgAdapterElement };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Components", "PropertyConverters", "Watch", "Utils", "Matrix2D", "Utils", "Pacem2DElement", "Matrix2D", "__decorate", "Components", "Watch", "PropertyConverters", "Watch", "PropertyConverters", "Utils", "Matrix2D", "__decorate", "Matrix2D", "Watch", "PropertyConverters", "Utils", "CustomElement", "Watch", "P", "Utils", "__decorate", "PacemGroupElement", "Utils", "Watch", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "Utils", "Rect", "__decorate", "Rect", "PacemEllipseElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "PacemCircleElement", "Utils", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "Utils", "__decorate", "CornerType", "PacemRectElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "Utils", "__decorate", "PacemLineElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "__decorate", "PacemPathElement", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "Utils", "__decorate", "PacemPolygonElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "Utils", "__decorate", "PacemPolylineElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "__decorate", "PacemImageElement", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "Utils", "__decorate", "PacemTextElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "Utils", "Rect", "Utils", "Rect", "CustomElement", "P", "CustomElementUtils", "Utils", "CustomEventUtils", "UI", "avoidHandler", "Matrix2D", "Rect", "Utils", "__decorate", "CustomElementUtils", "Utils", "PacemCanvasAdapterElement", "Matrix2D", "avoidHandler", "CustomEventUtils", "P", "UI", "Rect", "canvas", "CustomElement", "CustomElement", "P", "CustomElementUtils", "CustomEventUtils", "Utils", "UI", "avoidHandler", "Matrix2D", "__decorate", "GETVAR", "CustomElementUtils", "SETVAR", "fallback", "Utils", "PacemSvgAdapterElement", "Matrix2D", "avoidHandler", "CustomEventUtils", "P", "UI", "markerSvg", "markerPath", "CustomElement"]
|
|
7
7
|
}
|