@pacem/pacem-2d 1.0.4 → 1.0.5-bartels

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pacem-2d.js","sources":["../esm/constants.js","../esm/drawing.js","../esm/stage.js","../esm/drawable-element.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/adapter.js","../esm/adapters/canvasadapter.js","../esm/adapters/svgadapter.js","../esm/index-iife.js"],"sourcesContent":["/** 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 { 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","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 { 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","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, 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","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","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Utils","Point","Matrix2D","CustomUIEvent","__decorate","this","EventKeyModifier","Components","CustomEventUtils","avoidHandler","Rect","PropertyChangeEvent","Watch","PropertyConverters","ViewChild","PCSS","P","Debounce","CustomElement","CustomElementUtils","parseAsNumericalArray","UI","PacemEventTarget","SETVAR","GETVAR","fallback","Logging","DeepMerger"],"mappings":"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"}
1
+ {"version":3,"file":"pacem-2d.js","sources":["../esm/drawing.js","../esm/constants.js","../esm/stage.js","../esm/drawable-element.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/adapter.js","../esm/adapters/canvasadapter.js","../esm/adapters/svgadapter.js","../esm/index-iife.js"],"sourcesContent":["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","/** 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","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","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 { 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","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, 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","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","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Utils","Point","Matrix2D","CustomUIEvent","__decorate","this","EventKeyModifier","Components","CustomEventUtils","avoidHandler","Rect","PropertyChangeEvent","Watch","PropertyConverters","ViewChild","PCSS","P","Debounce","CustomElement","CustomElementUtils","parseAsNumericalArray","UI","PacemEventTarget","SETVAR","GETVAR","fallback","Logging","DeepMerger"],"mappings":"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"}