@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,6 +1,6 @@
1
1
  /*!
2
- * @pacem/pacem-2d v1.0.4 (https://js.pacem.it)
2
+ * @pacem/pacem-2d v1.0.5-bartels (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- !function(t,e){"use strict";const r="2d";function i(t){return!e.Utils.isNull(t)&&"stage"in t}function s(t){return i(t)}function n(t){return"stops"in t&&e.Utils.isArray(t.stops)}function a(e){return n(e)&&"start"in e&&t.Point.isPoint(e.start)&&"end"in e&&t.Point.isPoint(e.end)}function o(e){return n(e)&&"center"in e&&t.Point.isPoint(e.center)&&"radius"in e&&"number"==typeof e.radius}class PresentationState{static combine(e,r,i=null){return{opacity:(e.opacity??1)*(r.opacity??1),transformMatrix:i??t.Matrix2D.multiply(r.transformMatrix,e.transformMatrix),dashArray:e.dashArray??r.dashArray,fill:e.fill??r.fill,lineCap:e.lineCap??r.lineCap,lineJoin:e.lineJoin??r.lineJoin,lineWidth:e.lineWidth??r.lineWidth,stroke:e.stroke??r.stroke}}}function l(t){return s(t)&&("fill"in t||"transformMatrix"in t||"stroke"in t||"lineJoin"in t||"dashArray"in t||"lineWidth"in t||"opacity"in t||"lineCap"in t)}function c(t){return s(t)&&"pathData"in t}function h(t){return s(t)&&"childDrawables"in t&&!e.Utils.isNullOrEmpty(t.childDrawables)}function d(t){return s(t)&&"text"in t&&"string"==typeof t.text}function p(t){return s(t)&&"src"in t&&"string"==typeof t.src}class UI2DEvent extends e.CustomUIEvent{constructor(t,e,r,i){super(t,e,r),this.#t=i}#t;get transformMatrix(){return this.#t}project(e={x:this.screenX,y:this.screenY}){return t.Matrix2D.multiply(e,this.#t)}}class Shape{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}}class DragEvent extends UI2DEvent{}class DrawableEvent extends UI2DEvent{constructor(t,e,r,i){super(t,{detail:e,bubbles:!0,cancelable:!0},r,i)}}class StageEvent extends UI2DEvent{constructor(t,e,r,i=e.transformMatrix){super(t,{detail:e,bubbles:!0,cancelable:!0},r,i)}}var u=Object.freeze({__proto__:null,DragEvent:DragEvent,DrawableEvent:DrawableEvent,PresentationState:PresentationState,Shape:Shape,StageEvent:StageEvent,UI2DEvent:UI2DEvent,isDrawable:i,isGroup:h,isImage:p,isLinearGradient:a,isPresentationObject:l,isRadialGradient:o,isShape:c,isText:d,isUiObject:s}),m=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const v=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,g={convert:t=>{const e=v.exec(t);return e&&e.length>=4?{x:e[1].toLowerCase(),y:e[3].toLowerCase(),slice:"slice"===e[6]}:"none"},convertBack:t=>e.Utils.isNull(t)||"string"==typeof t?"none":`xM${t.x.substring(1)}YM${t.y.substring(1)} ${t.slice?"slice":"meet"}`},f={panControl:!0,zoomControl:!0,panModifiers:[e.EventKeyModifier.AltKey],zoomModifiers:[e.EventKeyModifier.AltKey],clickModifiers:[]};function y(t){const r=t instanceof x?t.options:{};return e.Utils.extend({},f,r)}let x=class Pacem2DElement extends e.Components.PacemItemsContainerElement{constructor(){super(...arguments),this.#t=t.Matrix2D.identity,this.#e=f,this._resizeHandler=t=>{this.#r={x:t.detail.left,y:t.detail.top,width:t.detail.width,height:t.detail.height};const r=this.adapter;e.Utils.isNull(r)||this._invalidateSize()},this._zoomHandler=t=>{if(!t.isTrusted)return;const r=this.#e;if(r.zoomControl&&e.CustomEventUtils.matchModifiers(t,r.zoomModifiers)){e.avoidHandler(t);const r=1+.1*(t.deltaY<0?-1:1),i=e.Utils.offsetRect(t.currentTarget),s={x:t.clientX,y:t.clientY};this._zoom(r,i,s)}},this._panHandler=t=>{const r=this.#i,i=this._getPanPoint(t);if(!e.Utils.isNullOrEmpty(r&&r.point)&&!e.Utils.isNull(i)){e.avoidHandler(t);const s=r.factor,n=r.box,a=r.point;this.viewbox={x:n.x-s*(i.x-a.x),y:n.y-s*(i.y-a.y),width:n.width,height:n.height}}},this._panStartHandler=t=>{if(!this.#e.panControl)return;if(!t.isTrusted)return;const r=this.#r,i=this.viewbox||{x:0,y:0,width:r.width,height:r.height},s=this._getPanPoint(t);if(s){e.avoidHandler(t),this._stage.style.pointerEvents="none";const n=this._getActualAspectRatio(),a=i.width/r.width,o=i.height/r.height,l=n.slice?Math.min(a,o):Math.max(a,o);this.#i={point:s,box:i,factor:l}}},this._panEndHandler=t=>{this._stage.style.pointerEvents="",this.#i=null}}get stage(){return this._stage}snapshot(t,r,i){const s=this.adapter;return e.Utils.isNull(s)?Promise.resolve(null):s.snapshot(this,t,r,i)}#s;#t;get transformMatrix(){return this.#t}_transformMatrixScale(){const r=this.#r||e.Utils.offsetRect(this._stage);var i=this.#s||r;const s=this.viewbox||i,n=this.aspectRatio||"none",a="none"===n?"stretch":n.slice?"cover":"contain";return t.Rect.findTransform(s,i,a).a}validate(t){return t instanceof DrawableElement&&e.Utils.isNull(t.parent)}draw(t,r=!1){const i=this.adapter;if(!this.disabled&&!e.Utils.isNull(i)){let e=new CustomEvent("predraw",{cancelable:!0});this.dispatchEvent(e),e.defaultPrevented||(i.draw(this,t,r),this.dispatchEvent(new CustomEvent("draw")))}}_drawDebounced(t,r=!1){!e.Utils.isNull(t)&&h(t)?this.draw(t,r):this.draw(t)}requestDraw(t,e=!1){this._drawDebounced(t,e)}_buildUpDatasourceFromDOM(){this.datasource=(this.items||[]).slice()}#e;#r;_getActualAspectRatio(){const t=this.aspectRatio||"none";return{x:"none"===t?"mid":t.x,y:"none"===t?"mid":t.y,slice:"none"!==t&&t.slice}}_zoomFromValue(r){const i=this.#r;if(e.Utils.isNull(i))return;const s=i,n=this.#s||s,a=this.viewbox||n,o=this.aspectRatio||"none",l="none"===o?"stretch":o.slice?"cover":"contain",c=t.Rect.findTransform(a,s,l),h=t.Rect.findTransform(n,s,l),d=c.a/(h.a*r);this._zoom(d)}_zoom(t,r,i){e.Utils.isNull(r)&&(r=e.Utils.offsetRect(this._stage)),e.Utils.isNull(i)&&(i={x:r.x+.5*r.width,y:r.y+.5*r.height});const s=this.#r,n=this.viewbox||s,a=Math.min(n.width,n.height),o=a*t,l=a*t;if(o>0&&l>0){const t=this._getActualAspectRatio(),e=t.x,s=t.y,a=t.slice,c=n.width/n.height,h=a?Math.max(r.width,r.height):Math.min(r.width,r.height);let d,p;switch(e){case"mid":d=(o-n.width)*(i.x-r.x-.5*(r.width-h))/(h*c);break;case"max":d=(o-n.width)*(i.x-r.x-(r.width-h))/(h*c);break;default:d=(o-n.width)*(i.x-r.x)/(h*c)}switch(s){case"mid":p=(l-n.height)*(i.y-r.y-.5*(r.height-h))/(h*c);break;case"max":p=(l-n.height)*(i.y-r.y-(r.height-h))/(h*c);break;default:p=(l-n.height)*(i.y-r.y)/(h*c)}const u=n.x-d,m=n.y-p;this.viewbox={x:u,y:m,width:o,height:l}}}_getPanPoint(t){const r=this.#e;return t instanceof MouseEvent&&e.CustomEventUtils.matchModifiers(t,r.panModifiers)?e.CustomEventUtils.getEventCoordinates(t).page:null}#i;_invalidateSize(){this.adapter.invalidateSize(this,this.#r);const t=this.#t;this.#t=this.adapter.getTransformMatrix(this),this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"transformMatrix",currentValue:this.#t,oldValue:t})),this.zoom=this._transformMatrixScale(),this.dispatchEvent(new e.Components.ResizeEvent(this.#r))}viewActivatedCallback(){super.viewActivatedCallback();const t=this.adapter;e.Utils.isNull(t)||(t.initialize(this),this._invalidateSize(),this._drawDebounced());const r=this._resize;r.addEventListener(e.Components.ResizeEventName,this._resizeHandler,!1);const i=this._stage;r.target=i;const s={capture:!1,passive:!0};i.addEventListener("wheel",this._zoomHandler,!1),i.addEventListener("mousedown",this._panStartHandler,!1),i.addEventListener("touchstart",this._panStartHandler,s),window.addEventListener("mousemove",this._panHandler,!1),window.addEventListener("mouseup",this._panEndHandler,!1),window.addEventListener("touchmove",this._panHandler,s),window.addEventListener("touchend",this._panEndHandler,s)}propertyChangedCallback(t,r,i,s){switch(super.propertyChangedCallback(t,r,i,s),t){case"adapter":e.Utils.isNull(r)||r.dispose(this),e.Utils.isNull(i)||(i.initialize(this),this._invalidateSize(),this._drawDebounced());break;case"aspectRatio":e.Utils.isNull(this.adapter)||this._invalidateSize();break;case"viewbox":e.Utils.isNull(this.adapter)||this._invalidateSize(),this.#s??=this.viewbox||null;break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":i!==this._transformMatrixScale()&&this._zoomFromValue(i);break;case"options":this.#e=y(this);break;case"disabled":case"datasource":this._drawDebounced()}}disconnectedCallback(){const t=this._resize,r=this._stage;e.Utils.isNull(t)||t.removeEventListener(e.Components.ResizeEventName,this._resizeHandler,!1),e.Utils.isNull(r)||(r.removeEventListener("wheel",this._zoomHandler,!1),r.removeEventListener("mousedown",this._panStartHandler,!1),r.removeEventListener("touchstart",this._panStartHandler),window.removeEventListener("mousemove",this._panHandler,!1),window.removeEventListener("mouseup",this._panEndHandler,!1),window.removeEventListener("touchmove",this._panHandler),window.removeEventListener("touchend",this._panEndHandler)),e.Utils.isNull(this.adapter)||this.adapter.dispose(this),super.disconnectedCallback()}};m([e.Watch({converter:e.PropertyConverters.Element})],x.prototype,"adapter",void 0),m([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Rect})],x.prototype,"viewbox",void 0),m([e.Watch({emit:!1,reflectBack:!0,converter:g})],x.prototype,"aspectRatio",void 0),m([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],x.prototype,"datasource",void 0),m([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],x.prototype,"options",void 0),m([e.Watch({converter:e.PropertyConverters.Number})],x.prototype,"zoom",void 0),m([e.ViewChild("."+e.PCSS+"-2d")],x.prototype,"_stage",void 0),m([e.ViewChild(e.P+"-resize")],x.prototype,"_resize",void 0),m([e.Debounce(!0)],x.prototype,"_drawDebounced",null),x=m([e.CustomElement({tagName:e.P+"-"+r,shadow:!0,template:`<${e.P}-resize watch-position="true"></${e.P}-resize><div class="${e.PCSS}-2d" part="container"></div><slot></slot>`})],x);var b=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};class DrawableElement extends e.Components.PacemCrossItemsContainerElement{validate(t){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||e.CustomElementUtils.findAncestorOfType(this,x)}get parent(){return this._drawableParent=this._drawableParent||e.CustomElementUtils.findAncestor(this,t=>t instanceof DrawableElement)}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i&&"hide"===t)this.stage?.draw(this)}}b([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],DrawableElement.prototype,"tag",void 0),b([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],DrawableElement.prototype,"inert",void 0);var E=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const w=Math.PI/180;class UiElement extends DrawableElement{#t=t.Matrix2D.identity;viewActivatedCallback(){super.viewActivatedCallback(),this._updateTransformMatrix()}propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"rotate":case"scaleX":case"scaleY":case"translateX":case"translateY":this._updateTransformMatrix();case"opacity":this.stage?.draw(this)}}_updateTransformMatrix(){let t=w*(this.rotate??0),e=Math.cos(t),r=Math.sin(t),i=(this.scaleX??1)*e,s=-r,n=r,a=(this.scaleY??1)*e,o=this.translateX??0,l=this.translateY??0;this.#t={a:i,b:s,c:n,d:a,e:o,f:l}}get transformMatrix(){const t=this.#t;return{a:t.a,b:t.b,c:t.c,d:t.d,e:t.e,f:t.f}}}E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"rotate",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"scaleX",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"scaleY",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"translateX",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"translateY",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"opacity",void 0);class PresentationElement extends UiElement{propertyChangedCallback(t,r,i,s){if(super.propertyChangedCallback(t,r,i,s),!s)switch(t){case"stroke":case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":case"fill":e.Utils.isNull(this.stage)||this.stage.draw(this)}}}E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"stroke",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"fill",void 0),E([e.Watch({emit:!1,converter:{convert:t=>t?.split(",").map(t=>parseInt(t)).filter(t=>!Number.isNaN(t)),convertBack:t=>t?.join(",")}})],PresentationElement.prototype,"dashArray",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],PresentationElement.prototype,"lineWidth",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"lineJoin",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"lineCap",void 0);class ShapeElement extends PresentationElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i&&"data"===t)this.stage?.draw(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.recomputeShape()}recomputeShape(){const{pathData:t,vertices:e,boundingRect:r}=this.getShapeGeometry();this.#n=e,this.#a=r,this.data=t}get pathData(){return this.data}#a;get boundingRect(){return this.#a}#n;get vertices(){return this.#n}}E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ShapeElement.prototype,"data",void 0);var N=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let _=class PacemGroupElement extends PresentationElement{validate(t){return t instanceof DrawableElement&&t.parent===this}#o=[];get childDrawables(){return this.#o}propertyChangedCallback(t,r,i,s){switch(super.propertyChangedCallback(t,r,i,s),t){case"items":case"datasource":this.#o=i||[];const t=this.stage;e.Utils.isNull(t)||t.draw(this,!0)}}};N([e.Watch({emit:!1})],_.prototype,"datasource",void 0),_=N([e.CustomElement({tagName:e.P+"-"+"2d-group"})],_);var U,P,C=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};function D(e,r,i,s,n){for(s??=0,n??=0,s%=360,n%=360;s<0;)s+=360;for(;n<s;)n+=360;return(s-n).isCloseTo(0)?function(t,e,r){const i=2*e,s=t.x,n=t.y;return{pathData:`M ${s} ${n} m ${-e},0 a ${e},${r} 0 1,1 ${i},0 a ${e},${r} 0 1,1 ${-i},0`,vertices:[],boundingRect:{x:s-e,y:n-r,width:2*e,height:2*r}}}(e,r,i):function(e,r,i,s,n){const a=Math.PI/180,o=a*s,l=a*n,c=t=>r*i/Math.sqrt(Math.pow(Math.cos(t)*i,2)+Math.pow(Math.sin(t)*r,2)),h=c(o),d=c(l),p=(t,e)=>({x:t*Math.cos(e),y:t*Math.sin(e)}),u=p(h,o),m=p(d,l),v={x:e.x+u.x,y:e.y+u.y},g={x:e.x+m.x,y:e.y+m.y};let f=t.Rect.expand(e,v,g);n<s&&(n+=360),(s<=0&&n>0||n>=360)&&(f=t.Rect.expand(f,{x:e.x+r,y:e.y})),(s<=90&&n>90||n>=450)&&(f=t.Rect.expand(f,{x:e.x,y:e.y+i})),(s<=180&&n>180||n>=540)&&(f=t.Rect.expand(f,{x:e.x-r,y:e.y})),(s<=270&&n>270||n>=630)&&(f=t.Rect.expand(f,{x:e.x,y:e.y-i}));const y=l-o>Math.PI?"1":"0";return{pathData:`M ${v.x} ${v.y} A ${r},${i} 0 ${y},1 ${g.x},${g.y} L ${e.x},${e.y} Z`,vertices:[v,g],boundingRect:f}}(e,r,i,s,n)}let S=U=class PacemEllipseElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"center":case"rx":case"ry":case"start":case"end":this.recomputeShape()}}getPathData(){const t=this.rx,r=this.ry,i=this.center,s=this.start??0,n=this.end??0;return e.Utils.isNull(i)||e.Utils.isNull(t)||e.Utils.isNull(r)?null:U.getPathData(i,t,r,s,n)}getShapeGeometry(){return D(this.center??{x:0,y:0},this.rx??0,this.ry??0,this.start,this.end)}static getPathData(t={x:NaN,y:NaN},e=NaN,r=NaN,i,s){const{pathData:n}=D(t,e,r,i,s);return n}};C([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],S.prototype,"center",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"rx",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"ry",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"start",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"end",void 0),S=U=C([e.CustomElement({tagName:e.P+"-"+"2d-ellipse"})],S);let M=P=class PacemCircleElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"center":case"radius":case"start":case"end":this.recomputeShape()}}getPathData(){const t=this.radius,r=this.center;return e.Utils.isNull(r)||e.Utils.isNull(t)?null:P.getPathData(r,t,this.start,this.end)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0;return D(t,e,e,this.start,this.end)}static getPathData(t={x:NaN,y:NaN},e=NaN,r,i){return S.getPathData(t,e,e,r,i)}};C([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],M.prototype,"center",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],M.prototype,"radius",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],M.prototype,"start",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],M.prototype,"end",void 0),M=P=C([e.CustomElement({tagName:e.P+"-"+"2d-circle"})],M);var A,k=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};function $(t){const e=t[2],r=t[4]??e,i="cut"===t[6]?O.Cut:O.Rounded;return{rx:R(e),ry:R(r),type:i}}function R(t){return{value:parseFloat(t),unit:t.endsWith("%")?"pct":"u"}}function T(t){return`${t.value}${"pct"===t.unit?"%":""}`}const W=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;var O;!function(t){t.Rounded="rounded",t.Cut="cut"}(O||(O={}));let H=A=class PacemRectElement extends ShapeElement{propertyChangedCallback(t,e,r,i){super.propertyChangedCallback(t,e,r,i),i||"x"!==t&&"y"!==t&&"w"!==t&&"h"!==t&&"r"!==t&&"cornerType"!==t||this.recomputeShape()}getPathData(){const t=this.x,r=this.y,i=this.w,s=this.h;let n=this.r??{rx:{value:0},ry:{value:0},type:O.Rounded};return e.Utils.isArray(n)||(n=[n,n,n,n]),n=n.map(t=>"number"==typeof t?{rx:{value:t},ry:{value:t},type:this.cornerType}:t),e.Utils.isNull(t)||e.Utils.isNull(r)||e.Utils.isNull(i)||e.Utils.isNull(s)?null:A.getPathData(t,r,i,s,n)}getShapeGeometry(){const t=this.x,e=this.y,r=t+this.w,i=e+this.h;return{pathData:this.getPathData(),vertices:[{x:t,y:e},{x:r,y:e},{x:r,y:i},{x:t,y:i}],boundingRect:{x:t,y:e,width:this.w,height:this.h}}}static getPathData(t=NaN,r=NaN,i=NaN,s=NaN,n=null){if(!n)return`M ${t} ${r} h ${i} v ${s} h ${-i} z`;e.Utils.isArray(n)||(n=[n,n,n,n]);const a=n[0],o=n[1],l=n[2],c=n[3],h=t=>"pct"===t.unit?.01*t.value*i:t.value,d=t=>"pct"===t.unit?.01*t.value*s:t.value,p=h(a.rx),u=d(a.ry),m=h(o.rx),v=d(o.ry),g=h(l.rx),f=d(l.ry),y=h(c.rx),x=d(c.ry);let b=`M ${t},${r+u}`;if("cut"===a.type)b+=` l ${p},${-u}`;else b+=` a ${p} ${u} 0 0 1 ${p} ${-u}`;if(b+=" h "+(i-p-m),"cut"===o.type)b+=` l ${m},${v}`;else b+=` a ${m} ${v} 0 0 1 ${m} ${v}`;if(b+=" v "+(s-v-f),"cut"===l.type)b+=` l ${-g},${f}`;else b+=` a ${g} ${f} 0 0 1 ${-g} ${f}`;if(b+=" h "+-(i-g-y),"cut"===c.type)b+=` l ${-y},${-x}`;else b+=` a ${y} ${x} 0 0 1 ${-y} ${-x}`;return b+" z"}};k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"x",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"y",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"w",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"h",void 0),k([e.Watch({emit:!1,converter:{convert:t=>function(t){let e;const r=[];for(;e=W.exec(t);)r.push(e);switch(r.length){case 1:const t=$(r[0]);return[t,t,t,t];case 4:return[$(r[0]),$(r[1]),$(r[2]),$(r[3])];default:return null}}(t),convertBack:t=>function(t){const e=t[0],r=t[1],i=t[2],s=t[3];return`${T(e.rx)},${T(e.ry)} ${T(r.rx)},${T(r.ry)} ${T(i.rx)},${T(i.ry)} ${T(s.rx)},${T(s.ry)}`}(t)}})],H.prototype,"r",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.String})],H.prototype,"cornerType",void 0),H=A=k([e.CustomElement({tagName:e.P+"-"+"2d-rect"})],H);var L,I=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let z=L=class PacemLineElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"from":case"to":this.recomputeShape()}}getShapeGeometry(){const t=this.from,r=this.to;if(e.Utils.isNull(t)||e.Utils.isNull(r))return Shape.empty();const i=t.x,s=t.y,n=r.x,a=r.y,o={x:Math.min(i,n),y:Math.min(s,a),width:Math.abs(i-n),height:Math.abs(s-a)};return{pathData:this.getPathData(),vertices:[t,r],boundingRect:o}}getPathData(){const t=this.from,r=this.to;return e.Utils.isNull(t)||e.Utils.isNull(r)?null:L.getPathData(t,r)}static getPathData(t={x:NaN,y:NaN},e={x:NaN,y:NaN}){return`M ${t.x} ${t.y} L ${e.x} ${e.y}`}};I([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],z.prototype,"from",void 0),I([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],z.prototype,"to",void 0),z=L=I([e.CustomElement({tagName:e.P+"-"+"2d-line"})],z);var j=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let G=class PacemPathElement extends ShapeElement{constructor(){super(...arguments),this.getPathData=()=>this.d}propertyChangedCallback(t,e,r,i){super.propertyChangedCallback(t,e,r,i),"d"!==t||i||this.recomputeShape()}getShapeGeometry(){return{pathData:this.getPathData(),boundingRect:null,vertices:[]}}};j([e.Watch({emit:!1,converter:e.PropertyConverters.String})],G.prototype,"d",void 0),G=j([e.CustomElement({tagName:e.P+"-"+"2d-path"})],G);var V,B=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let F=V=class PacemPolygonElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"radius":case"starIndent":case"sides":this.recomputeShape()}}getPathData(){const t=this.sides,r=this.radius,i=this.center;return e.Utils.isNull(t)||e.Utils.isNull(r)?null:V.getPathData(i,r,t,this.starIndent)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0,r=this.sides??3,i=this.starIndent;return r<3?Shape.empty():V.getShapeGeometry(t,e,r,i)}static getShapeGeometry(t,e,r,i=0){const s={x:t.x,y:t.y-e};let n=`M ${s.x} ${s.y}`;const a=[s],o=2*Math.PI/r,l=.5*o,c=i>0,h=e*Math.cos(l);for(let s=1;s<r;s++){const r=s*o,d=t.x+Math.sin(r)*e,p=t.y-Math.cos(r)*e;if(c){const e=h*(1-i),s=r-l,o=t.x+Math.sin(s)*e,c=t.y-Math.cos(s)*e;n+=` L ${o} ${c} L ${d} ${p}`,a.push({x:o,y:c})}else n+=` L ${d} ${p}`;a.push({x:d,y:p})}if(c){const e=h*(1-i),r=2*Math.PI-l,s=t.x+Math.sin(r)*e,o=t.y-Math.cos(r)*e;n+=` L ${s} ${o}`,a.push({x:s,y:o})}a.push(s);const d=2*e;return{pathData:n+" Z",vertices:a,boundingRect:{x:s.x-e,y:s.y,width:d,height:d}}}static getPathData(t,e,r,i=0){const{pathData:s}=V.getShapeGeometry(t,e,r,i);return s}};B([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],F.prototype,"sides",void 0),B([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],F.prototype,"radius",void 0),B([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],F.prototype,"center",void 0),B([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],F.prototype,"starIndent",void 0),F=V=B([e.CustomElement({tagName:e.P+"-"+"2d-polygon"})],F);var J,Y=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const X={convert:e=>{const r=t.parseAsNumericalArray(e);if(r.length%2==0){const t=[];for(let e=0;e<r.length;e+=2)t.push({x:r[e],y:r[e+1]});return t}return JSON.parse(e)},convertBack:t=>JSON.stringify(t)};let q=J=class PacemPolylineElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"points":case"closed":this.recomputeShape()}}static getShapeGeometry(t,r){if(e.Utils.isNullOrEmpty(t))return Shape.empty();let i="",s=Number.MAX_VALUE,n=Number.MAX_VALUE,a=Number.MIN_VALUE,o=Number.MIN_VALUE;for(let e=0;e<t.length;e++){const{x:r,y:l}=t[e];i+=`${0===e?"M":"L"} ${r} ${l} `,s=Math.min(s,r),a=Math.max(a,r),n=Math.min(n,l),o=Math.max(o,l)}return r&&(i+="Z"),{pathData:i,vertices:t,boundingRect:{x:s,y:n,width:a-s,height:o-n}}}getShapeGeometry(){return J.getShapeGeometry(this.points,this.closed)}getPathData(){const{pathData:t}=this.getShapeGeometry();return t}static getPathData(t,e){const{pathData:r}=J.getShapeGeometry(t,e);return r}};Y([e.Watch({emit:!1,converter:X})],q.prototype,"points",void 0),Y([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],q.prototype,"closed",void 0),q=J=Y([e.CustomElement({tagName:e.P+"-"+"2d-polyline"})],q);var K=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let Z=class PacemImageElement extends UiElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"src":case"x":case"y":case"width":case"height":this.stage?.draw(this)}}};K([e.Watch({emit:!1,converter:e.PropertyConverters.String})],Z.prototype,"src",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"x",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"y",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"width",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"height",void 0),Z=K([e.CustomElement({tagName:e.P+"-"+"2d-image"})],Z);var Q=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let tt=class PacemTextElement extends UiElement{propertyChangedCallback(t,r,i,s){if(!s)switch(t){case"text":case"color":case"fontFamily":case"fontSize":case"fontWeight":case"fontStyle":case"anchor":e.Utils.isNull(this.stage)||this.stage.draw(this)}}};Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"text",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"color",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"fontFamily",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],tt.prototype,"fontSize",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"fontWeight",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"fontStyle",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],tt.prototype,"anchor",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"textAnchor",void 0),tt=Q([e.CustomElement({tagName:e.P+"-"+"2d-text"})],tt);class AdapterUtils{static stageDispatch(t,e,r){t instanceof EventTarget&&t.dispatchEvent(new StageEvent("stage"+e,t,r,t.transformMatrix))}static isValidViewbox(r){return!e.Utils.isNullOrEmpty(r)&&t.Rect.isRect(r)&&Number.isFinite(r.x)&&Number.isFinite(r.y)&&Number.isFinite(r.width)&&Number.isFinite(r.height)}static itemDispatch(t,r,i){if(e.Utils.isNull(t?.stage))return!1;var s,n,a;i instanceof Event?n=i:s={item:t,offset:i},"string"==typeof r?a=r:(a=r.type,n=r.originalEvent);const o=t.stage.transformMatrix,l=i instanceof Event?new DrawableEvent("item"+a,t,n,o):new DragEvent("item"+a,{detail:s,cancelable:a===e.UI.DragDropEventType.Init||a===e.UI.DragDropEventType.Drag},n,o);var c=!1;if(t instanceof EventTarget){const r=i instanceof Event?new DrawableEvent(a,t,n,o):new DragEvent(a,{detail:s,cancelable:a===e.UI.DragDropEventType.Init||a===e.UI.DragDropEventType.Drag},n,o);t.dispatchEvent(r),c=r.defaultPrevented}return t.stage.dispatchEvent(l),c||l.defaultPrevented}}class Pacem2DAdapterElement extends e.PacemEventTarget{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}snapshotElement(t,r,i,s){const n=!e.Utils.isNullOrEmpty(r),a=i??(n?"image/jpeg":null),o=s??(n?.9:null);return e.Utils.snapshotElement(t,r,a,o)}}var et=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const rt="pacem:2d-canvas-scene",it="pacem:2d-parent-matrix",st=e.CustomElementUtils.setAttachedPropertyValue,nt=e.CustomElementUtils.getAttachedPropertyValue;function at(t){return"none"===t||e.Utils.isNullOrEmpty(t)}function ot(t,r){return e.Utils.isNull(t)?r:t}let lt=class PacemCanvasAdapterElement extends Pacem2DAdapterElement{constructor(){super(...arguments),this._pointer={page:{x:Number.NaN,y:Number.NaN},screen:{x:Number.NaN,y:Number.NaN},client:{x:Number.NaN,y:Number.NaN}},this._dragInitHandler=r=>{const i=this._hitTarget;if(e.Utils.isNull(i)||!s(i)||!i.draggable)return void r.preventDefault();const n=r.detail,a=i,o=i.transformMatrix??t.Matrix2D.identity,l=nt(i,it,t.Matrix2D.identity);n.data={item:a,initialTransformMatrix:o,parentMatrix:l};AdapterUtils.itemDispatch(a,r,{x:0,y:0})&&r.preventDefault()},this._draggingHandler=t=>{e.avoidHandler(t),this._dragging=!0;const r=t.detail,i=r.data,s=r.currentPosition.x-r.origin.x,n=r.currentPosition.y-r.origin.y,a={x:s*i.parentMatrix.a+i.initialTransformMatrix.e,y:n*i.parentMatrix.d+i.initialTransformMatrix.f},o=i.item.stage.transformMatrix;if(!AdapterUtils.itemDispatch(i.item,t,{x:s*o.a+o.e,y:n*o.d+o.f}))if(i.item instanceof UiElement)i.item.translateX=a.x,i.item.translateY=a.y;else{const t=i.initialTransformMatrix,r={a:t.a,b:t.b,c:t.c,d:t.d,e:a.x,f:a.y};e.Utils.extend(i.item,{transformMatrix:r})}},this._dragEndHandler=t=>{this._dragging=!1;const e=t.detail.data,r=e.item.transformMatrix;AdapterUtils.itemDispatch(e.item,t,{x:r.e,y:r.f})},this._mouseleaveHandler=t=>{if(this._dragging)return;const r=this._hitTarget;if(e.Utils.isNull(r))return;this._scopeEvent=t;const i={x:Number.NaN,y:Number.NaN};this._pointer={page:i,screen:i,client:i};const s=t.srcElement,n=nt(s,rt);this._requestDraw(n)},this._mousemoveHandler=t=>{this._scopeEvent=t,this._pointer=e.CustomEventUtils.getEventCoordinates(t);const r=t.srcElement,i=nt(r,rt);this._requestDraw(i),this._dragging||e.Utils.isNull(this._hitTarget)||AdapterUtils.stageDispatch(i,"move",t)},this._mouseDownUpHandler=t=>{this._scopeEvent=t,this._pointer=e.CustomEventUtils.getEventCoordinates(t);const r=t.target;if(r instanceof HTMLCanvasElement){const i=nt(r,rt),s=this._hitTarget,n=t.type.replace(/^(mouse|touch)/,""),a="end"===n?"click":n,o=y(i);e.CustomEventUtils.matchModifiers(t,o.clickModifiers)&&(e.Utils.isNull(s)||s.stage!==i?AdapterUtils.stageDispatch(i,a,t):AdapterUtils.itemDispatch(s,a,t))}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(t,e,r,i){const s=this._scenes;if(s.has(t)){const n=s.get(t).context.canvas;return this.snapshotElement(n,e,r,i)}return Promise.resolve(null)}getCanvas(t){const e=this._scenes;if(e.has(t)){return e.get(t).context.canvas}return null}_getScreenInverseMatrix(e,r){return t.Matrix2D.invert({a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+r.x,f:e.f+r.y})}getTransformMatrix(e){const r=this._scenes;return r.has(e)?r.get(e).screenInverseMatrix:t.Matrix2D.identity}#l;viewActivatedCallback(){super.viewActivatedCallback();const t=this.#l=document.createElement(e.P+"-drag-drop");t.mode=e.UI.DragDataMode.Copy,t.dropBehavior=e.UI.DropBehavior.None,t.spillBehavior=e.UI.DropTargetMissedBehavior.None;const r=document.createElement("div");r.hidden=!0,t.floater=r;e.CustomElementUtils.findAncestorShell(this).appendChild(t),t.addEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.addEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.addEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const t=this.#l;e.Utils.isNull(t)||(t.removeEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.removeEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.removeEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1),t.remove()),super.disconnectedCallback()}invalidateSize(r,i){const s=this._scenes;if(!e.Utils.isNull(r)&&!e.Utils.isNullOrEmpty(i)&&s.has(r)){const n=s.get(r),a=n.context;a.canvas.width=i.width,a.canvas.height=i.height;const o=n.offset=e.Utils.offsetRect(a.canvas),l={x:0,y:0,width:i.width,height:i.height},c=r.aspectRatio,h=r.viewbox;if(AdapterUtils.isValidViewbox(h)){let e="contain",r="center",i="middle";if("object"==typeof c){switch(e=c.slice?"cover":"contain",c.x){case"min":r="left";break;case"max":r="right"}switch(c.y){case"min":i="top";break;case"max":i="bottom"}}const s=t.Rect.findTransform({x:0,y:0,width:h.width,height:h.height},l,e,r,i),a=t.Matrix2D.translate(s,{x:-s.a*h.x,y:-s.a*h.y});n.transformMatrix=a,n.screenInverseMatrix=this._getScreenInverseMatrix(a,o)}else n.transformMatrix=t.Matrix2D.identity}this._requestDraw(r)}getHitTarget(t){const r=this._hitTarget;return e.Utils.isNull(r)||r.stage!==t?null:r}initialize(r){if(e.Utils.isNull(r))throw"Provided scene is null or undefined.";const i=this._scenes,s=this.#l;if(i.has(r)){const t=i.get(r).context.canvas;return e.Utils.isNull(s)||s.register(t),t}const n=r.stage;n.innerHTML="";const a=document.createElement("canvas");a.setAttribute("part","stage"),st(a,rt,r);const o=a.getContext("2d");return a.addEventListener("mousemove",this._mousemoveHandler,!1),a.addEventListener("mouseleave",this._mouseleaveHandler,!1),a.addEventListener("touchstart",this._mouseDownUpHandler,{passive:!0}),a.addEventListener("touchmove",this._mouseDownUpHandler,{passive:!0}),a.addEventListener("touchend",this._mouseDownUpHandler,{passive:!0}),a.addEventListener("click",this._mouseDownUpHandler,!1),a.addEventListener("mousedown",this._mouseDownUpHandler,!1),a.addEventListener("mouseup",this._mouseDownUpHandler,!1),n.appendChild(a),i.set(r,{context:o,transformMatrix:t.Matrix2D.identity,offset:e.Utils.offsetRect(a),screenInverseMatrix:t.Matrix2D.identity}),e.Utils.isNull(s)||s.register(a),a}dispose(t){const r=this._scenes;if(r.has(t)){var i=r.get(t).context.canvas;const s=this.#l;e.Utils.isNull(s)||s.unregister(i),i.removeEventListener("click",this._mouseDownUpHandler,!1),i.removeEventListener("touchend",this._mouseDownUpHandler,!1),i.removeEventListener("mousedown",this._mouseDownUpHandler,!1),i.removeEventListener("mouseup",this._mouseDownUpHandler,!1),i.removeEventListener("touchstart",this._mouseDownUpHandler),i.removeEventListener("mouseleave",this._mouseleaveHandler,!1),i.removeEventListener("mousemove",this._mousemoveHandler,!1),i.remove(),r.delete(t)}}_requestDraw(t){const e=this._handles;e.has(t)&&cancelAnimationFrame(e.get(t));e.set(t,(()=>(this.draw(t),requestAnimationFrame(()=>{})))())}#c;draw(t){const r=this._scenes,i=this._handles;if(!e.Utils.isNull(t)){if(t.adapter!==this)return void(r.has(t)&&(r.delete(t),i.get(t)));if(!r.has(t))return void this.initialize(t);i.has(t)&&cancelAnimationFrame(i.get(t));const s=this._hitTarget,n=t.datasource||[];this._hitTarget=null;const a=r.get(t),o=a.context,l=o.canvas;this.#c=getComputedStyle(l),o.resetTransform(),o.clearRect(0,0,l.width,l.height);const c=a.transformMatrix;o.setTransform(c);const h=this._pointer,d=a.offset,p=Number.isNaN(h.page.x)||Number.isNaN(h.page.y)?null:{x:h.page.x-d.x,y:h.page.y-d.y};for(let e of n)this._draw(t,o,e,{transformMatrix:c},p);const u=this._hitTarget;u!=s&&(e.Utils.isNull(s)||(s instanceof Element&&s.dispatchEvent(new DrawableEvent("out",s,this._scopeEvent,c)),t.dispatchEvent(new DrawableEvent("itemout",s,this._scopeEvent,c))),e.Utils.isNull(u)||(u instanceof Element&&u.dispatchEvent(new DrawableEvent("over",u,this._scopeEvent,c)),t.dispatchEvent(new DrawableEvent("itemover",u,this._scopeEvent,c))))}}_draw(r,n,a,o,u){if(a.stage??=r,i(a)&&a.hide)return;let m;s(a)&&a.draggable&&!a.hide&&!a.inert&&st(a,it,n.getTransform().inverse()),s(a)&&(m=a.transformMatrix,e.Utils.isNull(m)||t.Matrix2D.isIdentity(m)||n.transform(m.a,m.b,m.c,m.d,m.e,m.f));let v=o;if(l(a)&&(v=PresentationState.combine(a,o,n.getTransform()),this._setPresentationState(n,v)),c(a)||a instanceof ShapeElement)this._drawShape(n,a,u);else if(d(a)||a instanceof tt)this._drawText(n,a,u);else if(p(a)||a instanceof Z)this._drawImage(n,a,u);else if(h(a)||a instanceof _)for(let t of a.childDrawables||[])this._draw(r,n,t,v,u);s(a)&&a.draggable&&!a.hide&&!a.inert&&st(a,"pacem:2d-world-matrix",n.getTransform().inverse()),this._setPresentationState(n,o)}_setPresentationState(t,r){if(t.setTransform(r.transformMatrix),e.Utils.isNullOrEmpty(r.stroke)||at(r.stroke)?t.strokeStyle="transparent":t.strokeStyle=r.stroke,e.Utils.isNullOrEmpty(r.lineWidth)?t.lineWidth=0:t.lineWidth=r.lineWidth,e.Utils.isNullOrEmpty(r.dashArray)?t.setLineDash([]):t.setLineDash(r.dashArray),e.Utils.isNullOrEmpty(r.lineCap)?t.lineCap="butt":t.lineCap=r.lineCap,e.Utils.isNullOrEmpty(r.lineJoin)?t.lineJoin="miter":t.lineJoin=r.lineJoin,"object"!=typeof r.fill||e.Utils.isNullOrEmpty(r.fill))e.Utils.isNullOrEmpty(r.fill)||"string"!=typeof r.fill||at(r.fill)?t.fillStyle="transparent":t.fillStyle=r.fill;else{const{stops:e}=r.fill;let i;if(a(r.fill)){const{start:e,end:s}=r.fill;i=t.createLinearGradient(e.x,e.y,s.x,s.y)}else{if(!o(r.fill))throw new Error("Unmanaged gradient type.");{const{center:e,radius:s}=r.fill;i=t.createRadialGradient(e.x,e.y,s,e.x,e.y,s)}}for(let t of e)i.addColorStop(t.offset,t.color);t.fillStyle=i}e.Utils.isNullOrEmpty(r.opacity)?t.globalAlpha=1:t.globalAlpha=r.opacity}_drawImage(t,r,i){const s="pacem:2d-canvas-imagesrc";let n=nt(r,s);const a=()=>{let s=n.naturalWidth,a=n.naturalHeight,o=r.width,l=r.height;if(o>0&&l>0||(o>0?l=a*o/s:l>0?o=s*l/a:(o=s,l=a)),!this._dragging&&!r.inert&&!e.Utils.isNull(i)){const e=new Path2D(`M ${r.x} ${r.y} h ${o} v ${l} H ${r.x} Z`);t.isPointInPath(e,i.x,i.y)&&(this._hitTarget=r)}t.globalAlpha=ot(r.opacity,1),t.drawImage(n,r.x,r.y,o,l)};e.Utils.isNull(n)?(n=new Image,n.src=r.src,n.onload=()=>{st(r,s,n),a()}):a()}_drawText(t,r,i){const s=this.DefaultShapeValues,n=t.fillStyle=ot(r.color,s.stroke);t.getTransform();const a=r.fontSize>0?`${r.fontSize}px`:this.#c.fontSize,o=r.fontStyle||this.#c.fontStyle,l=r.fontWeight||this.#c.fontWeight;t.font=`${o} ${l} ${a} ${r.fontFamily??this.#c.fontFamily}`,t.textAlign="middle"===r.textAnchor?"center":r.textAnchor,t.fillText(r.text,r.anchor.x,r.anchor.y),t.globalAlpha=ot(r.opacity,1);const c=!at(n);if(!this._dragging&&!r.inert&&!e.Utils.isNull(i)){const e=t.measureText(r.text),s=e.width,n=e.actualBoundingBoxAscent+e.actualBoundingBoxDescent,a=r.anchor.x-e.actualBoundingBoxLeft,o=r.anchor.y-e.actualBoundingBoxAscent,l=new Path2D(`M ${a} ${o} h ${s} v ${n} H ${a} z`);c&&t.isPointInPath(l,i.x,i.y)&&(this._hitTarget=r)}}_drawShape(t,r,i){if(e.Utils.isNullOrEmpty(r?.pathData))return;t.beginPath();const s="string"!=typeof t.fillStyle||!at(t.fillStyle),n="string"!=typeof t.strokeStyle||!at(t.strokeStyle);var a=new Path2D(r.pathData);this._dragging||r.inert||e.Utils.isNull(i)||(s&&t.isPointInPath(a,i.x,i.y)||n&&t.isPointInStroke(a,i.x,i.y))&&(this._hitTarget=r),n&&t.stroke(a),s&&t.fill(a);const o=!e.Utils.isNullOrEmpty(r.vertices)&&r.vertices.length>1,l=!e.Utils.isNull(r.markerEnd),c=!e.Utils.isNull(r.markerStart),h=!e.Utils.isNull(r.markerMid);if((l||h||c)&&(o||this.log(e.Logging.LogLevel.Warn,"Not enough vertices were explicited in order to make markers renderable.")),o){const e=t.getTransform();if(c){const e=r.markerEnd,i=r.vertices[1],s=r.vertices[0],n=Math.atan2(s.y-i.y,s.x-i.x);this._drawMarker(t,e,s,n)}if(h){const i=r.markerEnd;for(let s=1;s<r.vertices.length-1;s++){t.setTransform(e);const n=r.vertices[s],a=r.vertices[s+1],o=Math.atan2(a.y-n.y,a.x-n.x);this._drawMarker(t,i,a,o)}}if(l){t.setTransform(e);const i=r.markerEnd,s=r.vertices[r.vertices.length-2],n=r.vertices[r.vertices.length-1],a=Math.atan2(n.y-s.y,n.x-s.x);this._drawMarker(t,i,n,a)}}}_drawMarker(t,r,i,s){const n=this.DefaultShapeValues,a=r.ref?.x||0,o=r.ref?.y||0,l=(r.width||1)*t.lineWidth,c=(r.width||1)*t.lineWidth;let h=r.viewbox,d={x:0,y:0,width:l,height:c};e.Utils.isNull(h)&&(h=d);const p={a:d.width/h.width,d:d.height/h.height};t.translate(i.x,i.y),t.rotate(s),t.scale(p.a,p.d),t.translate(-a,-o),t.fillStyle=ot(r.fill,n.fill),t.strokeStyle=ot(r.stroke,n.stroke);const u=!at(r.fill),m=!at(r.stroke);var v=new Path2D(r.pathData);u&&t.fill(v),m&&t.stroke(v)}};lt=et([e.CustomElement({tagName:e.P+"-"+"2d-canvas-adapter"})],lt);var ct=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const ht="http://www.w3.org/2000/svg",dt="pacem:2-svg-drawable",pt="pacem:2d-svg-stage",ut=e.CustomElementUtils.getAttachedPropertyValue,mt=e.CustomElementUtils.setAttachedPropertyValue,vt=e.CustomElementUtils.deleteAttachedPropertyValue;function gt(t,r){return e.Utils.isNull(t)?r:t}function ft(t,e,r){return r>=t.children.length?(t.appendChild(e),null):t.replaceChild(e,t.children.item(r))}let yt=class PacemSvgAdapterElement extends Pacem2DAdapterElement{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=e=>{const r=e.detail,i=r.element,s=ut(i,dt),n=s.stage.transformMatrix,a=s.transformMatrix??t.Matrix2D.identity;r.data={stageTransformMatrix:n,item:s,initialTransformMatrix:a};AdapterUtils.itemDispatch(s,e,{x:0,y:0})&&e.preventDefault()},this._draggingHandler=t=>{e.avoidHandler(t),this.#h=!0;const r=t.detail.element,i=t.detail.data,s=t.detail,n=(s.currentPosition.x-s.origin.x)*i.stageTransformMatrix.a,a=(s.currentPosition.y-s.origin.y)*i.stageTransformMatrix.d,o=n+i.initialTransformMatrix.e,l=a+i.initialTransformMatrix.f,c={x:n+i.stageTransformMatrix.e,y:a+i.stageTransformMatrix.f};if(!AdapterUtils.itemDispatch(i.item,t,c)){const t=i.initialTransformMatrix;r.style.transform=`matrix(${t.a},${t.b},${t.c},${t.d},${o},${l})`}},this._dragEndHandler=t=>{this.#h=!1;const r=t.detail,i=r.element,s=r.data,n=e.Utils.deserializeTransform(i.style),a={x:n.e,y:n.f};if(s.item instanceof UiElement)s.item.translateX=a.x,s.item.translateY=a.y;else{const t=s.initialTransformMatrix,r={a:t.a,b:t.b,c:t.c,d:t.d,e:a.x,f:a.y};e.Utils.extend(s.item,{transformMatrix:r})}i.style.transform="",AdapterUtils.itemDispatch(s.item,t,a)},this._mouseleaveHandler=t=>{if(this.#h)return;const r=this._hitTarget;e.Utils.isNull(r)||(this._hitTarget=null,e.Utils.isNull(r)||(this.#l.unregister(this._items.get(r)),AdapterUtils.itemDispatch(r,"out",t)))},this._mousemoveHandler=t=>{var r=e.CustomEventUtils.getEventCoordinates(t).client;if(!this.#h){var i=null;t.target.getRootNode().elementsFromPoint(r.x,r.y).find(t=>(i=ut(t,dt))&&!i.inert);var s=this._hitTarget,n=i;(e.Utils.isNull(i&&i.stage)||!this._scenes.has(i.stage)||i.inert)&&(n=null);const a=this._hitTarget=n;if(n!==s&&(e.Utils.isNull(s)||(this.#l.unregister(this._items.get(s)),AdapterUtils.itemDispatch(s,"out",t)),e.Utils.isNull(n)||(n.draggable&&this.#l.register(this._items.get(n)),AdapterUtils.itemDispatch(n,"over",t))),e.Utils.isNull(a)){const r=t.currentTarget,i=ut(r,pt);e.Utils.isNull(i)||AdapterUtils.stageDispatch(i,"move",t)}}},this._mouseDownUpHandler=t=>{const r=t.currentTarget;if(r instanceof SVGSVGElement){const i=ut(r,pt),s=this._hitTarget,n=t.type.replace(/^mouse/,""),a=y(i);e.CustomEventUtils.matchModifiers(t,a.clickModifiers)&&(e.Utils.isNull(s)||s.stage!==i?AdapterUtils.stageDispatch(i,n,t):AdapterUtils.itemDispatch(s,n,t))}},this._scenes=new WeakMap,this._markers=new WeakMap,this._gradients=new WeakMap,this._items=new WeakMap}snapshot(t,e,r,i){if(this._scenes.has(t)){const s=this._scenes.get(t);return this.snapshotElement(s,e,r,i)}return Promise.resolve(null)}getTransformMatrix(e){const r=this._scenes;return r.has(e)?r.get(e).getScreenCTM().inverse():t.Matrix2D.identity}#l;viewActivatedCallback(){super.viewActivatedCallback();const t=this.#l=document.createElement(e.P+"-drag-drop");t.mode=e.UI.DragDataMode.Self;e.CustomElementUtils.findAncestorShell(this).appendChild(t),t.addEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.addEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.addEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const t=this.#l;e.Utils.isNull(t)||(t.removeEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.removeEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.removeEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1),t.remove()),super.disconnectedCallback()}invalidateSize(t,r){const i=this._scenes;if(!e.Utils.isNull(t)&&!e.Utils.isNullOrEmpty(r)&&i.has(t)){var s=i.get(t);s.setAttribute("width",r.width+""),s.setAttribute("height",r.height+"");const n=t.viewbox,a=t.aspectRatio;AdapterUtils.isValidViewbox(n)?s.setAttribute("viewBox",`${n.x} ${n.y} ${n.width} ${n.height}`):s.removeAttribute("viewBox"),e.Utils.isNullOrEmpty(a)||"string"==typeof a?s.removeAttribute("preserveAspectRatio"):s.setAttribute("preserveAspectRatio",`xM${a.x.substring(1)}YM${a.y.substring(1)} ${a.slice?"slice":"meet"}`)}}initialize(t){if(e.Utils.isNull(t))throw"Provided scene is null or undefined.";const r=this._scenes;if(r.has(t))return r.get(t);const i=t.stage;i.innerHTML="",this._items=new WeakMap;var s=document.createElementNS(ht,"svg");return s.setAttribute("part","stage"),mt(s,pt,t),i.appendChild(s),r.set(t,s),s.addEventListener("mousemove",this._mousemoveHandler,!1),s.addEventListener("click",this._mouseDownUpHandler,!1),s.addEventListener("mousedown",this._mouseDownUpHandler,!1),s.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.addEventListener("mouseleave",this._mouseleaveHandler,!1),s}dispose(t){const e=this._scenes;if(e.has(t)){var r=e.get(t);r.removeEventListener("mousemove",this._mousemoveHandler),r.removeEventListener("click",this._mouseDownUpHandler),r.removeEventListener("mousedown",this._mouseDownUpHandler),r.removeEventListener("mouseup",this._mouseDownUpHandler),r.removeEventListener("mouseleave",this._mouseleaveHandler),vt(r,pt),r.remove(),e.delete(t)}}getHitTarget(t){return this._hitTarget}draw(t,r,i=!1){const s=this._scenes,n=this._items;if(!e.Utils.isNull(t))if(t.adapter===this){s.has(t)||this.initialize(t);var a=t.datasource,o=!0,l=s.get(t);!e.Utils.isNull(r)&&n.has(r)&&(a=[r],l=n.get(r).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(t,l,a||[],o,i)}else s.has(t)&&s.delete(t)}#h;_hasItems(t){return h(t)}_disposeSvg(t){if(!e.Utils.isNull(t)){var r=ut(t,dt);vt(t,dt),this._items.delete(r)}}_draw(r,n,a,o,h){const u=this._items;let m=0;if(n.firstElementChild instanceof SVGDefsElement&&m++,!e.Utils.isNullOrEmpty(a))for(let v of a){let a;if(v.stage??=r,u.has(v)?(a=u.get(v),a.parentNode!==n&&this._disposeSvg(ft(n,a,m))):(a=this._buildSVGElement(v),mt(a,dt,v),this._disposeSvg(ft(n,a,m)),u.set(v,a)),i(v)&&(v.hide?a.setAttribute("display","none"):a.removeAttribute("display"),a.style.transform=""),c(v)){const t=a;t.setAttribute("d",gt(v.pathData,"M0,0"));for(let{marker:e,suffix:r}of[{marker:v.markerStart,suffix:"start"},{marker:v.markerEnd,suffix:"end"},{marker:v.markerMid,suffix:"mid"}])if(e){const i=this._ensureMarker(n,e);t.setAttribute("marker-"+r,`url(#${i.id})`)}else t.removeAttribute("marker-"+r)}else if(d(v)){const t=a;t.textContent=v.text,t.style.fill=e.Utils.isNullOrEmpty(v.color)?"":v.color,t.style.fontFamily=e.Utils.isNullOrEmpty(v.fontFamily)?"":v.fontFamily,t.style.fontSize=e.Utils.isNull(v.fontSize)?"":v.fontSize+"px",e.Utils.isNullOrEmpty(v.fontWeight)||(t.style.fontWeight=v.fontWeight),e.Utils.isNullOrEmpty(v.fontStyle)||(t.style.fontStyle=v.fontStyle),t.setAttribute("text-anchor",gt(v.textAnchor,"start")),e.Utils.isNull(v.anchor)?(t.removeAttribute("x"),t.removeAttribute("y")):(t.setAttribute("x",v.anchor.x.toString()),t.setAttribute("y",v.anchor.y.toString()))}else if(p(v)){const t=a;t.setAttribute("href",v.src),t.setAttribute("preserveAspectRatio","none"),v.width>0?t.setAttribute("width",""+v.width):t.removeAttribute("width"),v.height>0?t.setAttribute("height",""+v.height):t.removeAttribute("height"),e.Utils.isNull(v.x)?t.removeAttribute("x"):t.setAttribute("x",""+v.x),e.Utils.isNull(v.y)?t.removeAttribute("y"):t.setAttribute("y",""+v.y)}if(s(v)){const r=v.transformMatrix;e.Utils.isNull(r)||t.Matrix2D.isIdentity(r)?a.removeAttribute("transform"):a.setAttribute("transform",`matrix(${r.a} ${r.b} ${r.c} ${r.d} ${r.e} ${r.f})`);const i=gt(v.opacity,1);1===i?a.removeAttribute("opacity"):a.setAttribute("opacity",""+i)}if(l(v)){if(e.Utils.isNullOrEmpty(v.fill))a.removeAttribute("fill");else if("string"==typeof v.fill)a.setAttribute("fill",v.fill);else{const t=this._ensureGradient(n,v.fill);a.setAttribute("fill",`url(#${t.id})`)}e.Utils.isNullOrEmpty(v.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",v.stroke),e.Utils.isNullOrEmpty(v.dashArray)?a.removeAttribute("stroke-dasharray"):a.setAttribute("stroke-dasharray",v.dashArray.join(" ")),e.Utils.isNullOrEmpty(v.lineCap)?a.removeAttribute("stroke-linecap"):a.setAttribute("stroke-linecap",v.lineCap),e.Utils.isNullOrEmpty(v.lineJoin)?a.removeAttribute("stroke-linejoin"):a.setAttribute("stroke-linejoin",v.lineJoin),e.Utils.isNullOrEmpty(v.lineWidth)?a.removeAttribute("stroke-width"):a.setAttribute("stroke-width",""+v.lineWidth)}v.inert?a.style.pointerEvents="none":a.style.pointerEvents="",(o||h)&&this._hasItems(v)&&this._draw(r,a,v.childDrawables,!0,h),m++}if(o)for(let t=n.children.length-1;t>=m;t--){const e=n.children.item(t);this._disposeSvg(e),e.remove()}}_buildSVGElement(t){return c(t)||t instanceof ShapeElement?document.createElementNS(ht,"path"):d(t)||t instanceof tt?document.createElementNS(ht,"text"):p(t)||t instanceof Z?document.createElementNS(ht,"image"):document.createElementNS(ht,"g")}_ensureGradient(t,r){const i=this._gradients;i.has(t)||i.set(t,new WeakMap);const s=i.get(t),n=a(r),l=o(r);if(s.has(r)){const t=s.get(r);(n&&t instanceof SVGLinearGradientElement||l&&t instanceof SVGRadialGradientElement)&&(t.remove(),s.delete(r))}if(!s.has(r)){let i,a=t;for(;e.Utils.isNull(i=a.querySelector(":scope > defs"));){const t=a.parentElement;if(!(t instanceof SVGElement))break;a=t}if(e.Utils.isNull(i))throw new Error("Must provide a <defs> element.");var c=null;if(n)c=document.createElementNS(ht,"linearGradient");else{if(!o(r))throw new Error("Unmanaged gradient type.");c=document.createElementNS(ht,"radialGradient")}c.setAttribute("gradientUnits","userSpaceOnUse"),c.setAttribute("id",`grad-${e.Utils.uniqueCode()}`),i.appendChild(c),s.set(r,c)}const h=s.get(r);n?(h.setAttribute("x1",r.start.x.toString()),h.setAttribute("y1",r.start.y.toString()),h.setAttribute("x2",r.end.x.toString()),h.setAttribute("y2",r.end.y.toString())):l&&(h.setAttribute("cx",r.center.x.toString()),h.setAttribute("cy",r.center.y.toString()),h.setAttribute("r",r.radius.toString()));let d=0;for(let t of r.stops){for(;h.children.length<=d;){const t=document.createElementNS(ht,"stop");h.appendChild(t)}const r=h.children.item(d);r.setAttribute("offset",100*t.offset+"%"),r.setAttribute("stop-color",t.color),e.Utils.isNull(t.opacity)||r.setAttribute("stop-opacity",t.opacity.toString()),d++}for(;h.children.length>r.stops.length;){const t=h.children.item(h.children.length-1);h.removeChild(t)}return h}_ensureMarker(t,r){const i=this._markers;i.has(t)||i.set(t,new WeakMap);const s=i.get(t);if(!s.has(r)){const i=document.createElementNS(ht,"marker");s.set(r,i);const n=document.createElementNS(ht,"path");i.appendChild(n),i.setAttribute("id","mark"+e.Utils.uniqueCode());let a,o=t;for(;e.Utils.isNull(a=o.querySelector(":scope > defs"));){const t=o.parentElement;if(!(t instanceof SVGElement))break;o=t}if(e.Utils.isNull(a))throw new Error("Must provide a <defs> element.");a.appendChild(i)}const n=s.get(r),a=n.firstElementChild;return n.setAttribute("orient","auto-start-reverse"),e.Utils.isNullOrEmpty(r.viewbox)?n.removeAttribute("viewBox"):n.setAttribute("viewBox",`${r.viewbox.x} ${r.viewbox.y} ${r.viewbox.width} ${r.viewbox.height}`),e.Utils.isNullOrEmpty(r.ref)?(n.removeAttribute("refX"),n.removeAttribute("refY")):(n.setAttribute("refX",r.ref.x.toString()),n.setAttribute("refY",r.ref.y.toString())),r.height>0?n.setAttribute("markerHeight",r.height.toString()):n.removeAttribute("markerHeight"),r.width>0?n.setAttribute("markerWidth",r.width.toString()):n.removeAttribute("markerWidth"),a.setAttribute("d",r.pathData),e.Utils.isNullOrEmpty(r.fill)?a.removeAttribute("fill"):a.setAttribute("fill",r.fill),e.Utils.isNullOrEmpty(r.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",r.stroke),n}};yt=ct([e.CustomElement({tagName:e.P+"-"+"2d-svg-adapter"})],yt);var xt=Object.freeze({__proto__:null,AdapterUtils:AdapterUtils,get CornerType(){return O},DrawableElement:DrawableElement,get Pacem2DElement(){return x},get PacemCanvasAdapterElement(){return lt},get PacemCircleElement(){return M},get PacemEllipseElement(){return S},get PacemGroupElement(){return _},get PacemImageElement(){return Z},get PacemLineElement(){return z},get PacemPathElement(){return G},get PacemPolygonElement(){return F},get PacemPolylineElement(){return q},get PacemRectElement(){return H},get PacemSvgAdapterElement(){return yt},get PacemTextElement(){return tt},PresentationElement:PresentationElement,ShapeElement:ShapeElement,UiElement:UiElement,getStageOptions:y}),bt=Object.freeze({__proto__:null,Drawing:xt}),Et=Object.freeze({__proto__:null,Components:bt,Drawing:u});t.DeepMerger.merge(Et)}(Pacem,Pacem);
6
+ !function(t,e){"use strict";function r(t){return!e.Utils.isNull(t)&&"stage"in t}function i(t){return r(t)}function s(t){return"stops"in t&&e.Utils.isArray(t.stops)}function n(e){return s(e)&&"start"in e&&t.Point.isPoint(e.start)&&"end"in e&&t.Point.isPoint(e.end)}function a(e){return s(e)&&"center"in e&&t.Point.isPoint(e.center)&&"radius"in e&&"number"==typeof e.radius}class PresentationState{static combine(e,r,i=null){return{opacity:(e.opacity??1)*(r.opacity??1),transformMatrix:i??t.Matrix2D.multiply(r.transformMatrix,e.transformMatrix),dashArray:e.dashArray??r.dashArray,fill:e.fill??r.fill,lineCap:e.lineCap??r.lineCap,lineJoin:e.lineJoin??r.lineJoin,lineWidth:e.lineWidth??r.lineWidth,stroke:e.stroke??r.stroke}}}function o(t){return i(t)&&("fill"in t||"transformMatrix"in t||"stroke"in t||"lineJoin"in t||"dashArray"in t||"lineWidth"in t||"opacity"in t||"lineCap"in t)}function l(t){return i(t)&&"pathData"in t}function c(t){return i(t)&&"childDrawables"in t&&!e.Utils.isNullOrEmpty(t.childDrawables)}function h(t){return i(t)&&"text"in t&&"string"==typeof t.text}function d(t){return i(t)&&"src"in t&&"string"==typeof t.src}class UI2DEvent extends e.CustomUIEvent{constructor(t,e,r,i){super(t,e,r),this.#t=i}#t;get transformMatrix(){return this.#t}project(e={x:this.screenX,y:this.screenY}){return t.Matrix2D.multiply(e,this.#t)}}class Shape{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}}class DragEvent extends UI2DEvent{}class DrawableEvent extends UI2DEvent{constructor(t,e,r,i){super(t,{detail:e,bubbles:!0,cancelable:!0},r,i)}}class StageEvent extends UI2DEvent{constructor(t,e,r,i=e.transformMatrix){super(t,{detail:e,bubbles:!0,cancelable:!0},r,i)}}var p=Object.freeze({__proto__:null,DragEvent:DragEvent,DrawableEvent:DrawableEvent,PresentationState:PresentationState,Shape:Shape,StageEvent:StageEvent,UI2DEvent:UI2DEvent,isDrawable:r,isGroup:c,isImage:d,isLinearGradient:n,isPresentationObject:o,isRadialGradient:a,isShape:l,isText:h,isUiObject:i});const u="2d";var m=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const v=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,g={convert:t=>{const e=v.exec(t);return e&&e.length>=4?{x:e[1].toLowerCase(),y:e[3].toLowerCase(),slice:"slice"===e[6]}:"none"},convertBack:t=>e.Utils.isNull(t)||"string"==typeof t?"none":`xM${t.x.substring(1)}YM${t.y.substring(1)} ${t.slice?"slice":"meet"}`},f={panControl:!0,zoomControl:!0,panModifiers:[e.EventKeyModifier.AltKey],zoomModifiers:[e.EventKeyModifier.AltKey],clickModifiers:[]};function y(t){const r=t instanceof x?t.options:{};return e.Utils.extend({},f,r)}let x=class Pacem2DElement extends e.Components.PacemItemsContainerElement{constructor(){super(...arguments),this.#t=t.Matrix2D.identity,this.#e=f,this._resizeHandler=t=>{this.#r={x:t.detail.left,y:t.detail.top,width:t.detail.width,height:t.detail.height};const r=this.adapter;e.Utils.isNull(r)||this._invalidateSize()},this._zoomHandler=t=>{if(!t.isTrusted)return;const r=this.#e;if(r.zoomControl&&e.CustomEventUtils.matchModifiers(t,r.zoomModifiers)){e.avoidHandler(t);const r=1+.1*(t.deltaY<0?-1:1),i=e.Utils.offsetRect(t.currentTarget),s={x:t.clientX,y:t.clientY};this._zoom(r,i,s)}},this._panHandler=t=>{const r=this.#i,i=this._getPanPoint(t);if(!e.Utils.isNullOrEmpty(r&&r.point)&&!e.Utils.isNull(i)){e.avoidHandler(t);const s=r.factor,n=r.box,a=r.point;this.viewbox={x:n.x-s*(i.x-a.x),y:n.y-s*(i.y-a.y),width:n.width,height:n.height}}},this._panStartHandler=t=>{if(!this.#e.panControl)return;if(!t.isTrusted)return;const r=this.#r,i=this.viewbox||{x:0,y:0,width:r.width,height:r.height},s=this._getPanPoint(t);if(s){e.avoidHandler(t),this._stage.style.pointerEvents="none";const n=this._getActualAspectRatio(),a=i.width/r.width,o=i.height/r.height,l=n.slice?Math.min(a,o):Math.max(a,o);this.#i={point:s,box:i,factor:l}}},this._panEndHandler=t=>{this._stage.style.pointerEvents="",this.#i=null}}get stage(){return this._stage}snapshot(t,r,i){const s=this.adapter;return e.Utils.isNull(s)?Promise.resolve(null):s.snapshot(this,t,r,i)}#s;#t;get transformMatrix(){return this.#t}_transformMatrixScale(){const r=this.#r||e.Utils.offsetRect(this._stage);var i=this.#s||r;const s=this.viewbox||i,n=this.aspectRatio||"none",a="none"===n?"stretch":n.slice?"cover":"contain";return t.Rect.findTransform(s,i,a).a}validate(t){return t instanceof DrawableElement&&e.Utils.isNull(t.parent)}draw(t,r=!1){const i=this.adapter;if(!this.disabled&&!e.Utils.isNull(i)){let e=new CustomEvent("predraw",{cancelable:!0});this.dispatchEvent(e),e.defaultPrevented||(i.draw(this,t,r),this.dispatchEvent(new CustomEvent("draw")))}}_drawDebounced(t,r=!1){!e.Utils.isNull(t)&&c(t)?this.draw(t,r):this.draw(t)}requestDraw(t,e=!1){this._drawDebounced(t,e)}_buildUpDatasourceFromDOM(){this.datasource=(this.items||[]).slice()}#e;#r;_getActualAspectRatio(){const t=this.aspectRatio||"none";return{x:"none"===t?"mid":t.x,y:"none"===t?"mid":t.y,slice:"none"!==t&&t.slice}}_zoomFromValue(r){const i=this.#r;if(e.Utils.isNull(i))return;const s=i,n=this.#s||s,a=this.viewbox||n,o=this.aspectRatio||"none",l="none"===o?"stretch":o.slice?"cover":"contain",c=t.Rect.findTransform(a,s,l),h=t.Rect.findTransform(n,s,l),d=c.a/(h.a*r);this._zoom(d)}_zoom(t,r,i){e.Utils.isNull(r)&&(r=e.Utils.offsetRect(this._stage)),e.Utils.isNull(i)&&(i={x:r.x+.5*r.width,y:r.y+.5*r.height});const s=this.#r,n=this.viewbox||s,a=Math.min(n.width,n.height),o=a*t,l=a*t;if(o>0&&l>0){const t=this._getActualAspectRatio(),e=t.x,s=t.y,a=t.slice,c=n.width/n.height,h=a?Math.max(r.width,r.height):Math.min(r.width,r.height);let d,p;switch(e){case"mid":d=(o-n.width)*(i.x-r.x-.5*(r.width-h))/(h*c);break;case"max":d=(o-n.width)*(i.x-r.x-(r.width-h))/(h*c);break;default:d=(o-n.width)*(i.x-r.x)/(h*c)}switch(s){case"mid":p=(l-n.height)*(i.y-r.y-.5*(r.height-h))/(h*c);break;case"max":p=(l-n.height)*(i.y-r.y-(r.height-h))/(h*c);break;default:p=(l-n.height)*(i.y-r.y)/(h*c)}const u=n.x-d,m=n.y-p;this.viewbox={x:u,y:m,width:o,height:l}}}_getPanPoint(t){const r=this.#e;return t instanceof MouseEvent&&e.CustomEventUtils.matchModifiers(t,r.panModifiers)?e.CustomEventUtils.getEventCoordinates(t).page:null}#i;_invalidateSize(){this.adapter.invalidateSize(this,this.#r);const t=this.#t;this.#t=this.adapter.getTransformMatrix(this),this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"transformMatrix",currentValue:this.#t,oldValue:t})),this.zoom=this._transformMatrixScale(),this.dispatchEvent(new e.Components.ResizeEvent(this.#r))}viewActivatedCallback(){super.viewActivatedCallback();const t=this.adapter;e.Utils.isNull(t)||(t.initialize(this),this._invalidateSize(),this._drawDebounced());const r=this._resize;r.addEventListener(e.Components.ResizeEventName,this._resizeHandler,!1);const i=this._stage;r.target=i;const s={capture:!1,passive:!0};i.addEventListener("wheel",this._zoomHandler,!1),i.addEventListener("mousedown",this._panStartHandler,!1),i.addEventListener("touchstart",this._panStartHandler,s),window.addEventListener("mousemove",this._panHandler,!1),window.addEventListener("mouseup",this._panEndHandler,!1),window.addEventListener("touchmove",this._panHandler,s),window.addEventListener("touchend",this._panEndHandler,s)}propertyChangedCallback(t,r,i,s){switch(super.propertyChangedCallback(t,r,i,s),t){case"adapter":e.Utils.isNull(r)||r.dispose(this),e.Utils.isNull(i)||(i.initialize(this),this._invalidateSize(),this._drawDebounced());break;case"aspectRatio":e.Utils.isNull(this.adapter)||this._invalidateSize();break;case"viewbox":e.Utils.isNull(this.adapter)||this._invalidateSize(),this.#s??=this.viewbox||null;break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":i!==this._transformMatrixScale()&&this._zoomFromValue(i);break;case"options":this.#e=y(this);break;case"disabled":case"datasource":this._drawDebounced()}}disconnectedCallback(){const t=this._resize,r=this._stage;e.Utils.isNull(t)||t.removeEventListener(e.Components.ResizeEventName,this._resizeHandler,!1),e.Utils.isNull(r)||(r.removeEventListener("wheel",this._zoomHandler,!1),r.removeEventListener("mousedown",this._panStartHandler,!1),r.removeEventListener("touchstart",this._panStartHandler),window.removeEventListener("mousemove",this._panHandler,!1),window.removeEventListener("mouseup",this._panEndHandler,!1),window.removeEventListener("touchmove",this._panHandler),window.removeEventListener("touchend",this._panEndHandler)),e.Utils.isNull(this.adapter)||this.adapter.dispose(this),super.disconnectedCallback()}};m([e.Watch({converter:e.PropertyConverters.Element})],x.prototype,"adapter",void 0),m([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Rect})],x.prototype,"viewbox",void 0),m([e.Watch({emit:!1,reflectBack:!0,converter:g})],x.prototype,"aspectRatio",void 0),m([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],x.prototype,"datasource",void 0),m([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],x.prototype,"options",void 0),m([e.Watch({converter:e.PropertyConverters.Number})],x.prototype,"zoom",void 0),m([e.ViewChild("."+e.PCSS+"-2d")],x.prototype,"_stage",void 0),m([e.ViewChild(e.P+"-resize")],x.prototype,"_resize",void 0),m([e.Debounce(!0)],x.prototype,"_drawDebounced",null),x=m([e.CustomElement({tagName:e.P+"-"+u,shadow:!0,template:`<${e.P}-resize watch-position="true"></${e.P}-resize><div class="${e.PCSS}-2d" part="container"></div><slot></slot>`})],x);var b=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};class DrawableElement extends e.Components.PacemCrossItemsContainerElement{validate(t){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||e.CustomElementUtils.findAncestorOfType(this,x)}get parent(){return this._drawableParent=this._drawableParent||e.CustomElementUtils.findAncestor(this,t=>t instanceof DrawableElement)}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i&&"hide"===t)this.stage?.draw(this)}}b([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],DrawableElement.prototype,"tag",void 0),b([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],DrawableElement.prototype,"inert",void 0);var E=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const w=Math.PI/180;class UiElement extends DrawableElement{#t=t.Matrix2D.identity;viewActivatedCallback(){super.viewActivatedCallback(),this._updateTransformMatrix()}propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"rotate":case"scaleX":case"scaleY":case"translateX":case"translateY":this._updateTransformMatrix();case"opacity":this.stage?.draw(this)}}_updateTransformMatrix(){let t=w*(this.rotate??0),e=Math.cos(t),r=Math.sin(t),i=(this.scaleX??1)*e,s=-r,n=r,a=(this.scaleY??1)*e,o=this.translateX??0,l=this.translateY??0;this.#t={a:i,b:s,c:n,d:a,e:o,f:l}}get transformMatrix(){const t=this.#t;return{a:t.a,b:t.b,c:t.c,d:t.d,e:t.e,f:t.f}}}E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"rotate",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"scaleX",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"scaleY",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"translateX",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"translateY",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],UiElement.prototype,"opacity",void 0);class PresentationElement extends UiElement{propertyChangedCallback(t,r,i,s){if(super.propertyChangedCallback(t,r,i,s),!s)switch(t){case"stroke":case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":case"fill":e.Utils.isNull(this.stage)||this.stage.draw(this)}}}E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"stroke",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"fill",void 0),E([e.Watch({emit:!1,converter:{convert:t=>t?.split(",").map(t=>parseInt(t)).filter(t=>!Number.isNaN(t)),convertBack:t=>t?.join(",")}})],PresentationElement.prototype,"dashArray",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],PresentationElement.prototype,"lineWidth",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"lineJoin",void 0),E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PresentationElement.prototype,"lineCap",void 0);class ShapeElement extends PresentationElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i&&"data"===t)this.stage?.draw(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.recomputeShape()}recomputeShape(){const{pathData:t,vertices:e,boundingRect:r}=this.getShapeGeometry();this.#n=e,this.#a=r,this.data=t}get pathData(){return this.data}#a;get boundingRect(){return this.#a}#n;get vertices(){return this.#n}}E([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ShapeElement.prototype,"data",void 0);var N=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let _=class PacemGroupElement extends PresentationElement{validate(t){return t instanceof DrawableElement&&t.parent===this}#o=[];get childDrawables(){return this.#o}propertyChangedCallback(t,r,i,s){switch(super.propertyChangedCallback(t,r,i,s),t){case"items":case"datasource":this.#o=i||[];const t=this.stage;e.Utils.isNull(t)||t.draw(this,!0)}}};N([e.Watch({emit:!1})],_.prototype,"datasource",void 0),_=N([e.CustomElement({tagName:e.P+"-"+"2d-group"})],_);var U,P,C=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};function D(e,r,i,s,n){for(s??=0,n??=0,s%=360,n%=360;s<0;)s+=360;for(;n<s;)n+=360;return(s-n).isCloseTo(0)?function(t,e,r){const i=2*e,s=t.x,n=t.y;return{pathData:`M ${s} ${n} m ${-e},0 a ${e},${r} 0 1,1 ${i},0 a ${e},${r} 0 1,1 ${-i},0`,vertices:[],boundingRect:{x:s-e,y:n-r,width:2*e,height:2*r}}}(e,r,i):function(e,r,i,s,n){const a=Math.PI/180,o=a*s,l=a*n,c=t=>r*i/Math.sqrt(Math.pow(Math.cos(t)*i,2)+Math.pow(Math.sin(t)*r,2)),h=c(o),d=c(l),p=(t,e)=>({x:t*Math.cos(e),y:t*Math.sin(e)}),u=p(h,o),m=p(d,l),v={x:e.x+u.x,y:e.y+u.y},g={x:e.x+m.x,y:e.y+m.y};let f=t.Rect.expand(e,v,g);n<s&&(n+=360),(s<=0&&n>0||n>=360)&&(f=t.Rect.expand(f,{x:e.x+r,y:e.y})),(s<=90&&n>90||n>=450)&&(f=t.Rect.expand(f,{x:e.x,y:e.y+i})),(s<=180&&n>180||n>=540)&&(f=t.Rect.expand(f,{x:e.x-r,y:e.y})),(s<=270&&n>270||n>=630)&&(f=t.Rect.expand(f,{x:e.x,y:e.y-i}));const y=l-o>Math.PI?"1":"0";return{pathData:`M ${v.x} ${v.y} A ${r},${i} 0 ${y},1 ${g.x},${g.y} L ${e.x},${e.y} Z`,vertices:[v,g],boundingRect:f}}(e,r,i,s,n)}let S=U=class PacemEllipseElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"center":case"rx":case"ry":case"start":case"end":this.recomputeShape()}}getPathData(){const t=this.rx,r=this.ry,i=this.center,s=this.start??0,n=this.end??0;return e.Utils.isNull(i)||e.Utils.isNull(t)||e.Utils.isNull(r)?null:U.getPathData(i,t,r,s,n)}getShapeGeometry(){return D(this.center??{x:0,y:0},this.rx??0,this.ry??0,this.start,this.end)}static getPathData(t={x:NaN,y:NaN},e=NaN,r=NaN,i,s){const{pathData:n}=D(t,e,r,i,s);return n}};C([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],S.prototype,"center",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"rx",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"ry",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"start",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"end",void 0),S=U=C([e.CustomElement({tagName:e.P+"-"+"2d-ellipse"})],S);let M=P=class PacemCircleElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"center":case"radius":case"start":case"end":this.recomputeShape()}}getPathData(){const t=this.radius,r=this.center;return e.Utils.isNull(r)||e.Utils.isNull(t)?null:P.getPathData(r,t,this.start,this.end)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0;return D(t,e,e,this.start,this.end)}static getPathData(t={x:NaN,y:NaN},e=NaN,r,i){return S.getPathData(t,e,e,r,i)}};C([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],M.prototype,"center",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],M.prototype,"radius",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],M.prototype,"start",void 0),C([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],M.prototype,"end",void 0),M=P=C([e.CustomElement({tagName:e.P+"-"+"2d-circle"})],M);var A,k=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};function $(t){const e=t[2],r=t[4]??e,i="cut"===t[6]?O.Cut:O.Rounded;return{rx:R(e),ry:R(r),type:i}}function R(t){return{value:parseFloat(t),unit:t.endsWith("%")?"pct":"u"}}function T(t){return`${t.value}${"pct"===t.unit?"%":""}`}const W=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;var O;!function(t){t.Rounded="rounded",t.Cut="cut"}(O||(O={}));let H=A=class PacemRectElement extends ShapeElement{propertyChangedCallback(t,e,r,i){super.propertyChangedCallback(t,e,r,i),i||"x"!==t&&"y"!==t&&"w"!==t&&"h"!==t&&"r"!==t&&"cornerType"!==t||this.recomputeShape()}getPathData(){const t=this.x,r=this.y,i=this.w,s=this.h;let n=this.r??{rx:{value:0},ry:{value:0},type:O.Rounded};return e.Utils.isArray(n)||(n=[n,n,n,n]),n=n.map(t=>"number"==typeof t?{rx:{value:t},ry:{value:t},type:this.cornerType}:t),e.Utils.isNull(t)||e.Utils.isNull(r)||e.Utils.isNull(i)||e.Utils.isNull(s)?null:A.getPathData(t,r,i,s,n)}getShapeGeometry(){const t=this.x,e=this.y,r=t+this.w,i=e+this.h;return{pathData:this.getPathData(),vertices:[{x:t,y:e},{x:r,y:e},{x:r,y:i},{x:t,y:i}],boundingRect:{x:t,y:e,width:this.w,height:this.h}}}static getPathData(t=NaN,r=NaN,i=NaN,s=NaN,n=null){if(!n)return`M ${t} ${r} h ${i} v ${s} h ${-i} z`;e.Utils.isArray(n)||(n=[n,n,n,n]);const a=n[0],o=n[1],l=n[2],c=n[3],h=t=>"pct"===t.unit?.01*t.value*i:t.value,d=t=>"pct"===t.unit?.01*t.value*s:t.value,p=h(a.rx),u=d(a.ry),m=h(o.rx),v=d(o.ry),g=h(l.rx),f=d(l.ry),y=h(c.rx),x=d(c.ry);let b=`M ${t},${r+u}`;if("cut"===a.type)b+=` l ${p},${-u}`;else b+=` a ${p} ${u} 0 0 1 ${p} ${-u}`;if(b+=" h "+(i-p-m),"cut"===o.type)b+=` l ${m},${v}`;else b+=` a ${m} ${v} 0 0 1 ${m} ${v}`;if(b+=" v "+(s-v-f),"cut"===l.type)b+=` l ${-g},${f}`;else b+=` a ${g} ${f} 0 0 1 ${-g} ${f}`;if(b+=" h "+-(i-g-y),"cut"===c.type)b+=` l ${-y},${-x}`;else b+=` a ${y} ${x} 0 0 1 ${-y} ${-x}`;return b+" z"}};k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"x",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"y",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"w",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],H.prototype,"h",void 0),k([e.Watch({emit:!1,converter:{convert:t=>function(t){let e;const r=[];for(;e=W.exec(t);)r.push(e);switch(r.length){case 1:const t=$(r[0]);return[t,t,t,t];case 4:return[$(r[0]),$(r[1]),$(r[2]),$(r[3])];default:return null}}(t),convertBack:t=>function(t){const e=t[0],r=t[1],i=t[2],s=t[3];return`${T(e.rx)},${T(e.ry)} ${T(r.rx)},${T(r.ry)} ${T(i.rx)},${T(i.ry)} ${T(s.rx)},${T(s.ry)}`}(t)}})],H.prototype,"r",void 0),k([e.Watch({emit:!1,converter:e.PropertyConverters.String})],H.prototype,"cornerType",void 0),H=A=k([e.CustomElement({tagName:e.P+"-"+"2d-rect"})],H);var L,I=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let z=L=class PacemLineElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"from":case"to":this.recomputeShape()}}getShapeGeometry(){const t=this.from,r=this.to;if(e.Utils.isNull(t)||e.Utils.isNull(r))return Shape.empty();const i=t.x,s=t.y,n=r.x,a=r.y,o={x:Math.min(i,n),y:Math.min(s,a),width:Math.abs(i-n),height:Math.abs(s-a)};return{pathData:this.getPathData(),vertices:[t,r],boundingRect:o}}getPathData(){const t=this.from,r=this.to;return e.Utils.isNull(t)||e.Utils.isNull(r)?null:L.getPathData(t,r)}static getPathData(t={x:NaN,y:NaN},e={x:NaN,y:NaN}){return`M ${t.x} ${t.y} L ${e.x} ${e.y}`}};I([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],z.prototype,"from",void 0),I([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],z.prototype,"to",void 0),z=L=I([e.CustomElement({tagName:e.P+"-"+"2d-line"})],z);var j=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let G=class PacemPathElement extends ShapeElement{constructor(){super(...arguments),this.getPathData=()=>this.d}propertyChangedCallback(t,e,r,i){super.propertyChangedCallback(t,e,r,i),"d"!==t||i||this.recomputeShape()}getShapeGeometry(){return{pathData:this.getPathData(),boundingRect:null,vertices:[]}}};j([e.Watch({emit:!1,converter:e.PropertyConverters.String})],G.prototype,"d",void 0),G=j([e.CustomElement({tagName:e.P+"-"+"2d-path"})],G);var V,B=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let F=V=class PacemPolygonElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"radius":case"starIndent":case"sides":this.recomputeShape()}}getPathData(){const t=this.sides,r=this.radius,i=this.center;return e.Utils.isNull(t)||e.Utils.isNull(r)?null:V.getPathData(i,r,t,this.starIndent)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0,r=this.sides??3,i=this.starIndent;return r<3?Shape.empty():V.getShapeGeometry(t,e,r,i)}static getShapeGeometry(t,e,r,i=0){const s={x:t.x,y:t.y-e};let n=`M ${s.x} ${s.y}`;const a=[s],o=2*Math.PI/r,l=.5*o,c=i>0,h=e*Math.cos(l);for(let s=1;s<r;s++){const r=s*o,d=t.x+Math.sin(r)*e,p=t.y-Math.cos(r)*e;if(c){const e=h*(1-i),s=r-l,o=t.x+Math.sin(s)*e,c=t.y-Math.cos(s)*e;n+=` L ${o} ${c} L ${d} ${p}`,a.push({x:o,y:c})}else n+=` L ${d} ${p}`;a.push({x:d,y:p})}if(c){const e=h*(1-i),r=2*Math.PI-l,s=t.x+Math.sin(r)*e,o=t.y-Math.cos(r)*e;n+=` L ${s} ${o}`,a.push({x:s,y:o})}a.push(s);const d=2*e;return{pathData:n+" Z",vertices:a,boundingRect:{x:s.x-e,y:s.y,width:d,height:d}}}static getPathData(t,e,r,i=0){const{pathData:s}=V.getShapeGeometry(t,e,r,i);return s}};B([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],F.prototype,"sides",void 0),B([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],F.prototype,"radius",void 0),B([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],F.prototype,"center",void 0),B([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],F.prototype,"starIndent",void 0),F=V=B([e.CustomElement({tagName:e.P+"-"+"2d-polygon"})],F);var J,Y=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const X={convert:e=>{const r=t.parseAsNumericalArray(e);if(r.length%2==0){const t=[];for(let e=0;e<r.length;e+=2)t.push({x:r[e],y:r[e+1]});return t}return JSON.parse(e)},convertBack:t=>JSON.stringify(t)};let q=J=class PacemPolylineElement extends ShapeElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"points":case"closed":this.recomputeShape()}}static getShapeGeometry(t,r){if(e.Utils.isNullOrEmpty(t))return Shape.empty();let i="",s=Number.MAX_VALUE,n=Number.MAX_VALUE,a=Number.MIN_VALUE,o=Number.MIN_VALUE;for(let e=0;e<t.length;e++){const{x:r,y:l}=t[e];i+=`${0===e?"M":"L"} ${r} ${l} `,s=Math.min(s,r),a=Math.max(a,r),n=Math.min(n,l),o=Math.max(o,l)}return r&&(i+="Z"),{pathData:i,vertices:t,boundingRect:{x:s,y:n,width:a-s,height:o-n}}}getShapeGeometry(){return J.getShapeGeometry(this.points,this.closed)}getPathData(){const{pathData:t}=this.getShapeGeometry();return t}static getPathData(t,e){const{pathData:r}=J.getShapeGeometry(t,e);return r}};Y([e.Watch({emit:!1,converter:X})],q.prototype,"points",void 0),Y([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],q.prototype,"closed",void 0),q=J=Y([e.CustomElement({tagName:e.P+"-"+"2d-polyline"})],q);var K=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let Z=class PacemImageElement extends UiElement{propertyChangedCallback(t,e,r,i){if(super.propertyChangedCallback(t,e,r,i),!i)switch(t){case"src":case"x":case"y":case"width":case"height":this.stage?.draw(this)}}};K([e.Watch({emit:!1,converter:e.PropertyConverters.String})],Z.prototype,"src",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"x",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"y",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"width",void 0),K([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Z.prototype,"height",void 0),Z=K([e.CustomElement({tagName:e.P+"-"+"2d-image"})],Z);var Q=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};let tt=class PacemTextElement extends UiElement{propertyChangedCallback(t,r,i,s){if(!s)switch(t){case"text":case"color":case"fontFamily":case"fontSize":case"fontWeight":case"fontStyle":case"anchor":e.Utils.isNull(this.stage)||this.stage.draw(this)}}};Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"text",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"color",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"fontFamily",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],tt.prototype,"fontSize",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"fontWeight",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"fontStyle",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],tt.prototype,"anchor",void 0),Q([e.Watch({emit:!1,converter:e.PropertyConverters.String})],tt.prototype,"textAnchor",void 0),tt=Q([e.CustomElement({tagName:e.P+"-"+"2d-text"})],tt);class AdapterUtils{static stageDispatch(t,e,r){t instanceof EventTarget&&t.dispatchEvent(new StageEvent("stage"+e,t,r,t.transformMatrix))}static isValidViewbox(r){return!e.Utils.isNullOrEmpty(r)&&t.Rect.isRect(r)&&Number.isFinite(r.x)&&Number.isFinite(r.y)&&Number.isFinite(r.width)&&Number.isFinite(r.height)}static itemDispatch(t,r,i){if(e.Utils.isNull(t?.stage))return!1;var s,n,a;i instanceof Event?n=i:s={item:t,offset:i},"string"==typeof r?a=r:(a=r.type,n=r.originalEvent);const o=t.stage.transformMatrix,l=i instanceof Event?new DrawableEvent("item"+a,t,n,o):new DragEvent("item"+a,{detail:s,cancelable:a===e.UI.DragDropEventType.Init||a===e.UI.DragDropEventType.Drag},n,o);var c=!1;if(t instanceof EventTarget){const r=i instanceof Event?new DrawableEvent(a,t,n,o):new DragEvent(a,{detail:s,cancelable:a===e.UI.DragDropEventType.Init||a===e.UI.DragDropEventType.Drag},n,o);t.dispatchEvent(r),c=r.defaultPrevented}return t.stage.dispatchEvent(l),c||l.defaultPrevented}}class Pacem2DAdapterElement extends e.PacemEventTarget{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}snapshotElement(t,r,i,s){const n=!e.Utils.isNullOrEmpty(r),a=i??(n?"image/jpeg":null),o=s??(n?.9:null);return e.Utils.snapshotElement(t,r,a,o)}}var et=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const rt="pacem:2d-canvas-scene",it="pacem:2d-parent-matrix",st=e.CustomElementUtils.setAttachedPropertyValue,nt=e.CustomElementUtils.getAttachedPropertyValue;function at(t){return"none"===t||e.Utils.isNullOrEmpty(t)}function ot(t,r){return e.Utils.isNull(t)?r:t}let lt=class PacemCanvasAdapterElement extends Pacem2DAdapterElement{constructor(){super(...arguments),this._pointer={page:{x:Number.NaN,y:Number.NaN},screen:{x:Number.NaN,y:Number.NaN},client:{x:Number.NaN,y:Number.NaN}},this._dragInitHandler=r=>{const s=this._hitTarget;if(e.Utils.isNull(s)||!i(s)||!s.draggable)return void r.preventDefault();const n=r.detail,a=s,o=s.transformMatrix??t.Matrix2D.identity,l=nt(s,it,t.Matrix2D.identity);n.data={item:a,initialTransformMatrix:o,parentMatrix:l};AdapterUtils.itemDispatch(a,r,{x:0,y:0})&&r.preventDefault()},this._draggingHandler=t=>{e.avoidHandler(t),this._dragging=!0;const r=t.detail,i=r.data,s=r.currentPosition.x-r.origin.x,n=r.currentPosition.y-r.origin.y,a={x:s*i.parentMatrix.a+i.initialTransformMatrix.e,y:n*i.parentMatrix.d+i.initialTransformMatrix.f},o=i.item.stage.transformMatrix;if(!AdapterUtils.itemDispatch(i.item,t,{x:s*o.a+o.e,y:n*o.d+o.f}))if(i.item instanceof UiElement)i.item.translateX=a.x,i.item.translateY=a.y;else{const t=i.initialTransformMatrix,r={a:t.a,b:t.b,c:t.c,d:t.d,e:a.x,f:a.y};e.Utils.extend(i.item,{transformMatrix:r})}},this._dragEndHandler=t=>{this._dragging=!1;const e=t.detail.data,r=e.item.transformMatrix;AdapterUtils.itemDispatch(e.item,t,{x:r.e,y:r.f})},this._mouseleaveHandler=t=>{if(this._dragging)return;const r=this._hitTarget;if(e.Utils.isNull(r))return;this._scopeEvent=t;const i={x:Number.NaN,y:Number.NaN};this._pointer={page:i,screen:i,client:i};const s=t.srcElement,n=nt(s,rt);this._requestDraw(n)},this._mousemoveHandler=t=>{this._scopeEvent=t,this._pointer=e.CustomEventUtils.getEventCoordinates(t);const r=t.srcElement,i=nt(r,rt);this._requestDraw(i),this._dragging||e.Utils.isNull(this._hitTarget)||AdapterUtils.stageDispatch(i,"move",t)},this._mouseDownUpHandler=t=>{this._scopeEvent=t,this._pointer=e.CustomEventUtils.getEventCoordinates(t);const r=t.target;if(r instanceof HTMLCanvasElement){const i=nt(r,rt),s=this._hitTarget,n=t.type.replace(/^(mouse|touch)/,""),a="end"===n?"click":n,o=y(i);e.CustomEventUtils.matchModifiers(t,o.clickModifiers)&&(e.Utils.isNull(s)||s.stage!==i?AdapterUtils.stageDispatch(i,a,t):AdapterUtils.itemDispatch(s,a,t))}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(t,e,r,i){const s=this._scenes;if(s.has(t)){const n=s.get(t).context.canvas;return this.snapshotElement(n,e,r,i)}return Promise.resolve(null)}getCanvas(t){const e=this._scenes;if(e.has(t)){return e.get(t).context.canvas}return null}_getScreenInverseMatrix(e,r){return t.Matrix2D.invert({a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+r.x,f:e.f+r.y})}getTransformMatrix(e){const r=this._scenes;return r.has(e)?r.get(e).screenInverseMatrix:t.Matrix2D.identity}#l;viewActivatedCallback(){super.viewActivatedCallback();const t=this.#l=document.createElement(e.P+"-drag-drop");t.mode=e.UI.DragDataMode.Copy,t.dropBehavior=e.UI.DropBehavior.None,t.spillBehavior=e.UI.DropTargetMissedBehavior.None;const r=document.createElement("div");r.hidden=!0,t.floater=r;e.CustomElementUtils.findAncestorShell(this).appendChild(t),t.addEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.addEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.addEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const t=this.#l;e.Utils.isNull(t)||(t.removeEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.removeEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.removeEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1),t.remove()),super.disconnectedCallback()}invalidateSize(r,i){const s=this._scenes;if(!e.Utils.isNull(r)&&!e.Utils.isNullOrEmpty(i)&&s.has(r)){const n=s.get(r),a=n.context;a.canvas.width=i.width,a.canvas.height=i.height;const o=n.offset=e.Utils.offsetRect(a.canvas),l={x:0,y:0,width:i.width,height:i.height},c=r.aspectRatio,h=r.viewbox;if(AdapterUtils.isValidViewbox(h)){let e="contain",r="center",i="middle";if("object"==typeof c){switch(e=c.slice?"cover":"contain",c.x){case"min":r="left";break;case"max":r="right"}switch(c.y){case"min":i="top";break;case"max":i="bottom"}}const s=t.Rect.findTransform({x:0,y:0,width:h.width,height:h.height},l,e,r,i),a=t.Matrix2D.translate(s,{x:-s.a*h.x,y:-s.a*h.y});n.transformMatrix=a,n.screenInverseMatrix=this._getScreenInverseMatrix(a,o)}else n.transformMatrix=t.Matrix2D.identity}this._requestDraw(r)}getHitTarget(t){const r=this._hitTarget;return e.Utils.isNull(r)||r.stage!==t?null:r}initialize(r){if(e.Utils.isNull(r))throw"Provided scene is null or undefined.";const i=this._scenes,s=this.#l;if(i.has(r)){const t=i.get(r).context.canvas;return e.Utils.isNull(s)||s.register(t),t}const n=r.stage;n.innerHTML="";const a=document.createElement("canvas");a.setAttribute("part","stage"),st(a,rt,r);const o=a.getContext("2d");return a.addEventListener("mousemove",this._mousemoveHandler,!1),a.addEventListener("mouseleave",this._mouseleaveHandler,!1),a.addEventListener("touchstart",this._mouseDownUpHandler,{passive:!0}),a.addEventListener("touchmove",this._mouseDownUpHandler,{passive:!0}),a.addEventListener("touchend",this._mouseDownUpHandler,{passive:!0}),a.addEventListener("click",this._mouseDownUpHandler,!1),a.addEventListener("mousedown",this._mouseDownUpHandler,!1),a.addEventListener("mouseup",this._mouseDownUpHandler,!1),n.appendChild(a),i.set(r,{context:o,transformMatrix:t.Matrix2D.identity,offset:e.Utils.offsetRect(a),screenInverseMatrix:t.Matrix2D.identity}),e.Utils.isNull(s)||s.register(a),a}dispose(t){const r=this._scenes;if(r.has(t)){var i=r.get(t).context.canvas;const s=this.#l;e.Utils.isNull(s)||s.unregister(i),i.removeEventListener("click",this._mouseDownUpHandler,!1),i.removeEventListener("touchend",this._mouseDownUpHandler,!1),i.removeEventListener("mousedown",this._mouseDownUpHandler,!1),i.removeEventListener("mouseup",this._mouseDownUpHandler,!1),i.removeEventListener("touchstart",this._mouseDownUpHandler),i.removeEventListener("mouseleave",this._mouseleaveHandler,!1),i.removeEventListener("mousemove",this._mousemoveHandler,!1),i.remove(),r.delete(t)}}_requestDraw(t){const e=this._handles;e.has(t)&&cancelAnimationFrame(e.get(t));e.set(t,(()=>(this.draw(t),requestAnimationFrame(()=>{})))())}#c;draw(t){const r=this._scenes,i=this._handles;if(!e.Utils.isNull(t)){if(t.adapter!==this)return void(r.has(t)&&(r.delete(t),i.get(t)));if(!r.has(t))return void this.initialize(t);i.has(t)&&cancelAnimationFrame(i.get(t));const s=this._hitTarget,n=t.datasource||[];this._hitTarget=null;const a=r.get(t),o=a.context,l=o.canvas;this.#c=getComputedStyle(l),o.resetTransform(),o.clearRect(0,0,l.width,l.height);const c=a.transformMatrix;o.setTransform(c);const h=this._pointer,d=a.offset,p=Number.isNaN(h.page.x)||Number.isNaN(h.page.y)?null:{x:h.page.x-d.x,y:h.page.y-d.y};for(let e of n)this._draw(t,o,e,{transformMatrix:c},p);const u=this._hitTarget;u!=s&&(e.Utils.isNull(s)||(s instanceof Element&&s.dispatchEvent(new DrawableEvent("out",s,this._scopeEvent,c)),t.dispatchEvent(new DrawableEvent("itemout",s,this._scopeEvent,c))),e.Utils.isNull(u)||(u instanceof Element&&u.dispatchEvent(new DrawableEvent("over",u,this._scopeEvent,c)),t.dispatchEvent(new DrawableEvent("itemover",u,this._scopeEvent,c))))}}_draw(s,n,a,p,u){if(a.stage??=s,r(a)&&a.hide)return;let m;i(a)&&a.draggable&&!a.hide&&!a.inert&&st(a,it,n.getTransform().inverse()),i(a)&&(m=a.transformMatrix,e.Utils.isNull(m)||t.Matrix2D.isIdentity(m)||n.transform(m.a,m.b,m.c,m.d,m.e,m.f));let v=p;if(o(a)&&(v=PresentationState.combine(a,p,n.getTransform()),this._setPresentationState(n,v)),l(a)||a instanceof ShapeElement)this._drawShape(n,a,u);else if(h(a)||a instanceof tt)this._drawText(n,a,u);else if(d(a)||a instanceof Z)this._drawImage(n,a,u);else if(c(a)||a instanceof _)for(let t of a.childDrawables||[])this._draw(s,n,t,v,u);i(a)&&a.draggable&&!a.hide&&!a.inert&&st(a,"pacem:2d-world-matrix",n.getTransform().inverse()),this._setPresentationState(n,p)}_setPresentationState(t,r){if(t.setTransform(r.transformMatrix),e.Utils.isNullOrEmpty(r.stroke)||at(r.stroke)?t.strokeStyle="transparent":t.strokeStyle=r.stroke,e.Utils.isNullOrEmpty(r.lineWidth)?t.lineWidth=0:t.lineWidth=r.lineWidth,e.Utils.isNullOrEmpty(r.dashArray)?t.setLineDash([]):t.setLineDash(r.dashArray),e.Utils.isNullOrEmpty(r.lineCap)?t.lineCap="butt":t.lineCap=r.lineCap,e.Utils.isNullOrEmpty(r.lineJoin)?t.lineJoin="miter":t.lineJoin=r.lineJoin,"object"!=typeof r.fill||e.Utils.isNullOrEmpty(r.fill))e.Utils.isNullOrEmpty(r.fill)||"string"!=typeof r.fill||at(r.fill)?t.fillStyle="transparent":t.fillStyle=r.fill;else{const{stops:e}=r.fill;let i;if(n(r.fill)){const{start:e,end:s}=r.fill;i=t.createLinearGradient(e.x,e.y,s.x,s.y)}else{if(!a(r.fill))throw new Error("Unmanaged gradient type.");{const{center:e,radius:s}=r.fill;i=t.createRadialGradient(e.x,e.y,s,e.x,e.y,s)}}for(let t of e)i.addColorStop(t.offset,t.color);t.fillStyle=i}e.Utils.isNullOrEmpty(r.opacity)?t.globalAlpha=1:t.globalAlpha=r.opacity}_drawImage(t,r,i){const s="pacem:2d-canvas-imagesrc";let n=nt(r,s);const a=()=>{let s=n.naturalWidth,a=n.naturalHeight,o=r.width,l=r.height;if(o>0&&l>0||(o>0?l=a*o/s:l>0?o=s*l/a:(o=s,l=a)),!this._dragging&&!r.inert&&!e.Utils.isNull(i)){const e=new Path2D(`M ${r.x} ${r.y} h ${o} v ${l} H ${r.x} Z`);t.isPointInPath(e,i.x,i.y)&&(this._hitTarget=r)}t.globalAlpha=ot(r.opacity,1),t.drawImage(n,r.x,r.y,o,l)};e.Utils.isNull(n)?(n=new Image,n.src=r.src,n.onload=()=>{st(r,s,n),a()}):a()}_drawText(t,r,i){const s=this.DefaultShapeValues,n=t.fillStyle=ot(r.color,s.stroke);t.getTransform();const a=r.fontSize>0?`${r.fontSize}px`:this.#c.fontSize,o=r.fontStyle||this.#c.fontStyle,l=r.fontWeight||this.#c.fontWeight;t.font=`${o} ${l} ${a} ${r.fontFamily??this.#c.fontFamily}`,t.textAlign="middle"===r.textAnchor?"center":r.textAnchor,t.fillText(r.text,r.anchor.x,r.anchor.y),t.globalAlpha=ot(r.opacity,1);const c=!at(n);if(!this._dragging&&!r.inert&&!e.Utils.isNull(i)){const e=t.measureText(r.text),s=e.width,n=e.actualBoundingBoxAscent+e.actualBoundingBoxDescent,a=r.anchor.x-e.actualBoundingBoxLeft,o=r.anchor.y-e.actualBoundingBoxAscent,l=new Path2D(`M ${a} ${o} h ${s} v ${n} H ${a} z`);c&&t.isPointInPath(l,i.x,i.y)&&(this._hitTarget=r)}}_drawShape(t,r,i){if(e.Utils.isNullOrEmpty(r?.pathData))return;t.beginPath();const s="string"!=typeof t.fillStyle||!at(t.fillStyle),n="string"!=typeof t.strokeStyle||!at(t.strokeStyle);var a=new Path2D(r.pathData);this._dragging||r.inert||e.Utils.isNull(i)||(s&&t.isPointInPath(a,i.x,i.y)||n&&t.isPointInStroke(a,i.x,i.y))&&(this._hitTarget=r),n&&t.stroke(a),s&&t.fill(a);const o=!e.Utils.isNullOrEmpty(r.vertices)&&r.vertices.length>1,l=!e.Utils.isNull(r.markerEnd),c=!e.Utils.isNull(r.markerStart),h=!e.Utils.isNull(r.markerMid);if((l||h||c)&&(o||this.log(e.Logging.LogLevel.Warn,"Not enough vertices were explicited in order to make markers renderable.")),o){const e=t.getTransform();if(c){const e=r.markerEnd,i=r.vertices[1],s=r.vertices[0],n=Math.atan2(s.y-i.y,s.x-i.x);this._drawMarker(t,e,s,n)}if(h){const i=r.markerEnd;for(let s=1;s<r.vertices.length-1;s++){t.setTransform(e);const n=r.vertices[s],a=r.vertices[s+1],o=Math.atan2(a.y-n.y,a.x-n.x);this._drawMarker(t,i,a,o)}}if(l){t.setTransform(e);const i=r.markerEnd,s=r.vertices[r.vertices.length-2],n=r.vertices[r.vertices.length-1],a=Math.atan2(n.y-s.y,n.x-s.x);this._drawMarker(t,i,n,a)}}}_drawMarker(t,r,i,s){const n=this.DefaultShapeValues,a=r.ref?.x||0,o=r.ref?.y||0,l=(r.width||1)*t.lineWidth,c=(r.width||1)*t.lineWidth;let h=r.viewbox,d={x:0,y:0,width:l,height:c};e.Utils.isNull(h)&&(h=d);const p={a:d.width/h.width,d:d.height/h.height};t.translate(i.x,i.y),t.rotate(s),t.scale(p.a,p.d),t.translate(-a,-o),t.fillStyle=ot(r.fill,n.fill),t.strokeStyle=ot(r.stroke,n.stroke);const u=!at(r.fill),m=!at(r.stroke);var v=new Path2D(r.pathData);u&&t.fill(v),m&&t.stroke(v)}};lt=et([e.CustomElement({tagName:e.P+"-"+"2d-canvas-adapter"})],lt);var ct=function(t,e,r,i){var s,n=arguments.length,a=n<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,r,a):s(e,r))||a);return n>3&&a&&Object.defineProperty(e,r,a),a};const ht="http://www.w3.org/2000/svg",dt="pacem:2-svg-drawable",pt="pacem:2d-svg-stage",ut=e.CustomElementUtils.getAttachedPropertyValue,mt=e.CustomElementUtils.setAttachedPropertyValue,vt=e.CustomElementUtils.deleteAttachedPropertyValue;function gt(t,r){return e.Utils.isNull(t)?r:t}function ft(t,e,r){return r>=t.children.length?(t.appendChild(e),null):t.replaceChild(e,t.children.item(r))}let yt=class PacemSvgAdapterElement extends Pacem2DAdapterElement{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=e=>{const r=e.detail,i=r.element,s=ut(i,dt),n=s.stage.transformMatrix,a=s.transformMatrix??t.Matrix2D.identity;r.data={stageTransformMatrix:n,item:s,initialTransformMatrix:a};AdapterUtils.itemDispatch(s,e,{x:0,y:0})&&e.preventDefault()},this._draggingHandler=t=>{e.avoidHandler(t),this.#h=!0;const r=t.detail.element,i=t.detail.data,s=t.detail,n=(s.currentPosition.x-s.origin.x)*i.stageTransformMatrix.a,a=(s.currentPosition.y-s.origin.y)*i.stageTransformMatrix.d,o=n+i.initialTransformMatrix.e,l=a+i.initialTransformMatrix.f,c={x:n+i.stageTransformMatrix.e,y:a+i.stageTransformMatrix.f};if(!AdapterUtils.itemDispatch(i.item,t,c)){const t=i.initialTransformMatrix;r.style.transform=`matrix(${t.a},${t.b},${t.c},${t.d},${o},${l})`}},this._dragEndHandler=t=>{this.#h=!1;const r=t.detail,i=r.element,s=r.data,n=e.Utils.deserializeTransform(i.style),a={x:n.e,y:n.f};if(s.item instanceof UiElement)s.item.translateX=a.x,s.item.translateY=a.y;else{const t=s.initialTransformMatrix,r={a:t.a,b:t.b,c:t.c,d:t.d,e:a.x,f:a.y};e.Utils.extend(s.item,{transformMatrix:r})}i.style.transform="",AdapterUtils.itemDispatch(s.item,t,a)},this._mouseleaveHandler=t=>{if(this.#h)return;const r=this._hitTarget;e.Utils.isNull(r)||(this._hitTarget=null,e.Utils.isNull(r)||(this.#l.unregister(this._items.get(r)),AdapterUtils.itemDispatch(r,"out",t)))},this._mousemoveHandler=t=>{var r=e.CustomEventUtils.getEventCoordinates(t).client;if(!this.#h){var i=null;t.target.getRootNode().elementsFromPoint(r.x,r.y).find(t=>(i=ut(t,dt))&&!i.inert);var s=this._hitTarget,n=i;(e.Utils.isNull(i&&i.stage)||!this._scenes.has(i.stage)||i.inert)&&(n=null);const a=this._hitTarget=n;if(n!==s&&(e.Utils.isNull(s)||(this.#l.unregister(this._items.get(s)),AdapterUtils.itemDispatch(s,"out",t)),e.Utils.isNull(n)||(n.draggable&&this.#l.register(this._items.get(n)),AdapterUtils.itemDispatch(n,"over",t))),e.Utils.isNull(a)){const r=t.currentTarget,i=ut(r,pt);e.Utils.isNull(i)||AdapterUtils.stageDispatch(i,"move",t)}}},this._mouseDownUpHandler=t=>{const r=t.currentTarget;if(r instanceof SVGSVGElement){const i=ut(r,pt),s=this._hitTarget,n=t.type.replace(/^mouse/,""),a=y(i);e.CustomEventUtils.matchModifiers(t,a.clickModifiers)&&(e.Utils.isNull(s)||s.stage!==i?AdapterUtils.stageDispatch(i,n,t):AdapterUtils.itemDispatch(s,n,t))}},this._scenes=new WeakMap,this._markers=new WeakMap,this._gradients=new WeakMap,this._items=new WeakMap}snapshot(t,e,r,i){if(this._scenes.has(t)){const s=this._scenes.get(t);return this.snapshotElement(s,e,r,i)}return Promise.resolve(null)}getTransformMatrix(e){const r=this._scenes;return r.has(e)?r.get(e).getScreenCTM().inverse():t.Matrix2D.identity}#l;viewActivatedCallback(){super.viewActivatedCallback();const t=this.#l=document.createElement(e.P+"-drag-drop");t.mode=e.UI.DragDataMode.Self;e.CustomElementUtils.findAncestorShell(this).appendChild(t),t.addEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.addEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.addEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const t=this.#l;e.Utils.isNull(t)||(t.removeEventListener(e.UI.DragDropEventType.Init,this._dragInitHandler,!1),t.removeEventListener(e.UI.DragDropEventType.Drag,this._draggingHandler,!1),t.removeEventListener(e.UI.DragDropEventType.End,this._dragEndHandler,!1),t.remove()),super.disconnectedCallback()}invalidateSize(t,r){const i=this._scenes;if(!e.Utils.isNull(t)&&!e.Utils.isNullOrEmpty(r)&&i.has(t)){var s=i.get(t);s.setAttribute("width",r.width+""),s.setAttribute("height",r.height+"");const n=t.viewbox,a=t.aspectRatio;AdapterUtils.isValidViewbox(n)?s.setAttribute("viewBox",`${n.x} ${n.y} ${n.width} ${n.height}`):s.removeAttribute("viewBox"),e.Utils.isNullOrEmpty(a)||"string"==typeof a?s.removeAttribute("preserveAspectRatio"):s.setAttribute("preserveAspectRatio",`xM${a.x.substring(1)}YM${a.y.substring(1)} ${a.slice?"slice":"meet"}`)}}initialize(t){if(e.Utils.isNull(t))throw"Provided scene is null or undefined.";const r=this._scenes;if(r.has(t))return r.get(t);const i=t.stage;i.innerHTML="",this._items=new WeakMap;var s=document.createElementNS(ht,"svg");return s.setAttribute("part","stage"),mt(s,pt,t),i.appendChild(s),r.set(t,s),s.addEventListener("mousemove",this._mousemoveHandler,!1),s.addEventListener("click",this._mouseDownUpHandler,!1),s.addEventListener("mousedown",this._mouseDownUpHandler,!1),s.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.addEventListener("mouseleave",this._mouseleaveHandler,!1),s}dispose(t){const e=this._scenes;if(e.has(t)){var r=e.get(t);r.removeEventListener("mousemove",this._mousemoveHandler),r.removeEventListener("click",this._mouseDownUpHandler),r.removeEventListener("mousedown",this._mouseDownUpHandler),r.removeEventListener("mouseup",this._mouseDownUpHandler),r.removeEventListener("mouseleave",this._mouseleaveHandler),vt(r,pt),r.remove(),e.delete(t)}}getHitTarget(t){return this._hitTarget}draw(t,r,i=!1){const s=this._scenes,n=this._items;if(!e.Utils.isNull(t))if(t.adapter===this){s.has(t)||this.initialize(t);var a=t.datasource,o=!0,l=s.get(t);!e.Utils.isNull(r)&&n.has(r)&&(a=[r],l=n.get(r).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(t,l,a||[],o,i)}else s.has(t)&&s.delete(t)}#h;_hasItems(t){return c(t)}_disposeSvg(t){if(!e.Utils.isNull(t)){var r=ut(t,dt);vt(t,dt),this._items.delete(r)}}_draw(s,n,a,c,p){const u=this._items;let m=0;if(n.firstElementChild instanceof SVGDefsElement&&m++,!e.Utils.isNullOrEmpty(a))for(let v of a){let a;if(v.stage??=s,u.has(v)?(a=u.get(v),a.parentNode!==n&&this._disposeSvg(ft(n,a,m))):(a=this._buildSVGElement(v),mt(a,dt,v),this._disposeSvg(ft(n,a,m)),u.set(v,a)),r(v)&&(v.hide?a.setAttribute("display","none"):a.removeAttribute("display"),a.style.transform=""),l(v)){const t=a;t.setAttribute("d",gt(v.pathData,"M0,0"));for(let{marker:e,suffix:r}of[{marker:v.markerStart,suffix:"start"},{marker:v.markerEnd,suffix:"end"},{marker:v.markerMid,suffix:"mid"}])if(e){const i=this._ensureMarker(n,e);t.setAttribute("marker-"+r,`url(#${i.id})`)}else t.removeAttribute("marker-"+r)}else if(h(v)){const t=a;t.textContent=v.text,t.style.fill=e.Utils.isNullOrEmpty(v.color)?"":v.color,t.style.fontFamily=e.Utils.isNullOrEmpty(v.fontFamily)?"":v.fontFamily,t.style.fontSize=e.Utils.isNull(v.fontSize)?"":v.fontSize+"px",e.Utils.isNullOrEmpty(v.fontWeight)||(t.style.fontWeight=v.fontWeight),e.Utils.isNullOrEmpty(v.fontStyle)||(t.style.fontStyle=v.fontStyle),t.setAttribute("text-anchor",gt(v.textAnchor,"start")),e.Utils.isNull(v.anchor)?(t.removeAttribute("x"),t.removeAttribute("y")):(t.setAttribute("x",v.anchor.x.toString()),t.setAttribute("y",v.anchor.y.toString()))}else if(d(v)){const t=a;t.setAttribute("href",v.src),t.setAttribute("preserveAspectRatio","none"),v.width>0?t.setAttribute("width",""+v.width):t.removeAttribute("width"),v.height>0?t.setAttribute("height",""+v.height):t.removeAttribute("height"),e.Utils.isNull(v.x)?t.removeAttribute("x"):t.setAttribute("x",""+v.x),e.Utils.isNull(v.y)?t.removeAttribute("y"):t.setAttribute("y",""+v.y)}if(i(v)){const r=v.transformMatrix;e.Utils.isNull(r)||t.Matrix2D.isIdentity(r)?a.removeAttribute("transform"):a.setAttribute("transform",`matrix(${r.a} ${r.b} ${r.c} ${r.d} ${r.e} ${r.f})`);const i=gt(v.opacity,1);1===i?a.removeAttribute("opacity"):a.setAttribute("opacity",""+i)}if(o(v)){if(e.Utils.isNullOrEmpty(v.fill))a.removeAttribute("fill");else if("string"==typeof v.fill)a.setAttribute("fill",v.fill);else{const t=this._ensureGradient(n,v.fill);a.setAttribute("fill",`url(#${t.id})`)}e.Utils.isNullOrEmpty(v.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",v.stroke),e.Utils.isNullOrEmpty(v.dashArray)?a.removeAttribute("stroke-dasharray"):a.setAttribute("stroke-dasharray",v.dashArray.join(" ")),e.Utils.isNullOrEmpty(v.lineCap)?a.removeAttribute("stroke-linecap"):a.setAttribute("stroke-linecap",v.lineCap),e.Utils.isNullOrEmpty(v.lineJoin)?a.removeAttribute("stroke-linejoin"):a.setAttribute("stroke-linejoin",v.lineJoin),e.Utils.isNullOrEmpty(v.lineWidth)?a.removeAttribute("stroke-width"):a.setAttribute("stroke-width",""+v.lineWidth)}v.inert?a.style.pointerEvents="none":a.style.pointerEvents="",(c||p)&&this._hasItems(v)&&this._draw(s,a,v.childDrawables,!0,p),m++}if(c)for(let t=n.children.length-1;t>=m;t--){const e=n.children.item(t);this._disposeSvg(e),e.remove()}}_buildSVGElement(t){return l(t)||t instanceof ShapeElement?document.createElementNS(ht,"path"):h(t)||t instanceof tt?document.createElementNS(ht,"text"):d(t)||t instanceof Z?document.createElementNS(ht,"image"):document.createElementNS(ht,"g")}_ensureGradient(t,r){const i=this._gradients;i.has(t)||i.set(t,new WeakMap);const s=i.get(t),o=n(r),l=a(r);if(s.has(r)){const t=s.get(r);(o&&t instanceof SVGLinearGradientElement||l&&t instanceof SVGRadialGradientElement)&&(t.remove(),s.delete(r))}if(!s.has(r)){let i,n=t;for(;e.Utils.isNull(i=n.querySelector(":scope > defs"));){const t=n.parentElement;if(!(t instanceof SVGElement))break;n=t}if(e.Utils.isNull(i))throw new Error("Must provide a <defs> element.");var c=null;if(o)c=document.createElementNS(ht,"linearGradient");else{if(!a(r))throw new Error("Unmanaged gradient type.");c=document.createElementNS(ht,"radialGradient")}c.setAttribute("gradientUnits","userSpaceOnUse"),c.setAttribute("id",`grad-${e.Utils.uniqueCode()}`),i.appendChild(c),s.set(r,c)}const h=s.get(r);o?(h.setAttribute("x1",r.start.x.toString()),h.setAttribute("y1",r.start.y.toString()),h.setAttribute("x2",r.end.x.toString()),h.setAttribute("y2",r.end.y.toString())):l&&(h.setAttribute("cx",r.center.x.toString()),h.setAttribute("cy",r.center.y.toString()),h.setAttribute("r",r.radius.toString()));let d=0;for(let t of r.stops){for(;h.children.length<=d;){const t=document.createElementNS(ht,"stop");h.appendChild(t)}const r=h.children.item(d);r.setAttribute("offset",100*t.offset+"%"),r.setAttribute("stop-color",t.color),e.Utils.isNull(t.opacity)||r.setAttribute("stop-opacity",t.opacity.toString()),d++}for(;h.children.length>r.stops.length;){const t=h.children.item(h.children.length-1);h.removeChild(t)}return h}_ensureMarker(t,r){const i=this._markers;i.has(t)||i.set(t,new WeakMap);const s=i.get(t);if(!s.has(r)){const i=document.createElementNS(ht,"marker");s.set(r,i);const n=document.createElementNS(ht,"path");i.appendChild(n),i.setAttribute("id","mark"+e.Utils.uniqueCode());let a,o=t;for(;e.Utils.isNull(a=o.querySelector(":scope > defs"));){const t=o.parentElement;if(!(t instanceof SVGElement))break;o=t}if(e.Utils.isNull(a))throw new Error("Must provide a <defs> element.");a.appendChild(i)}const n=s.get(r),a=n.firstElementChild;return n.setAttribute("orient","auto-start-reverse"),e.Utils.isNullOrEmpty(r.viewbox)?n.removeAttribute("viewBox"):n.setAttribute("viewBox",`${r.viewbox.x} ${r.viewbox.y} ${r.viewbox.width} ${r.viewbox.height}`),e.Utils.isNullOrEmpty(r.ref)?(n.removeAttribute("refX"),n.removeAttribute("refY")):(n.setAttribute("refX",r.ref.x.toString()),n.setAttribute("refY",r.ref.y.toString())),r.height>0?n.setAttribute("markerHeight",r.height.toString()):n.removeAttribute("markerHeight"),r.width>0?n.setAttribute("markerWidth",r.width.toString()):n.removeAttribute("markerWidth"),a.setAttribute("d",r.pathData),e.Utils.isNullOrEmpty(r.fill)?a.removeAttribute("fill"):a.setAttribute("fill",r.fill),e.Utils.isNullOrEmpty(r.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",r.stroke),n}};yt=ct([e.CustomElement({tagName:e.P+"-"+"2d-svg-adapter"})],yt);var xt=Object.freeze({__proto__:null,AdapterUtils:AdapterUtils,get CornerType(){return O},DrawableElement:DrawableElement,get Pacem2DElement(){return x},get PacemCanvasAdapterElement(){return lt},get PacemCircleElement(){return M},get PacemEllipseElement(){return S},get PacemGroupElement(){return _},get PacemImageElement(){return Z},get PacemLineElement(){return z},get PacemPathElement(){return G},get PacemPolygonElement(){return F},get PacemPolylineElement(){return q},get PacemRectElement(){return H},get PacemSvgAdapterElement(){return yt},get PacemTextElement(){return tt},PresentationElement:PresentationElement,ShapeElement:ShapeElement,UiElement:UiElement,getStageOptions:y}),bt=Object.freeze({__proto__:null,Drawing:xt}),Et=Object.freeze({__proto__:null,Components:bt,Drawing:p});t.DeepMerger.merge(Et)}(Pacem,Pacem);
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * @pacem/pacem-2d v1.0.4 (https://js.pacem.it)
2
+ * @pacem/pacem-2d v1.0.5-bartels (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Bt=Object.defineProperty;var Ze=(n,e)=>{for(var t in e)Bt(n,t,{get:e[t],enumerable:!0})};var Yt={};Ze(Yt,{Drawing:()=>gt});var gt={};Ze(gt,{AdapterUtils:()=>E,CornerType:()=>ge,DrawableElement:()=>O,Pacem2DElement:()=>A,PacemCanvasAdapterElement:()=>pt,PacemCircleElement:()=>ee,PacemEllipseElement:()=>W,PacemGroupElement:()=>ue,PacemImageElement:()=>R,PacemLineElement:()=>Se,PacemPathElement:()=>We,PacemPolygonElement:()=>re,PacemPolylineElement:()=>$e,PacemRectElement:()=>X,PacemSvgAdapterElement:()=>mt,PacemTextElement:()=>M,PresentationElement:()=>T,ShapeElement:()=>_,UiElement:()=>w,getStageOptions:()=>de});import{Components as tr,CustomElementUtils as Nt,PropertyConverters as At,Watch as Mt}from"@pacem/pacem-core";import{CustomElement as Jt,Watch as fe,ViewChild as Et,Debounce as qt,PCSS as _t,P as Ue,Utils as b,PropertyConverters as Ne,PropertyChangeEvent as Zt,CustomEventUtils as et,avoidHandler as tt,EventKeyModifier as bt,Components as Ge}from"@pacem/pacem-core";import{Rect as rt,Matrix2D as Kt}from"@pacem/pacem-foundation";var Fr=2*Math.PI;var xt={};Ze(xt,{DragEvent:()=>ne,DrawableEvent:()=>L,PresentationState:()=>be,Shape:()=>z,StageEvent:()=>Ee,UI2DEvent:()=>ae,isDrawable:()=>oe,isGroup:()=>Q,isImage:()=>pe,isLinearGradient:()=>_e,isPresentationObject:()=>we,isRadialGradient:()=>le,isShape:()=>ce,isText:()=>he,isUiObject:()=>P});import{Utils as Qe,CustomUIEvent as Ft}from"@pacem/pacem-core";import{Point as Ke,Matrix2D as vt}from"@pacem/pacem-foundation";function oe(n){return!Qe.isNull(n)&&"stage"in n}function P(n){return oe(n)}function yt(n){return"stops"in n&&Qe.isArray(n.stops)}function _e(n){return yt(n)&&"start"in n&&Ke.isPoint(n.start)&&"end"in n&&Ke.isPoint(n.end)}function le(n){return yt(n)&&"center"in n&&Ke.isPoint(n.center)&&"radius"in n&&typeof n.radius=="number"}var be=class{static combine(e,t,r=null){return{opacity:(e.opacity??1)*(t.opacity??1),transformMatrix:r??vt.multiply(t.transformMatrix,e.transformMatrix),dashArray:e.dashArray??t.dashArray,fill:e.fill??t.fill,lineCap:e.lineCap??t.lineCap,lineJoin:e.lineJoin??t.lineJoin,lineWidth:e.lineWidth??t.lineWidth,stroke:e.stroke??t.stroke}}};function we(n){return P(n)&&("fill"in n||"transformMatrix"in n||"stroke"in n||"lineJoin"in n||"dashArray"in n||"lineWidth"in n||"opacity"in n||"lineCap"in n)}function ce(n){return P(n)&&"pathData"in n}function Q(n){return P(n)&&"childDrawables"in n&&!Qe.isNullOrEmpty(n.childDrawables)}function he(n){return P(n)&&"text"in n&&typeof n.text=="string"}function pe(n){return P(n)&&"src"in n&&typeof n.src=="string"}var ae=class extends Ft{constructor(e,t,r,s){super(e,t,r),this.#e=s}#e;get transformMatrix(){return this.#e}project(e={x:this.screenX,y:this.screenY}){return vt.multiply(e,this.#e)}},z=class{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}},ne=class extends ae{},L=class extends ae{constructor(e,t,r,s){super(e,{detail:t,bubbles:!0,cancelable:!0},r,s)}},Ee=class extends ae{constructor(e,t,r,s=t.transformMatrix){super(e,{detail:t,bubbles:!0,cancelable:!0},r,s)}};var I=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Qt=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,er={convert:n=>{let e=Qt.exec(n);return e&&e.length>=4?{x:e[1].toLowerCase(),y:e[3].toLowerCase(),slice:e[6]==="slice"}:"none"},convertBack:n=>b.isNull(n)||typeof n=="string"?"none":`xM${n.x.substring(1)}YM${n.y.substring(1)} ${n.slice?"slice":"meet"}`},wt={panControl:!0,zoomControl:!0,panModifiers:[bt.AltKey],zoomModifiers:[bt.AltKey],clickModifiers:[]};function de(n){let e=n instanceof A?n.options:{};return b.extend({},wt,e)}var A=class extends Ge.PacemItemsContainerElement{constructor(){super(...arguments),this.#t=Kt.identity,this.#i=wt,this._resizeHandler=e=>{this.#r={x:e.detail.left,y:e.detail.top,width:e.detail.width,height:e.detail.height};let t=this.adapter;b.isNull(t)||this._invalidateSize()},this._zoomHandler=e=>{if(!e.isTrusted)return;let t=this.#i;if(t.zoomControl&&et.matchModifiers(e,t.zoomModifiers)){tt(e);let r=e.deltaY<0,s=.1,i=r?-1:1,a=s*i,o=1+a,l=b.offsetRect(e.currentTarget),c={x:e.clientX,y:e.clientY};this._zoom(o,l,c)}},this._panHandler=e=>{let t=this.#s,r=this._getPanPoint(e);if(!b.isNullOrEmpty(t&&t.point)&&!b.isNull(r)){tt(e);let s=t.factor,i=t.box,a=t.point;this.viewbox={x:i.x-s*(r.x-a.x),y:i.y-s*(r.y-a.y),width:i.width,height:i.height}}},this._panStartHandler=e=>{if(!this.#i.panControl||!e.isTrusted)return;let r=this.#r,s=this.viewbox||{x:0,y:0,width:r.width,height:r.height},i=this._getPanPoint(e);if(i){tt(e),this._stage.style.pointerEvents="none";let a=this._getActualAspectRatio(),o=s.width/r.width,l=s.height/r.height,c=a.slice?Math.min(o,l):Math.max(o,l);this.#s={point:i,box:s,factor:c}}},this._panEndHandler=e=>{this._stage.style.pointerEvents="",this.#s=null}}get stage(){return this._stage}snapshot(e,t,r){let s=this.adapter;return b.isNull(s)?Promise.resolve(null):s.snapshot(this,e,t,r)}#e;#t;get transformMatrix(){return this.#t}_transformMatrixScale(){let e=this.#r||b.offsetRect(this._stage);var t=this.#e||e;let r=this.viewbox||t,s=this.aspectRatio||"none",i=s==="none"?"stretch":s.slice?"cover":"contain";return rt.findTransform(r,t,i).a}validate(e){return e instanceof O&&b.isNull(e.parent)}draw(e,t=!1){let r=this.adapter;if(!this.disabled&&!b.isNull(r)){let s=new CustomEvent("predraw",{cancelable:!0});this.dispatchEvent(s),s.defaultPrevented||(r.draw(this,e,t),this.dispatchEvent(new CustomEvent("draw")))}}_drawDebounced(e,t=!1){!b.isNull(e)&&Q(e)?this.draw(e,t):this.draw(e)}requestDraw(e,t=!1){this._drawDebounced(e,t)}_buildUpDatasourceFromDOM(){this.datasource=(this.items||[]).slice()}#i;#r;_getActualAspectRatio(){let e=this.aspectRatio||"none",t=e==="none"?"mid":e.x,r=e==="none"?"mid":e.y,s=e==="none"?!1:e.slice;return{x:t,y:r,slice:s}}_zoomFromValue(e){let t=this.#r;if(b.isNull(t))return;let r=t,s=this.#e||r,i=this.viewbox||s,a=this.aspectRatio||"none",o=a==="none"?"stretch":a.slice?"cover":"contain",l=rt.findTransform(i,r,o),c=rt.findTransform(s,r,o),h=l.a,m=c.a*e,f=h/m;this._zoom(f)}_zoom(e,t,r){b.isNull(t)&&(t=b.offsetRect(this._stage)),b.isNull(r)&&(r={x:t.x+t.width*.5,y:t.y+t.height*.5});let s=this.#r,i=this.viewbox||s,a=Math.min(i.width,i.height),o=a*e,l=a*e;if(o>0&&l>0){let c=this._getActualAspectRatio(),h=c.x,p=c.y,m=c.slice,f=i.width/i.height,d=m?Math.max(t.width,t.height):Math.min(t.width,t.height),v,y;switch(h){case"mid":v=(o-i.width)*(r.x-t.x-.5*(t.width-d))/(d*f);break;case"max":v=(o-i.width)*(r.x-t.x-(t.width-d))/(d*f);break;default:v=(o-i.width)*(r.x-t.x)/(d*f);break}switch(p){case"mid":y=(l-i.height)*(r.y-t.y-.5*(t.height-d))/(d*f);break;case"max":y=(l-i.height)*(r.y-t.y-(t.height-d))/(d*f);break;default:y=(l-i.height)*(r.y-t.y)/(d*f);break}let k=i.x-v,N=i.y-y;this.viewbox={x:k,y:N,width:o,height:l}}}_getPanPoint(e){let t=this.#i;return e instanceof MouseEvent&&et.matchModifiers(e,t.panModifiers)?et.getEventCoordinates(e).page:null}#s;_invalidateSize(){this.adapter.invalidateSize(this,this.#r);let e=this.#t;this.#t=this.adapter.getTransformMatrix(this),this.dispatchEvent(new Zt({propertyName:"transformMatrix",currentValue:this.#t,oldValue:e})),this.zoom=this._transformMatrixScale(),this.dispatchEvent(new Ge.ResizeEvent(this.#r))}viewActivatedCallback(){super.viewActivatedCallback();let e=this.adapter;b.isNull(e)||(e.initialize(this),this._invalidateSize(),this._drawDebounced());let t=this._resize;t.addEventListener(Ge.ResizeEventName,this._resizeHandler,!1);let r=this._stage;t.target=r;let s={capture:!1,passive:!0};r.addEventListener("wheel",this._zoomHandler,!1),r.addEventListener("mousedown",this._panStartHandler,!1),r.addEventListener("touchstart",this._panStartHandler,s),window.addEventListener("mousemove",this._panHandler,!1),window.addEventListener("mouseup",this._panEndHandler,!1),window.addEventListener("touchmove",this._panHandler,s),window.addEventListener("touchend",this._panEndHandler,s)}propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),e){case"adapter":b.isNull(t)||t.dispose(this),b.isNull(r)||(r.initialize(this),this._invalidateSize(),this._drawDebounced());break;case"aspectRatio":b.isNull(this.adapter)||this._invalidateSize();break;case"viewbox":b.isNull(this.adapter)||this._invalidateSize(),this.#e??=this.viewbox||null;break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":r!==this._transformMatrixScale()&&this._zoomFromValue(r);break;case"options":this.#i=de(this);break;case"disabled":case"datasource":this._drawDebounced();break}}disconnectedCallback(){let e=this._resize,t=this._stage;b.isNull(e)||e.removeEventListener(Ge.ResizeEventName,this._resizeHandler,!1),b.isNull(t)||(t.removeEventListener("wheel",this._zoomHandler,!1),t.removeEventListener("mousedown",this._panStartHandler,!1),t.removeEventListener("touchstart",this._panStartHandler),window.removeEventListener("mousemove",this._panHandler,!1),window.removeEventListener("mouseup",this._panEndHandler,!1),window.removeEventListener("touchmove",this._panHandler),window.removeEventListener("touchend",this._panEndHandler)),b.isNull(this.adapter)||this.adapter.dispose(this),super.disconnectedCallback()}};I([fe({converter:Ne.Element})],A.prototype,"adapter",void 0);I([fe({reflectBack:!0,converter:Ne.Rect})],A.prototype,"viewbox",void 0);I([fe({emit:!1,reflectBack:!0,converter:er})],A.prototype,"aspectRatio",void 0);I([fe({emit:!1,converter:Ne.Json})],A.prototype,"datasource",void 0);I([fe({emit:!1,converter:Ne.Json})],A.prototype,"options",void 0);I([fe({converter:Ne.Number})],A.prototype,"zoom",void 0);I([Et("."+_t+"-2d")],A.prototype,"_stage",void 0);I([Et(Ue+"-resize")],A.prototype,"_resize",void 0);I([qt(!0)],A.prototype,"_drawDebounced",null);A=I([Jt({tagName:Ue+"-"+"2d",shadow:!0,template:`<${Ue}-resize watch-position="true"></${Ue}-resize><div class="${_t}-2d" part="container"></div><slot></slot>`})],A);var Dt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},O=class n extends tr.PacemCrossItemsContainerElement{validate(e){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||Nt.findAncestorOfType(this,A)}get parent(){return this._drawableParent=this._drawableParent||Nt.findAncestor(this,e=>e instanceof n)}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),s||e==="hide"&&this.stage?.draw(this)}};Dt([Mt({emit:!1,reflectBack:!0,converter:At.String})],O.prototype,"tag",void 0);Dt([Mt({emit:!1,converter:At.Boolean})],O.prototype,"inert",void 0);import{Watch as C,PropertyConverters as $,Utils as rr}from"@pacem/pacem-core";import{Matrix2D as ir}from"@pacem/pacem-foundation";var S=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},sr=Math.PI/180,w=class extends O{#e=ir.identity;viewActivatedCallback(){super.viewActivatedCallback(),this._updateTransformMatrix()}propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"rotate":case"scaleX":case"scaleY":case"translateX":case"translateY":this._updateTransformMatrix();case"opacity":this.stage?.draw(this);break}}_updateTransformMatrix(){let e=sr*(this.rotate??0),t=Math.cos(e),r=Math.sin(e),s=(this.scaleX??1)*t,i=-r,a=r,o=(this.scaleY??1)*t,l=this.translateX??0,c=this.translateY??0;this.#e={a:s,b:i,c:a,d:o,e:l,f:c}}get transformMatrix(){let e=this.#e;return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}}};S([C({emit:!1,converter:$.Number})],w.prototype,"rotate",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"scaleX",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"scaleY",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"translateX",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"translateY",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"opacity",void 0);var T=class extends w{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"stroke":case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":case"fill":rr.isNull(this.stage)||this.stage.draw(this);break}}};S([C({emit:!1,converter:$.String})],T.prototype,"stroke",void 0);S([C({emit:!1,converter:$.String})],T.prototype,"fill",void 0);S([C({emit:!1,converter:{convert:n=>n?.split(",").map(e=>parseInt(e)).filter(e=>!Number.isNaN(e)),convertBack:n=>n?.join(",")}})],T.prototype,"dashArray",void 0);S([C({emit:!1,converter:$.Number})],T.prototype,"lineWidth",void 0);S([C({emit:!1,converter:$.String})],T.prototype,"lineJoin",void 0);S([C({emit:!1,converter:$.String})],T.prototype,"lineCap",void 0);var _=class extends T{propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),s||e==="data"&&this.stage?.draw(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.recomputeShape()}recomputeShape(){let{pathData:e,vertices:t,boundingRect:r}=this.getShapeGeometry();this.#t=t,this.#e=r,this.data=e}get pathData(){return this.data}#e;get boundingRect(){return this.#e}#t;get vertices(){return this.#t}};S([C({emit:!1,converter:$.String})],_.prototype,"data",void 0);import{CustomElement as ar,Watch as nr,P as or,Utils as lr}from"@pacem/pacem-core";var Pt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},ue=class extends T{validate(e){return e instanceof O&&e.parent===this}#e=[];get childDrawables(){return this.#e}propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),e){case"items":case"datasource":this.#e=r||[];let i=this.stage;lr.isNull(i)||i.draw(this,!0);break}}};Pt([nr({emit:!1})],ue.prototype,"datasource",void 0);ue=Pt([ar({tagName:or+"-"+"2d"+"-group"})],ue);import{CustomElement as St,Watch as j,PropertyConverters as V,P as Ct,Utils as Ae}from"@pacem/pacem-core";import{Rect as De}from"@pacem/pacem-foundation";var H=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},it,st;function cr(n,e,t){let r=2*e,s=n.x,i=n.y;return{pathData:`M ${s} ${i} m ${-e},0 a ${e},${t} 0 1,1 ${r},0 a ${e},${t} 0 1,1 ${-r},0`,vertices:[],boundingRect:{x:s-e,y:i-t,width:2*e,height:2*t}}}function hr(n,e,t,r,s){let i=Math.PI/180,a=i*r,o=i*s,l=N=>e*t/Math.sqrt(Math.pow(Math.cos(N)*t,2)+Math.pow(Math.sin(N)*e,2)),c=l(a),h=l(o),p=(N,U)=>({x:N*Math.cos(U),y:N*Math.sin(U)}),m=p(c,a),f=p(h,o),d={x:n.x+m.x,y:n.y+m.y},v={x:n.x+f.x,y:n.y+f.y},y=De.expand(n,d,v);s<r&&(s+=360),(r<=0&&s>0||s>=360)&&(y=De.expand(y,{x:n.x+e,y:n.y})),(r<=90&&s>90||s>=450)&&(y=De.expand(y,{x:n.x,y:n.y+t})),(r<=180&&s>180||s>=540)&&(y=De.expand(y,{x:n.x-e,y:n.y})),(r<=270&&s>270||s>=630)&&(y=De.expand(y,{x:n.x,y:n.y-t}));let k=o-a>Math.PI?"1":"0";return{pathData:`M ${d.x} ${d.y} A ${e},${t} 0 ${k},1 ${v.x},${v.y} L ${n.x},${n.y} Z`,vertices:[d,v],boundingRect:y}}function at(n,e,t,r,s){for(r??=0,s??=0,r%=360,s%=360;r<0;)r+=360;for(;s<r;)s+=360;return(r-s).isCloseTo(0)?cr(n,e,t):hr(n,e,t,r,s)}var W=it=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"center":case"rx":case"ry":case"start":case"end":this.recomputeShape();break}}getPathData(){let e=this.rx,t=this.ry,r=this.center,s=this.start??0,i=this.end??0;return!Ae.isNull(r)&&!Ae.isNull(e)&&!Ae.isNull(t)?it.getPathData(r,e,t,s,i):null}getShapeGeometry(){let e=this.center??{x:0,y:0},t=this.rx??0,r=this.ry??0;return at(e,t,r,this.start,this.end)}static getPathData(e={x:NaN,y:NaN},t=NaN,r=NaN,s,i){let{pathData:a}=at(e,t,r,s,i);return a}};H([j({emit:!1,converter:V.Point})],W.prototype,"center",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"rx",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"ry",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"start",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"end",void 0);W=it=H([St({tagName:Ct+"-"+"2d"+"-ellipse"})],W);var ee=st=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"center":case"radius":case"start":case"end":this.recomputeShape();break}}getPathData(){let e=this.radius,t=this.center;return!Ae.isNull(t)&&!Ae.isNull(e)?st.getPathData(t,e,this.start,this.end):null}getShapeGeometry(){let e=this.center??{x:0,y:0},t=this.radius??0;return at(e,t,t,this.start,this.end)}static getPathData(e={x:NaN,y:NaN},t=NaN,r,s){return W.getPathData(e,t,t,r,s)}};H([j({emit:!1,converter:V.Point})],ee.prototype,"center",void 0);H([j({emit:!1,converter:V.Number})],ee.prototype,"radius",void 0);H([j({emit:!1,converter:V.Number})],ee.prototype,"start",void 0);H([j({emit:!1,converter:V.Number})],ee.prototype,"end",void 0);ee=st=H([St({tagName:Ct+"-"+"2d"+"-circle"})],ee);import{CustomElement as pr,Watch as ve,PropertyConverters as Pe,P as fr,Utils as me}from"@pacem/pacem-core";var te=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},nt;function Me(n){let e=n[2],t=n[4]??e,r=n[6]==="cut"?ge.Cut:ge.Rounded;return{rx:Tt(e),ry:Tt(t),type:r}}function Tt(n){return{value:parseFloat(n),unit:n.endsWith("%")?"pct":"u"}}function J(n){return`${n.value}${n.unit==="pct"?"%":""}`}var dr=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;function ur(n){let e,t=[];for(;e=dr.exec(n);)t.push(e);switch(t.length){case 1:let r=Me(t[0]);return[r,r,r,r];case 4:let s=Me(t[0]),i=Me(t[1]),a=Me(t[2]),o=Me(t[3]);return[s,i,a,o];default:return null}}function mr(n){let e=n[0],t=n[1],r=n[2],s=n[3],i=J(e.rx),a=J(e.ry),o=J(t.rx),l=J(t.ry),c=J(r.rx),h=J(r.ry),p=J(s.rx),m=J(s.ry);return`${i},${a} ${o},${l} ${c},${h} ${p},${m}`}var ge;(function(n){n.Rounded="rounded",n.Cut="cut"})(ge||(ge={}));var X=nt=class extends _{propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),!s&&(e==="x"||e==="y"||e==="w"||e==="h"||e==="r"||e==="cornerType")&&this.recomputeShape()}getPathData(){let e=this.x,t=this.y,r=this.w,s=this.h,i=this.r??{rx:{value:0},ry:{value:0},type:ge.Rounded};return me.isArray(i)||(i=[i,i,i,i]),i=i.map(a=>typeof a=="number"?{rx:{value:a},ry:{value:a},type:this.cornerType}:a),!me.isNull(e)&&!me.isNull(t)&&!me.isNull(r)&&!me.isNull(s)?nt.getPathData(e,t,r,s,i):null}getShapeGeometry(){let e=this.x,t=this.y,r=e+this.w,s=t+this.h;return{pathData:this.getPathData(),vertices:[{x:e,y:t},{x:r,y:t},{x:r,y:s},{x:e,y:s}],boundingRect:{x:e,y:t,width:this.w,height:this.h}}}static getPathData(e=NaN,t=NaN,r=NaN,s=NaN,i=null){if(!i)return`M ${e} ${t} h ${r} v ${s} h ${-r} z`;me.isArray(i)||(i=[i,i,i,i]);let a=i[0],o=i[1],l=i[2],c=i[3],h=K=>K.unit==="pct"?K.value*.01*r:K.value,p=K=>K.unit==="pct"?K.value*.01*s:K.value,m=h(a.rx),f=p(a.ry),d=h(o.rx),v=p(o.ry),y=h(l.rx),k=p(l.ry),N=h(c.rx),U=p(c.ry),D=`M ${e},${t+f}`;return a.type==="cut"?D+=` l ${m},${-f}`:D+=` a ${m} ${f} 0 0 1 ${m} ${-f}`,D+=` h ${r-m-d}`,o.type==="cut"?D+=` l ${d},${v}`:D+=` a ${d} ${v} 0 0 1 ${d} ${v}`,D+=` v ${s-v-k}`,l.type==="cut"?D+=` l ${-y},${k}`:D+=` a ${y} ${k} 0 0 1 ${-y} ${k}`,D+=` h ${-(r-y-N)}`,c.type==="cut"?D+=` l ${-N},${-U}`:D+=` a ${N} ${U} 0 0 1 ${-N} ${-U}`,D+" z"}};te([ve({emit:!1,converter:Pe.Number})],X.prototype,"x",void 0);te([ve({emit:!1,converter:Pe.Number})],X.prototype,"y",void 0);te([ve({emit:!1,converter:Pe.Number})],X.prototype,"w",void 0);te([ve({emit:!1,converter:Pe.Number})],X.prototype,"h",void 0);te([ve({emit:!1,converter:{convert:n=>ur(n),convertBack:n=>mr(n)}})],X.prototype,"r",void 0);te([ve({emit:!1,converter:Pe.String})],X.prototype,"cornerType",void 0);X=nt=te([pr({tagName:fr+"-"+"2d"+"-rect"})],X);import{CustomElement as gr,Watch as $t,PropertyConverters as Rt,P as vr,Utils as ze}from"@pacem/pacem-core";var lt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},ot,Se=ot=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"from":case"to":this.recomputeShape();break}}getShapeGeometry(){let e=this.from,t=this.to;if(ze.isNull(e)||ze.isNull(t))return z.empty();let r=e.x,s=e.y,i=t.x,a=t.y,o={x:Math.min(r,i),y:Math.min(s,a),width:Math.abs(r-i),height:Math.abs(s-a)};return{pathData:this.getPathData(),vertices:[e,t],boundingRect:o}}getPathData(){let e=this.from,t=this.to;return!ze.isNull(e)&&!ze.isNull(t)?ot.getPathData(e,t):null}static getPathData(e={x:NaN,y:NaN},t={x:NaN,y:NaN}){let r=e.x,s=e.y,i=t.x,a=t.y;return`M ${r} ${s} L ${i} ${a}`}};lt([$t({emit:!1,converter:Rt.Point})],Se.prototype,"from",void 0);lt([$t({emit:!1,converter:Rt.Point})],Se.prototype,"to",void 0);Se=ot=lt([gr({tagName:vr+"-"+"2d"+"-line"})],Se);import{CustomElement as yr,Watch as xr,PropertyConverters as br,P as Er}from"@pacem/pacem-core";var kt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},We=class extends _{constructor(){super(...arguments),this.getPathData=()=>this.d}propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),e==="d"&&!s&&this.recomputeShape()}getShapeGeometry(){return{pathData:this.getPathData(),boundingRect:null,vertices:[]}}};kt([xr({emit:!1,converter:br.String})],We.prototype,"d",void 0);We=kt([yr({tagName:Er+"-"+"2d"+"-path"})],We);import{CustomElement as _r,Watch as je,PropertyConverters as Ve,P as wr,Utils as Lt}from"@pacem/pacem-core";var Te=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Ce,re=Ce=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"radius":case"starIndent":case"sides":this.recomputeShape();break}}getPathData(){let e=this.sides,t=this.radius,r=this.center;return!Lt.isNull(e)&&!Lt.isNull(t)?Ce.getPathData(r,t,e,this.starIndent):null}getShapeGeometry(){let e=this.center??{x:0,y:0},t=this.radius??0,r=this.sides??3,s=this.starIndent;return r<3?z.empty():Ce.getShapeGeometry(e,t,r,s)}static getShapeGeometry(e,t,r,s=0){let i={x:e.x,y:e.y-t},a=`M ${i.x} ${i.y}`,o=[i],l=2*Math.PI/r,c=.5*l,h=s>0,p=t*Math.cos(c);for(let f=1;f<r;f++){let d=f*l,v=e.x+Math.sin(d)*t,y=e.y-Math.cos(d)*t;if(h){let k=p*(1-s),N=d-c,U=e.x+Math.sin(N)*k,D=e.y-Math.cos(N)*k;a+=` L ${U} ${D} L ${v} ${y}`,o.push({x:U,y:D})}else a+=` L ${v} ${y}`;o.push({x:v,y})}if(h){let f=p*(1-s),d=2*Math.PI-c,v=e.x+Math.sin(d)*f,y=e.y-Math.cos(d)*f;a+=` L ${v} ${y}`,o.push({x:v,y})}o.push(i);let m=t*2;return{pathData:a+" Z",vertices:o,boundingRect:{x:i.x-t,y:i.y,width:m,height:m}}}static getPathData(e,t,r,s=0){let{pathData:i}=Ce.getShapeGeometry(e,t,r,s);return i}};Te([je({emit:!1,converter:Ve.Number})],re.prototype,"sides",void 0);Te([je({emit:!1,converter:Ve.Number})],re.prototype,"radius",void 0);Te([je({emit:!1,converter:Ve.Point})],re.prototype,"center",void 0);Te([je({emit:!1,converter:Ve.Number})],re.prototype,"starIndent",void 0);re=Ce=Te([_r({tagName:wr+"-"+"2d"+"-polygon"})],re);import{CustomElement as Nr,Watch as Ot,PropertyConverters as Dr,P as Ar,Utils as Mr}from"@pacem/pacem-core";import{parseAsNumericalArray as Pr}from"@pacem/pacem-foundation";var ct=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Xe,Sr={convert:n=>{let e=Pr(n);if(e.length%2===0){let t=[];for(let r=0;r<e.length;r+=2)t.push({x:e[r],y:e[r+1]});return t}return JSON.parse(n)},convertBack:n=>JSON.stringify(n)},$e=Xe=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"points":case"closed":this.recomputeShape();break}}static getShapeGeometry(e,t){if(Mr.isNullOrEmpty(e))return z.empty();let r="",s=Number.MAX_VALUE,i=Number.MAX_VALUE,a=Number.MIN_VALUE,o=Number.MIN_VALUE;for(let c=0;c<e.length;c++){let{x:h,y:p}=e[c];r+=`${c===0?"M":"L"} ${h} ${p} `,s=Math.min(s,h),a=Math.max(a,h),i=Math.min(i,p),o=Math.max(o,p)}let l={x:s,y:i,width:a-s,height:o-i};return t&&(r+="Z"),{pathData:r,vertices:e,boundingRect:l}}getShapeGeometry(){return Xe.getShapeGeometry(this.points,this.closed)}getPathData(){let{pathData:e}=this.getShapeGeometry();return e}static getPathData(e,t){let{pathData:r}=Xe.getShapeGeometry(e,t);return r}};ct([Ot({emit:!1,converter:Sr})],$e.prototype,"points",void 0);ct([Ot({emit:!1,converter:Dr.Boolean})],$e.prototype,"closed",void 0);$e=Xe=ct([Nr({tagName:Ar+"-"+"2d"+"-polyline"})],$e);import{CustomElement as Cr,Watch as Re,PropertyConverters as ke,P as Tr}from"@pacem/pacem-core";var ye=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},R=class extends w{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"src":case"x":case"y":case"width":case"height":this.stage?.draw(this);break}}};ye([Re({emit:!1,converter:ke.String})],R.prototype,"src",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"x",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"y",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"width",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"height",void 0);R=ye([Cr({tagName:Tr+"-"+"2d"+"-image"})],R);import{CustomElement as $r,Watch as q,PropertyConverters as Z,P as Rr,Utils as kr}from"@pacem/pacem-core";var Y=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},M=class extends w{propertyChangedCallback(e,t,r,s){if(!s)switch(e){case"text":case"color":case"fontFamily":case"fontSize":case"fontWeight":case"fontStyle":case"anchor":kr.isNull(this.stage)||this.stage.draw(this);break}}};Y([q({emit:!1,converter:Z.String})],M.prototype,"text",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"color",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"fontFamily",void 0);Y([q({emit:!1,converter:Z.Number})],M.prototype,"fontSize",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"fontWeight",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"fontStyle",void 0);Y([q({emit:!1,converter:Z.Point})],M.prototype,"anchor",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"textAnchor",void 0);M=Y([$r({tagName:Rr+"-"+"2d"+"-text"})],M);import{Utils as Ht,UI as Ye}from"@pacem/pacem-core";import{Rect as Lr}from"@pacem/pacem-foundation";var E=class{static stageDispatch(e,t,r){e instanceof EventTarget&&e.dispatchEvent(new Ee("stage"+t,e,r,e.transformMatrix))}static isValidViewbox(e){return!Ht.isNullOrEmpty(e)&&Lr.isRect(e)&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.width)&&Number.isFinite(e.height)}static itemDispatch(e,t,r){if(Ht.isNull(e?.stage))return!1;var s,i,a;r instanceof Event?i=r:s={item:e,offset:r},typeof t=="string"?a=t:(a=t.type,i=t.originalEvent);let o=e.stage.transformMatrix,l=()=>r instanceof Event?new L(a,e,i,o):new ne(a,{detail:s,cancelable:a===Ye.DragDropEventType.Init||a===Ye.DragDropEventType.Drag},i,o),c=r instanceof Event?new L("item"+a,e,i,o):new ne("item"+a,{detail:s,cancelable:a===Ye.DragDropEventType.Init||a===Ye.DragDropEventType.Drag},i,o);var h=!1;if(e instanceof EventTarget){let p=l();e.dispatchEvent(p),h=p.defaultPrevented}return e.stage.dispatchEvent(c),h||c.defaultPrevented}};import{CustomElement as Gr,P as Ut,CustomElementUtils as ft,Utils as g,Logging as Ur,CustomEventUtils as ht,UI as B,avoidHandler as zr}from"@pacem/pacem-core";import{Matrix2D as F,Rect as Wr}from"@pacem/pacem-foundation";import{PacemEventTarget as Or,Utils as It}from"@pacem/pacem-core";var Hr=.9,xe=class extends Or{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}snapshotElement(e,t,r,s){let i=!It.isNullOrEmpty(t),a=r??(i?"image/jpeg":null),o=s??(i?Hr:null);return It.snapshotElement(e,t,a,o)}};var Ir=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Be="pacem:2d-canvas-scene",Gt="pacem:2d-parent-matrix",jr="pacem:2d-world-matrix",Fe=ft.setAttachedPropertyValue,Le=ft.getAttachedPropertyValue;function ie(n){return n==="none"||g.isNullOrEmpty(n)}function Oe(n,e){return g.isNull(n)?e:n}var pt=class extends xe{constructor(){super(...arguments),this._pointer={page:{x:Number.NaN,y:Number.NaN},screen:{x:Number.NaN,y:Number.NaN},client:{x:Number.NaN,y:Number.NaN}},this._dragInitHandler=e=>{let t=this._hitTarget;if(g.isNull(t)||!P(t)||!t.draggable){e.preventDefault();return}let r=e.detail,s=t,i=t.transformMatrix??F.identity,a=Le(t,Gt,F.identity);r.data={item:s,initialTransformMatrix:i,parentMatrix:a},E.itemDispatch(s,e,{x:0,y:0})&&e.preventDefault()},this._draggingHandler=e=>{zr(e),this._dragging=!0;let t=e.detail,r=t.data,s={x:t.currentPosition.x-t.origin.x,y:t.currentPosition.y-t.origin.y},i={x:s.x*r.parentMatrix.a+r.initialTransformMatrix.e,y:s.y*r.parentMatrix.d+r.initialTransformMatrix.f},a=r.item.stage.transformMatrix;if(!E.itemDispatch(r.item,e,{x:s.x*a.a+a.e,y:s.y*a.d+a.f}))if(r.item instanceof w)r.item.translateX=i.x,r.item.translateY=i.y;else{let l=r.initialTransformMatrix,c={a:l.a,b:l.b,c:l.c,d:l.d,e:i.x,f:i.y};g.extend(r.item,{transformMatrix:c})}},this._dragEndHandler=e=>{this._dragging=!1;let t=e.detail,r=t.data,s=r.item.transformMatrix;E.itemDispatch(r.item,e,{x:s.e,y:s.f})},this._mouseleaveHandler=e=>{if(this._dragging)return;let t=this._hitTarget;if(g.isNull(t))return;this._scopeEvent=e;let r={x:Number.NaN,y:Number.NaN};this._pointer={page:r,screen:r,client:r};let s=e.srcElement,i=Le(s,Be);this._requestDraw(i)},this._mousemoveHandler=e=>{this._scopeEvent=e,this._pointer=ht.getEventCoordinates(e);let t=e.srcElement,r=Le(t,Be);this._requestDraw(r),this._dragging||g.isNull(this._hitTarget)||E.stageDispatch(r,"move",e)},this._mouseDownUpHandler=e=>{this._scopeEvent=e,this._pointer=ht.getEventCoordinates(e);let t=e.target;if(t instanceof HTMLCanvasElement){let r=Le(t,Be),s=this._hitTarget,i=e.type.replace(/^(mouse|touch)/,""),a=i==="end"?"click":i,o=de(r);ht.matchModifiers(e,o.clickModifiers)&&(!g.isNull(s)&&s.stage===r?E.itemDispatch(s,a,e):E.stageDispatch(r,a,e))}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(e,t,r,s){let i=this._scenes;if(i.has(e)){let a=i.get(e).context,o=a.canvas;return this.snapshotElement(o,t,r,s)}else return Promise.resolve(null)}getCanvas(e){let t=this._scenes;return t.has(e)?t.get(e).context.canvas:null}_getScreenInverseMatrix(e,t){return F.invert({a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+t.x,f:e.f+t.y})}getTransformMatrix(e){let t=this._scenes;return t.has(e)?t.get(e).screenInverseMatrix:F.identity}#e;viewActivatedCallback(){super.viewActivatedCallback();let e=this.#e=document.createElement(Ut+"-drag-drop");e.mode=B.DragDataMode.Copy,e.dropBehavior=B.DropBehavior.None,e.spillBehavior=B.DropTargetMissedBehavior.None;let t=document.createElement("div");t.hidden=!0,e.floater=t,ft.findAncestorShell(this).appendChild(e),e.addEventListener(B.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(B.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(B.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){let e=this.#e;g.isNull(e)||(e.removeEventListener(B.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(B.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(B.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,t){let r=this._scenes;if(!g.isNull(e)&&!g.isNullOrEmpty(t)&&r.has(e)){let s=r.get(e),i=s.context;i.canvas.width=t.width,i.canvas.height=t.height;let a=s.offset=g.offsetRect(i.canvas),o={x:0,y:0,width:t.width,height:t.height},l=e.aspectRatio,c=e.viewbox;if(E.isValidViewbox(c)){let h="contain",p="center",m="middle";if(typeof l=="object"){switch(h=l.slice?"cover":"contain",l.x){case"min":p="left";break;case"max":p="right";break}switch(l.y){case"min":m="top";break;case"max":m="bottom";break}}let f=Wr.findTransform({x:0,y:0,width:c.width,height:c.height},o,h,p,m),d=F.translate(f,{x:-f.a*c.x,y:-f.a*c.y});s.transformMatrix=d,s.screenInverseMatrix=this._getScreenInverseMatrix(d,a)}else s.transformMatrix=F.identity}this._requestDraw(e)}getHitTarget(e){let t=this._hitTarget;return!g.isNull(t)&&t.stage===e?t:null}initialize(e){if(g.isNull(e))throw"Provided scene is null or undefined.";let t=this._scenes,r=this.#e;if(t.has(e)){let o=t.get(e).context.canvas;return g.isNull(r)||r.register(o),o}let s=e.stage;s.innerHTML="";let i=document.createElement("canvas");i.setAttribute("part","stage"),Fe(i,Be,e);let a=i.getContext("2d");return i.addEventListener("mousemove",this._mousemoveHandler,!1),i.addEventListener("mouseleave",this._mouseleaveHandler,!1),i.addEventListener("touchstart",this._mouseDownUpHandler,{passive:!0}),i.addEventListener("touchmove",this._mouseDownUpHandler,{passive:!0}),i.addEventListener("touchend",this._mouseDownUpHandler,{passive:!0}),i.addEventListener("click",this._mouseDownUpHandler,!1),i.addEventListener("mousedown",this._mouseDownUpHandler,!1),i.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.appendChild(i),t.set(e,{context:a,transformMatrix:F.identity,offset:g.offsetRect(i),screenInverseMatrix:F.identity}),g.isNull(r)||r.register(i),i}dispose(e){let t=this._scenes;if(t.has(e)){var r=t.get(e),s=r.context,i=s.canvas;let a=this.#e;g.isNull(a)||a.unregister(i),i.removeEventListener("click",this._mouseDownUpHandler,!1),i.removeEventListener("touchend",this._mouseDownUpHandler,!1),i.removeEventListener("mousedown",this._mouseDownUpHandler,!1),i.removeEventListener("mouseup",this._mouseDownUpHandler,!1),i.removeEventListener("touchstart",this._mouseDownUpHandler),i.removeEventListener("mouseleave",this._mouseleaveHandler,!1),i.removeEventListener("mousemove",this._mousemoveHandler,!1),i.remove(),t.delete(e)}}_requestDraw(e){let t=this._handles;t.has(e)&&cancelAnimationFrame(t.get(e));let r=()=>(this.draw(e),requestAnimationFrame(()=>{}));t.set(e,r())}#t;draw(e){let t=this._scenes,r=this._handles;if(!g.isNull(e)){if(e.adapter!==this){t.has(e)&&(t.delete(e),r.get(e));return}if(!t.has(e)){this.initialize(e);return}r.has(e)&&cancelAnimationFrame(r.get(e));let s=this._hitTarget,i=e.datasource||[];this._hitTarget=null;let a=t.get(e),o=a.context,l=o.canvas;this.#t=getComputedStyle(l),o.resetTransform(),o.clearRect(0,0,l.width,l.height);let c=a.transformMatrix;o.setTransform(c);let h=this._pointer,p=a.offset,m=Number.isNaN(h.page.x)||Number.isNaN(h.page.y)?null:{x:h.page.x-p.x,y:h.page.y-p.y};for(let d of i)this._draw(e,o,d,{transformMatrix:c},m);let f=this._hitTarget;f!=s&&(g.isNull(s)||(s instanceof Element&&s.dispatchEvent(new L("out",s,this._scopeEvent,c)),e.dispatchEvent(new L("itemout",s,this._scopeEvent,c))),g.isNull(f)||(f instanceof Element&&f.dispatchEvent(new L("over",f,this._scopeEvent,c)),e.dispatchEvent(new L("itemover",f,this._scopeEvent,c))))}}_draw(e,t,r,s,i){if(r.stage??=e,oe(r)&&r.hide)return;P(r)&&r.draggable&&!r.hide&&!r.inert&&Fe(r,Gt,t.getTransform().inverse());let a;P(r)&&(a=r.transformMatrix,!g.isNull(a)&&!F.isIdentity(a)&&t.transform(a.a,a.b,a.c,a.d,a.e,a.f));let o=s;if(we(r)&&(o=be.combine(r,s,t.getTransform()),this._setPresentationState(t,o)),ce(r)||r instanceof _)this._drawShape(t,r,i);else if(he(r)||r instanceof M)this._drawText(t,r,i);else if(pe(r)||r instanceof R)this._drawImage(t,r,i);else if(Q(r)||r instanceof ue)for(let l of r.childDrawables||[])this._draw(e,t,l,o,i);P(r)&&r.draggable&&!r.hide&&!r.inert&&Fe(r,jr,t.getTransform().inverse()),this._setPresentationState(t,s)}_setPresentationState(e,t){if(e.setTransform(t.transformMatrix),!g.isNullOrEmpty(t.stroke)&&!ie(t.stroke)?e.strokeStyle=t.stroke:e.strokeStyle="transparent",g.isNullOrEmpty(t.lineWidth)?e.lineWidth=0:e.lineWidth=t.lineWidth,g.isNullOrEmpty(t.dashArray)?e.setLineDash([]):e.setLineDash(t.dashArray),g.isNullOrEmpty(t.lineCap)?e.lineCap="butt":e.lineCap=t.lineCap,g.isNullOrEmpty(t.lineJoin)?e.lineJoin="miter":e.lineJoin=t.lineJoin,typeof t.fill=="object"&&!g.isNullOrEmpty(t.fill)){let{stops:r}=t.fill,s;if(_e(t.fill)){let{start:i,end:a}=t.fill;s=e.createLinearGradient(i.x,i.y,a.x,a.y)}else if(le(t.fill)){let{center:i,radius:a}=t.fill;s=e.createRadialGradient(i.x,i.y,a,i.x,i.y,a)}else throw new Error("Unmanaged gradient type.");for(let i of r)s.addColorStop(i.offset,i.color);e.fillStyle=s}else!g.isNullOrEmpty(t.fill)&&typeof t.fill=="string"&&!ie(t.fill)?e.fillStyle=t.fill:e.fillStyle="transparent";g.isNullOrEmpty(t.opacity)?e.globalAlpha=1:e.globalAlpha=t.opacity}_drawImage(e,t,r){let s="pacem:2d-canvas-imagesrc",i=Le(t,s),a=()=>{let o=i.naturalWidth,l=i.naturalHeight,c=t.width,h=t.height;if(c>0&&h>0||(c>0?h=l*c/o:h>0?c=o*h/l:(c=o,h=l)),!this._dragging&&!t.inert&&!g.isNull(r)){let p=new Path2D(`M ${t.x} ${t.y} h ${c} v ${h} H ${t.x} Z`);e.isPointInPath(p,r.x,r.y)&&(this._hitTarget=t)}e.globalAlpha=Oe(t.opacity,1),e.drawImage(i,t.x,t.y,c,h)};g.isNull(i)?(i=new Image,i.src=t.src,i.onload=()=>{Fe(t,s,i),a()}):a()}_drawText(e,t,r){let s=this.DefaultShapeValues,i=e.fillStyle=Oe(t.color,s.stroke),a=e.getTransform(),o=t.fontSize>0?`${t.fontSize}px`:this.#t.fontSize,l=t.fontStyle||this.#t.fontStyle,c=t.fontWeight||this.#t.fontWeight;e.font=`${l} ${c} ${o} ${t.fontFamily??this.#t.fontFamily}`,e.textAlign=t.textAnchor==="middle"?"center":t.textAnchor,e.fillText(t.text,t.anchor.x,t.anchor.y),e.globalAlpha=Oe(t.opacity,1);let h=!ie(i);if(!this._dragging&&!t.inert&&!g.isNull(r)){let p=e.measureText(t.text),m=p.width,f=p.actualBoundingBoxAscent+p.actualBoundingBoxDescent,d=t.anchor.x-p.actualBoundingBoxLeft,v=t.anchor.y-p.actualBoundingBoxAscent,y=new Path2D(`M ${d} ${v} h ${m} v ${f} H ${d} z`);h&&e.isPointInPath(y,r.x,r.y)&&(this._hitTarget=t)}}_drawShape(e,t,r){if(g.isNullOrEmpty(t?.pathData))return;e.beginPath();let s=typeof e.fillStyle!="string"||!ie(e.fillStyle),i=typeof e.strokeStyle!="string"||!ie(e.strokeStyle);var a=new Path2D(t.pathData);!this._dragging&&!t.inert&&!g.isNull(r)&&(s&&e.isPointInPath(a,r.x,r.y)||i&&e.isPointInStroke(a,r.x,r.y))&&(this._hitTarget=t),i&&e.stroke(a),s&&e.fill(a);let o=!g.isNullOrEmpty(t.vertices)&&t.vertices.length>1,l=!g.isNull(t.markerEnd),c=!g.isNull(t.markerStart),h=!g.isNull(t.markerMid);if((l||h||c)&&(o||this.log(Ur.LogLevel.Warn,"Not enough vertices were explicited in order to make markers renderable.")),o){let p=e.getTransform();if(c){let m=t.markerEnd,f=t.vertices[1],d=t.vertices[0],v=Math.atan2(d.y-f.y,d.x-f.x);this._drawMarker(e,m,d,v)}if(h){let m=t.markerEnd;for(let f=1;f<t.vertices.length-1;f++){e.setTransform(p);let d=t.vertices[f],v=t.vertices[f+1],y=Math.atan2(v.y-d.y,v.x-d.x);this._drawMarker(e,m,v,y)}}if(l){e.setTransform(p);let m=t.markerEnd,f=t.vertices[t.vertices.length-2],d=t.vertices[t.vertices.length-1],v=Math.atan2(d.y-f.y,d.x-f.x);this._drawMarker(e,m,d,v)}}}_drawMarker(e,t,r,s){let i=this.DefaultShapeValues,a=t.ref?.x||0,o=t.ref?.y||0,l=(t.width||1)*e.lineWidth,c=(t.width||1)*e.lineWidth,h=t.viewbox,p={x:0,y:0,width:l,height:c};g.isNull(h)&&(h=p);let m={a:p.width/h.width,d:p.height/h.height};e.translate(r.x,r.y),e.rotate(s),e.scale(m.a,m.d),e.translate(-a,-o),e.fillStyle=Oe(t.fill,i.fill),e.strokeStyle=Oe(t.stroke,i.stroke);let f=!ie(t.fill),d=!ie(t.stroke);var v=new Path2D(t.pathData);f&&e.fill(v),d&&e.stroke(v)}};pt=Ir([Gr({tagName:Ut+"-"+"2d"+"-canvas-adapter"})],pt);import{CustomElement as Xr,P as Xt,CustomElementUtils as qe,CustomEventUtils as zt,Utils as u,UI as se,avoidHandler as Yr}from"@pacem/pacem-core";import{Matrix2D as dt}from"@pacem/pacem-foundation";var Vr=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},G="http://www.w3.org/2000/svg",He="pacem:2-svg-drawable",Je="pacem:2d-svg-stage",Ie=qe.getAttachedPropertyValue,Wt=qe.setAttachedPropertyValue,jt=qe.deleteAttachedPropertyValue;function ut(n,e){return u.isNull(n)?e:n}function Vt(n,e,t){return t>=n.children.length?(n.appendChild(e),null):n.replaceChild(e,n.children.item(t))}var mt=class extends xe{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=e=>{let t=e.detail,r=t.element,s=Ie(r,He),i=s.stage.transformMatrix,a=s.transformMatrix??dt.identity;t.data={stageTransformMatrix:i,item:s,initialTransformMatrix:a},E.itemDispatch(s,e,{x:0,y:0})&&e.preventDefault()},this._draggingHandler=e=>{Yr(e),this.#t=!0;let t=e.detail.element,r=e.detail.data,s=e.detail,i={x:(s.currentPosition.x-s.origin.x)*r.stageTransformMatrix.a,y:(s.currentPosition.y-s.origin.y)*r.stageTransformMatrix.d},a={x:i.x+r.initialTransformMatrix.e,y:i.y+r.initialTransformMatrix.f},o={x:i.x+r.stageTransformMatrix.e,y:i.y+r.stageTransformMatrix.f};if(!E.itemDispatch(r.item,e,o)){let c=r.initialTransformMatrix;t.style.transform=`matrix(${c.a},${c.b},${c.c},${c.d},${a.x},${a.y})`}},this._dragEndHandler=e=>{this.#t=!1;let t=e.detail,r=t.element,s=t.data,i=u.deserializeTransform(r.style),a={x:i.e,y:i.f};if(s.item instanceof w)s.item.translateX=a.x,s.item.translateY=a.y;else{let o=s.initialTransformMatrix,l={a:o.a,b:o.b,c:o.c,d:o.d,e:a.x,f:a.y};u.extend(s.item,{transformMatrix:l})}r.style.transform="",E.itemDispatch(s.item,e,a)},this._mouseleaveHandler=e=>{if(this.#t)return;let t=this._hitTarget;u.isNull(t)||(this._hitTarget=null,u.isNull(t)||(this.#e.unregister(this._items.get(t)),E.itemDispatch(t,"out",e)))},this._mousemoveHandler=e=>{var t=zt.getEventCoordinates(e).client;if(!this.#t){var r=null;e.target.getRootNode().elementsFromPoint(t.x,t.y).find(l=>(r=Ie(l,He),r&&!r.inert));var s=this._hitTarget,i=r;(u.isNull(r&&r.stage)||!this._scenes.has(r.stage)||r.inert)&&(i=null);let o=this._hitTarget=i;if(i!==s&&(u.isNull(s)||(this.#e.unregister(this._items.get(s)),E.itemDispatch(s,"out",e)),u.isNull(i)||(i.draggable&&this.#e.register(this._items.get(i)),E.itemDispatch(i,"over",e))),u.isNull(o)){let l=e.currentTarget,c=Ie(l,Je);u.isNull(c)||E.stageDispatch(c,"move",e)}}},this._mouseDownUpHandler=e=>{let t=e.currentTarget;if(t instanceof SVGSVGElement){let r=Ie(t,Je),s=this._hitTarget,i=e.type.replace(/^mouse/,""),a=de(r);zt.matchModifiers(e,a.clickModifiers)&&(!u.isNull(s)&&s.stage===r?E.itemDispatch(s,i,e):E.stageDispatch(r,i,e))}},this._scenes=new WeakMap,this._markers=new WeakMap,this._gradients=new WeakMap,this._items=new WeakMap}snapshot(e,t,r,s){if(this._scenes.has(e)){let i=this._scenes.get(e);return this.snapshotElement(i,t,r,s)}else return Promise.resolve(null)}getTransformMatrix(e){let t=this._scenes;return t.has(e)?t.get(e).getScreenCTM().inverse():dt.identity}#e;viewActivatedCallback(){super.viewActivatedCallback();let e=this.#e=document.createElement(Xt+"-drag-drop");e.mode=se.DragDataMode.Self,qe.findAncestorShell(this).appendChild(e),e.addEventListener(se.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(se.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(se.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){let e=this.#e;u.isNull(e)||(e.removeEventListener(se.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(se.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(se.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,t){let r=this._scenes;if(!u.isNull(e)&&!u.isNullOrEmpty(t)&&r.has(e)){var s=r.get(e);s.setAttribute("width",t.width+""),s.setAttribute("height",t.height+"");let i=e.viewbox,a=e.aspectRatio;E.isValidViewbox(i)?s.setAttribute("viewBox",`${i.x} ${i.y} ${i.width} ${i.height}`):s.removeAttribute("viewBox"),u.isNullOrEmpty(a)||typeof a=="string"?s.removeAttribute("preserveAspectRatio"):s.setAttribute("preserveAspectRatio",`xM${a.x.substring(1)}YM${a.y.substring(1)} ${a.slice?"slice":"meet"}`)}}initialize(e){if(u.isNull(e))throw"Provided scene is null or undefined.";let t=this._scenes;if(t.has(e))return t.get(e);let r=e.stage;r.innerHTML="",this._items=new WeakMap;var s=document.createElementNS(G,"svg");s.setAttribute("part","stage"),Wt(s,Je,e),r.appendChild(s),t.set(e,s);let i={passive:!1,capture:!0};return s.addEventListener("mousemove",this._mousemoveHandler,!1),s.addEventListener("click",this._mouseDownUpHandler,!1),s.addEventListener("mousedown",this._mouseDownUpHandler,!1),s.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.addEventListener("mouseleave",this._mouseleaveHandler,!1),s}dispose(e){let t=this._scenes;if(t.has(e)){var r=t.get(e);r.removeEventListener("mousemove",this._mousemoveHandler),r.removeEventListener("click",this._mouseDownUpHandler),r.removeEventListener("mousedown",this._mouseDownUpHandler),r.removeEventListener("mouseup",this._mouseDownUpHandler),r.removeEventListener("mouseleave",this._mouseleaveHandler),jt(r,Je),r.remove(),t.delete(e)}}getHitTarget(e){return this._hitTarget}draw(e,t,r=!1){let s=this._scenes,i=this._items;if(!u.isNull(e)){if(e.adapter===this)s.has(e)||this.initialize(e);else{s.has(e)&&s.delete(e);return}var a=e.datasource,o=!0,l=s.get(e);!u.isNull(t)&&i.has(t)&&(a=[t],l=i.get(t).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(e,l,a||[],o,r)}}#t;_hasItems(e){return Q(e)}_disposeSvg(e){if(!u.isNull(e)){var t=Ie(e,He);jt(e,He),this._items.delete(t)}}_draw(e,t,r,s,i){let a=this._items,o=0;if(t.firstElementChild instanceof SVGDefsElement&&o++,!u.isNullOrEmpty(r))for(let l of r){l.stage??=e;let c;if(a.has(l)?(c=a.get(l),c.parentNode!==t&&this._disposeSvg(Vt(t,c,o))):(c=this._buildSVGElement(l),Wt(c,He,l),this._disposeSvg(Vt(t,c,o)),a.set(l,c)),oe(l)&&(l.hide?c.setAttribute("display","none"):c.removeAttribute("display"),c.style.transform=""),ce(l)){let h=c;h.setAttribute("d",ut(l.pathData,"M0,0"));for(let{marker:p,suffix:m}of[{marker:l.markerStart,suffix:"start"},{marker:l.markerEnd,suffix:"end"},{marker:l.markerMid,suffix:"mid"}])if(p){let f=this._ensureMarker(t,p);h.setAttribute("marker-"+m,`url(#${f.id})`)}else h.removeAttribute("marker-"+m)}else if(he(l)){let h=c;h.textContent=l.text,h.style.fill=u.isNullOrEmpty(l.color)?"":l.color,h.style.fontFamily=u.isNullOrEmpty(l.fontFamily)?"":l.fontFamily,h.style.fontSize=u.isNull(l.fontSize)?"":l.fontSize+"px",u.isNullOrEmpty(l.fontWeight)||(h.style.fontWeight=l.fontWeight),u.isNullOrEmpty(l.fontStyle)||(h.style.fontStyle=l.fontStyle),h.setAttribute("text-anchor",ut(l.textAnchor,"start")),u.isNull(l.anchor)?(h.removeAttribute("x"),h.removeAttribute("y")):(h.setAttribute("x",l.anchor.x.toString()),h.setAttribute("y",l.anchor.y.toString()))}else if(pe(l)){let h=c;h.setAttribute("href",l.src),h.setAttribute("preserveAspectRatio","none"),l.width>0?h.setAttribute("width",""+l.width):h.removeAttribute("width"),l.height>0?h.setAttribute("height",""+l.height):h.removeAttribute("height"),u.isNull(l.x)?h.removeAttribute("x"):h.setAttribute("x",""+l.x),u.isNull(l.y)?h.removeAttribute("y"):h.setAttribute("y",""+l.y)}if(P(l)){let h=l.transformMatrix;u.isNull(h)||dt.isIdentity(h)?c.removeAttribute("transform"):c.setAttribute("transform",`matrix(${h.a} ${h.b} ${h.c} ${h.d} ${h.e} ${h.f})`);let p=ut(l.opacity,1);p===1?c.removeAttribute("opacity"):c.setAttribute("opacity",""+p)}if(we(l)){if(u.isNullOrEmpty(l.fill))c.removeAttribute("fill");else if(typeof l.fill=="string")c.setAttribute("fill",l.fill);else{let h=this._ensureGradient(t,l.fill);c.setAttribute("fill",`url(#${h.id})`)}u.isNullOrEmpty(l.stroke)?c.removeAttribute("stroke"):c.setAttribute("stroke",l.stroke),u.isNullOrEmpty(l.dashArray)?c.removeAttribute("stroke-dasharray"):c.setAttribute("stroke-dasharray",l.dashArray.join(" ")),u.isNullOrEmpty(l.lineCap)?c.removeAttribute("stroke-linecap"):c.setAttribute("stroke-linecap",l.lineCap),u.isNullOrEmpty(l.lineJoin)?c.removeAttribute("stroke-linejoin"):c.setAttribute("stroke-linejoin",l.lineJoin),u.isNullOrEmpty(l.lineWidth)?c.removeAttribute("stroke-width"):c.setAttribute("stroke-width",""+l.lineWidth)}l.inert?c.style.pointerEvents="none":c.style.pointerEvents="",(s||i)&&this._hasItems(l)&&this._draw(e,c,l.childDrawables,!0,i),o++}if(s)for(let l=t.children.length-1;l>=o;l--){let c=t.children.item(l);this._disposeSvg(c),c.remove()}}_buildSVGElement(e){return ce(e)||e instanceof _?document.createElementNS(G,"path"):he(e)||e instanceof M?document.createElementNS(G,"text"):pe(e)||e instanceof R?document.createElementNS(G,"image"):document.createElementNS(G,"g")}_ensureGradient(e,t){let r=this._gradients;r.has(e)||r.set(e,new WeakMap);let s=r.get(e),i=_e(t),a=le(t);if(s.has(t)){let h=s.get(t);(i&&h instanceof SVGLinearGradientElement||a&&h instanceof SVGRadialGradientElement)&&(h.remove(),s.delete(t))}if(!s.has(t)){let h=e,p;for(;u.isNull(p=h.querySelector(":scope > defs"));){let m=h.parentElement;if(m instanceof SVGElement)h=m;else break}if(u.isNull(p))throw new Error("Must provide a <defs> element.");var o=null;if(i)o=document.createElementNS(G,"linearGradient");else if(le(t))o=document.createElementNS(G,"radialGradient");else throw new Error("Unmanaged gradient type.");o.setAttribute("gradientUnits","userSpaceOnUse"),o.setAttribute("id",`grad-${u.uniqueCode()}`),p.appendChild(o),s.set(t,o)}let l=s.get(t);i?(l.setAttribute("x1",t.start.x.toString()),l.setAttribute("y1",t.start.y.toString()),l.setAttribute("x2",t.end.x.toString()),l.setAttribute("y2",t.end.y.toString())):a&&(l.setAttribute("cx",t.center.x.toString()),l.setAttribute("cy",t.center.y.toString()),l.setAttribute("r",t.radius.toString()));let c=0;for(let h of t.stops){for(;l.children.length<=c;){let m=document.createElementNS(G,"stop");l.appendChild(m)}let p=l.children.item(c);p.setAttribute("offset",h.offset*100+"%"),p.setAttribute("stop-color",h.color),u.isNull(h.opacity)||p.setAttribute("stop-opacity",h.opacity.toString()),c++}for(;l.children.length>t.stops.length;){let h=l.children.item(l.children.length-1);l.removeChild(h)}return l}_ensureMarker(e,t){let r=this._markers;r.has(e)||r.set(e,new WeakMap);let s=r.get(e);if(!s.has(t)){let o=document.createElementNS(G,"marker");s.set(t,o);let l=document.createElementNS(G,"path");o.appendChild(l),o.setAttribute("id","mark"+u.uniqueCode());let c=e,h;for(;u.isNull(h=c.querySelector(":scope > defs"));){let p=c.parentElement;if(p instanceof SVGElement)c=p;else break}if(u.isNull(h))throw new Error("Must provide a <defs> element.");h.appendChild(o)}let i=s.get(t),a=i.firstElementChild;return i.setAttribute("orient","auto-start-reverse"),u.isNullOrEmpty(t.viewbox)?i.removeAttribute("viewBox"):i.setAttribute("viewBox",`${t.viewbox.x} ${t.viewbox.y} ${t.viewbox.width} ${t.viewbox.height}`),u.isNullOrEmpty(t.ref)?(i.removeAttribute("refX"),i.removeAttribute("refY")):(i.setAttribute("refX",t.ref.x.toString()),i.setAttribute("refY",t.ref.y.toString())),t.height>0?i.setAttribute("markerHeight",t.height.toString()):i.removeAttribute("markerHeight"),t.width>0?i.setAttribute("markerWidth",t.width.toString()):i.removeAttribute("markerWidth"),a.setAttribute("d",t.pathData),u.isNullOrEmpty(t.fill)?a.removeAttribute("fill"):a.setAttribute("fill",t.fill),u.isNullOrEmpty(t.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",t.stroke),i}};mt=Vr([Xr({tagName:Xt+"-"+"2d"+"-svg-adapter"})],mt);export{Yt as Components,xt as Drawing};
6
+ var Bt=Object.defineProperty;var Ze=(n,e)=>{for(var t in e)Bt(n,t,{get:e[t],enumerable:!0})};var xt={};Ze(xt,{DragEvent:()=>ne,DrawableEvent:()=>L,PresentationState:()=>be,Shape:()=>z,StageEvent:()=>Ee,UI2DEvent:()=>ae,isDrawable:()=>oe,isGroup:()=>Q,isImage:()=>pe,isLinearGradient:()=>_e,isPresentationObject:()=>we,isRadialGradient:()=>le,isShape:()=>ce,isText:()=>he,isUiObject:()=>P});import{Utils as Qe,CustomUIEvent as Ft}from"@pacem/pacem-core";import{Point as Ke,Matrix2D as vt}from"@pacem/pacem-foundation";function oe(n){return!Qe.isNull(n)&&"stage"in n}function P(n){return oe(n)}function yt(n){return"stops"in n&&Qe.isArray(n.stops)}function _e(n){return yt(n)&&"start"in n&&Ke.isPoint(n.start)&&"end"in n&&Ke.isPoint(n.end)}function le(n){return yt(n)&&"center"in n&&Ke.isPoint(n.center)&&"radius"in n&&typeof n.radius=="number"}var be=class{static combine(e,t,r=null){return{opacity:(e.opacity??1)*(t.opacity??1),transformMatrix:r??vt.multiply(t.transformMatrix,e.transformMatrix),dashArray:e.dashArray??t.dashArray,fill:e.fill??t.fill,lineCap:e.lineCap??t.lineCap,lineJoin:e.lineJoin??t.lineJoin,lineWidth:e.lineWidth??t.lineWidth,stroke:e.stroke??t.stroke}}};function we(n){return P(n)&&("fill"in n||"transformMatrix"in n||"stroke"in n||"lineJoin"in n||"dashArray"in n||"lineWidth"in n||"opacity"in n||"lineCap"in n)}function ce(n){return P(n)&&"pathData"in n}function Q(n){return P(n)&&"childDrawables"in n&&!Qe.isNullOrEmpty(n.childDrawables)}function he(n){return P(n)&&"text"in n&&typeof n.text=="string"}function pe(n){return P(n)&&"src"in n&&typeof n.src=="string"}var ae=class extends Ft{constructor(e,t,r,s){super(e,t,r),this.#e=s}#e;get transformMatrix(){return this.#e}project(e={x:this.screenX,y:this.screenY}){return vt.multiply(e,this.#e)}},z=class{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}},ne=class extends ae{},L=class extends ae{constructor(e,t,r,s){super(e,{detail:t,bubbles:!0,cancelable:!0},r,s)}},Ee=class extends ae{constructor(e,t,r,s=t.transformMatrix){super(e,{detail:t,bubbles:!0,cancelable:!0},r,s)}};var Yt={};Ze(Yt,{Drawing:()=>gt});var gt={};Ze(gt,{AdapterUtils:()=>E,CornerType:()=>ge,DrawableElement:()=>O,Pacem2DElement:()=>A,PacemCanvasAdapterElement:()=>pt,PacemCircleElement:()=>ee,PacemEllipseElement:()=>W,PacemGroupElement:()=>ue,PacemImageElement:()=>R,PacemLineElement:()=>Se,PacemPathElement:()=>We,PacemPolygonElement:()=>re,PacemPolylineElement:()=>$e,PacemRectElement:()=>X,PacemSvgAdapterElement:()=>mt,PacemTextElement:()=>M,PresentationElement:()=>T,ShapeElement:()=>_,UiElement:()=>w,getStageOptions:()=>de});import{Components as tr,CustomElementUtils as Nt,PropertyConverters as At,Watch as Mt}from"@pacem/pacem-core";import{CustomElement as Jt,Watch as fe,ViewChild as Et,Debounce as qt,PCSS as _t,P as Ue,Utils as b,PropertyConverters as Ne,PropertyChangeEvent as Zt,CustomEventUtils as et,avoidHandler as tt,EventKeyModifier as bt,Components as Ge}from"@pacem/pacem-core";import{Rect as rt,Matrix2D as Kt}from"@pacem/pacem-foundation";var Zr=2*Math.PI;var I=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Qt=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,er={convert:n=>{let e=Qt.exec(n);return e&&e.length>=4?{x:e[1].toLowerCase(),y:e[3].toLowerCase(),slice:e[6]==="slice"}:"none"},convertBack:n=>b.isNull(n)||typeof n=="string"?"none":`xM${n.x.substring(1)}YM${n.y.substring(1)} ${n.slice?"slice":"meet"}`},wt={panControl:!0,zoomControl:!0,panModifiers:[bt.AltKey],zoomModifiers:[bt.AltKey],clickModifiers:[]};function de(n){let e=n instanceof A?n.options:{};return b.extend({},wt,e)}var A=class extends Ge.PacemItemsContainerElement{constructor(){super(...arguments),this.#t=Kt.identity,this.#i=wt,this._resizeHandler=e=>{this.#r={x:e.detail.left,y:e.detail.top,width:e.detail.width,height:e.detail.height};let t=this.adapter;b.isNull(t)||this._invalidateSize()},this._zoomHandler=e=>{if(!e.isTrusted)return;let t=this.#i;if(t.zoomControl&&et.matchModifiers(e,t.zoomModifiers)){tt(e);let r=e.deltaY<0,s=.1,i=r?-1:1,a=s*i,o=1+a,l=b.offsetRect(e.currentTarget),c={x:e.clientX,y:e.clientY};this._zoom(o,l,c)}},this._panHandler=e=>{let t=this.#s,r=this._getPanPoint(e);if(!b.isNullOrEmpty(t&&t.point)&&!b.isNull(r)){tt(e);let s=t.factor,i=t.box,a=t.point;this.viewbox={x:i.x-s*(r.x-a.x),y:i.y-s*(r.y-a.y),width:i.width,height:i.height}}},this._panStartHandler=e=>{if(!this.#i.panControl||!e.isTrusted)return;let r=this.#r,s=this.viewbox||{x:0,y:0,width:r.width,height:r.height},i=this._getPanPoint(e);if(i){tt(e),this._stage.style.pointerEvents="none";let a=this._getActualAspectRatio(),o=s.width/r.width,l=s.height/r.height,c=a.slice?Math.min(o,l):Math.max(o,l);this.#s={point:i,box:s,factor:c}}},this._panEndHandler=e=>{this._stage.style.pointerEvents="",this.#s=null}}get stage(){return this._stage}snapshot(e,t,r){let s=this.adapter;return b.isNull(s)?Promise.resolve(null):s.snapshot(this,e,t,r)}#e;#t;get transformMatrix(){return this.#t}_transformMatrixScale(){let e=this.#r||b.offsetRect(this._stage);var t=this.#e||e;let r=this.viewbox||t,s=this.aspectRatio||"none",i=s==="none"?"stretch":s.slice?"cover":"contain";return rt.findTransform(r,t,i).a}validate(e){return e instanceof O&&b.isNull(e.parent)}draw(e,t=!1){let r=this.adapter;if(!this.disabled&&!b.isNull(r)){let s=new CustomEvent("predraw",{cancelable:!0});this.dispatchEvent(s),s.defaultPrevented||(r.draw(this,e,t),this.dispatchEvent(new CustomEvent("draw")))}}_drawDebounced(e,t=!1){!b.isNull(e)&&Q(e)?this.draw(e,t):this.draw(e)}requestDraw(e,t=!1){this._drawDebounced(e,t)}_buildUpDatasourceFromDOM(){this.datasource=(this.items||[]).slice()}#i;#r;_getActualAspectRatio(){let e=this.aspectRatio||"none",t=e==="none"?"mid":e.x,r=e==="none"?"mid":e.y,s=e==="none"?!1:e.slice;return{x:t,y:r,slice:s}}_zoomFromValue(e){let t=this.#r;if(b.isNull(t))return;let r=t,s=this.#e||r,i=this.viewbox||s,a=this.aspectRatio||"none",o=a==="none"?"stretch":a.slice?"cover":"contain",l=rt.findTransform(i,r,o),c=rt.findTransform(s,r,o),h=l.a,m=c.a*e,f=h/m;this._zoom(f)}_zoom(e,t,r){b.isNull(t)&&(t=b.offsetRect(this._stage)),b.isNull(r)&&(r={x:t.x+t.width*.5,y:t.y+t.height*.5});let s=this.#r,i=this.viewbox||s,a=Math.min(i.width,i.height),o=a*e,l=a*e;if(o>0&&l>0){let c=this._getActualAspectRatio(),h=c.x,p=c.y,m=c.slice,f=i.width/i.height,d=m?Math.max(t.width,t.height):Math.min(t.width,t.height),v,y;switch(h){case"mid":v=(o-i.width)*(r.x-t.x-.5*(t.width-d))/(d*f);break;case"max":v=(o-i.width)*(r.x-t.x-(t.width-d))/(d*f);break;default:v=(o-i.width)*(r.x-t.x)/(d*f);break}switch(p){case"mid":y=(l-i.height)*(r.y-t.y-.5*(t.height-d))/(d*f);break;case"max":y=(l-i.height)*(r.y-t.y-(t.height-d))/(d*f);break;default:y=(l-i.height)*(r.y-t.y)/(d*f);break}let k=i.x-v,N=i.y-y;this.viewbox={x:k,y:N,width:o,height:l}}}_getPanPoint(e){let t=this.#i;return e instanceof MouseEvent&&et.matchModifiers(e,t.panModifiers)?et.getEventCoordinates(e).page:null}#s;_invalidateSize(){this.adapter.invalidateSize(this,this.#r);let e=this.#t;this.#t=this.adapter.getTransformMatrix(this),this.dispatchEvent(new Zt({propertyName:"transformMatrix",currentValue:this.#t,oldValue:e})),this.zoom=this._transformMatrixScale(),this.dispatchEvent(new Ge.ResizeEvent(this.#r))}viewActivatedCallback(){super.viewActivatedCallback();let e=this.adapter;b.isNull(e)||(e.initialize(this),this._invalidateSize(),this._drawDebounced());let t=this._resize;t.addEventListener(Ge.ResizeEventName,this._resizeHandler,!1);let r=this._stage;t.target=r;let s={capture:!1,passive:!0};r.addEventListener("wheel",this._zoomHandler,!1),r.addEventListener("mousedown",this._panStartHandler,!1),r.addEventListener("touchstart",this._panStartHandler,s),window.addEventListener("mousemove",this._panHandler,!1),window.addEventListener("mouseup",this._panEndHandler,!1),window.addEventListener("touchmove",this._panHandler,s),window.addEventListener("touchend",this._panEndHandler,s)}propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),e){case"adapter":b.isNull(t)||t.dispose(this),b.isNull(r)||(r.initialize(this),this._invalidateSize(),this._drawDebounced());break;case"aspectRatio":b.isNull(this.adapter)||this._invalidateSize();break;case"viewbox":b.isNull(this.adapter)||this._invalidateSize(),this.#e??=this.viewbox||null;break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":r!==this._transformMatrixScale()&&this._zoomFromValue(r);break;case"options":this.#i=de(this);break;case"disabled":case"datasource":this._drawDebounced();break}}disconnectedCallback(){let e=this._resize,t=this._stage;b.isNull(e)||e.removeEventListener(Ge.ResizeEventName,this._resizeHandler,!1),b.isNull(t)||(t.removeEventListener("wheel",this._zoomHandler,!1),t.removeEventListener("mousedown",this._panStartHandler,!1),t.removeEventListener("touchstart",this._panStartHandler),window.removeEventListener("mousemove",this._panHandler,!1),window.removeEventListener("mouseup",this._panEndHandler,!1),window.removeEventListener("touchmove",this._panHandler),window.removeEventListener("touchend",this._panEndHandler)),b.isNull(this.adapter)||this.adapter.dispose(this),super.disconnectedCallback()}};I([fe({converter:Ne.Element})],A.prototype,"adapter",void 0);I([fe({reflectBack:!0,converter:Ne.Rect})],A.prototype,"viewbox",void 0);I([fe({emit:!1,reflectBack:!0,converter:er})],A.prototype,"aspectRatio",void 0);I([fe({emit:!1,converter:Ne.Json})],A.prototype,"datasource",void 0);I([fe({emit:!1,converter:Ne.Json})],A.prototype,"options",void 0);I([fe({converter:Ne.Number})],A.prototype,"zoom",void 0);I([Et("."+_t+"-2d")],A.prototype,"_stage",void 0);I([Et(Ue+"-resize")],A.prototype,"_resize",void 0);I([qt(!0)],A.prototype,"_drawDebounced",null);A=I([Jt({tagName:Ue+"-"+"2d",shadow:!0,template:`<${Ue}-resize watch-position="true"></${Ue}-resize><div class="${_t}-2d" part="container"></div><slot></slot>`})],A);var Dt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},O=class n extends tr.PacemCrossItemsContainerElement{validate(e){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||Nt.findAncestorOfType(this,A)}get parent(){return this._drawableParent=this._drawableParent||Nt.findAncestor(this,e=>e instanceof n)}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),s||e==="hide"&&this.stage?.draw(this)}};Dt([Mt({emit:!1,reflectBack:!0,converter:At.String})],O.prototype,"tag",void 0);Dt([Mt({emit:!1,converter:At.Boolean})],O.prototype,"inert",void 0);import{Watch as C,PropertyConverters as $,Utils as rr}from"@pacem/pacem-core";import{Matrix2D as ir}from"@pacem/pacem-foundation";var S=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},sr=Math.PI/180,w=class extends O{#e=ir.identity;viewActivatedCallback(){super.viewActivatedCallback(),this._updateTransformMatrix()}propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"rotate":case"scaleX":case"scaleY":case"translateX":case"translateY":this._updateTransformMatrix();case"opacity":this.stage?.draw(this);break}}_updateTransformMatrix(){let e=sr*(this.rotate??0),t=Math.cos(e),r=Math.sin(e),s=(this.scaleX??1)*t,i=-r,a=r,o=(this.scaleY??1)*t,l=this.translateX??0,c=this.translateY??0;this.#e={a:s,b:i,c:a,d:o,e:l,f:c}}get transformMatrix(){let e=this.#e;return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}}};S([C({emit:!1,converter:$.Number})],w.prototype,"rotate",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"scaleX",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"scaleY",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"translateX",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"translateY",void 0);S([C({emit:!1,converter:$.Number})],w.prototype,"opacity",void 0);var T=class extends w{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"stroke":case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":case"fill":rr.isNull(this.stage)||this.stage.draw(this);break}}};S([C({emit:!1,converter:$.String})],T.prototype,"stroke",void 0);S([C({emit:!1,converter:$.String})],T.prototype,"fill",void 0);S([C({emit:!1,converter:{convert:n=>n?.split(",").map(e=>parseInt(e)).filter(e=>!Number.isNaN(e)),convertBack:n=>n?.join(",")}})],T.prototype,"dashArray",void 0);S([C({emit:!1,converter:$.Number})],T.prototype,"lineWidth",void 0);S([C({emit:!1,converter:$.String})],T.prototype,"lineJoin",void 0);S([C({emit:!1,converter:$.String})],T.prototype,"lineCap",void 0);var _=class extends T{propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),s||e==="data"&&this.stage?.draw(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.recomputeShape()}recomputeShape(){let{pathData:e,vertices:t,boundingRect:r}=this.getShapeGeometry();this.#t=t,this.#e=r,this.data=e}get pathData(){return this.data}#e;get boundingRect(){return this.#e}#t;get vertices(){return this.#t}};S([C({emit:!1,converter:$.String})],_.prototype,"data",void 0);import{CustomElement as ar,Watch as nr,P as or,Utils as lr}from"@pacem/pacem-core";var Pt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},ue=class extends T{validate(e){return e instanceof O&&e.parent===this}#e=[];get childDrawables(){return this.#e}propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),e){case"items":case"datasource":this.#e=r||[];let i=this.stage;lr.isNull(i)||i.draw(this,!0);break}}};Pt([nr({emit:!1})],ue.prototype,"datasource",void 0);ue=Pt([ar({tagName:or+"-"+"2d"+"-group"})],ue);import{CustomElement as St,Watch as j,PropertyConverters as V,P as Ct,Utils as Ae}from"@pacem/pacem-core";import{Rect as De}from"@pacem/pacem-foundation";var H=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},it,st;function cr(n,e,t){let r=2*e,s=n.x,i=n.y;return{pathData:`M ${s} ${i} m ${-e},0 a ${e},${t} 0 1,1 ${r},0 a ${e},${t} 0 1,1 ${-r},0`,vertices:[],boundingRect:{x:s-e,y:i-t,width:2*e,height:2*t}}}function hr(n,e,t,r,s){let i=Math.PI/180,a=i*r,o=i*s,l=N=>e*t/Math.sqrt(Math.pow(Math.cos(N)*t,2)+Math.pow(Math.sin(N)*e,2)),c=l(a),h=l(o),p=(N,U)=>({x:N*Math.cos(U),y:N*Math.sin(U)}),m=p(c,a),f=p(h,o),d={x:n.x+m.x,y:n.y+m.y},v={x:n.x+f.x,y:n.y+f.y},y=De.expand(n,d,v);s<r&&(s+=360),(r<=0&&s>0||s>=360)&&(y=De.expand(y,{x:n.x+e,y:n.y})),(r<=90&&s>90||s>=450)&&(y=De.expand(y,{x:n.x,y:n.y+t})),(r<=180&&s>180||s>=540)&&(y=De.expand(y,{x:n.x-e,y:n.y})),(r<=270&&s>270||s>=630)&&(y=De.expand(y,{x:n.x,y:n.y-t}));let k=o-a>Math.PI?"1":"0";return{pathData:`M ${d.x} ${d.y} A ${e},${t} 0 ${k},1 ${v.x},${v.y} L ${n.x},${n.y} Z`,vertices:[d,v],boundingRect:y}}function at(n,e,t,r,s){for(r??=0,s??=0,r%=360,s%=360;r<0;)r+=360;for(;s<r;)s+=360;return(r-s).isCloseTo(0)?cr(n,e,t):hr(n,e,t,r,s)}var W=it=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"center":case"rx":case"ry":case"start":case"end":this.recomputeShape();break}}getPathData(){let e=this.rx,t=this.ry,r=this.center,s=this.start??0,i=this.end??0;return!Ae.isNull(r)&&!Ae.isNull(e)&&!Ae.isNull(t)?it.getPathData(r,e,t,s,i):null}getShapeGeometry(){let e=this.center??{x:0,y:0},t=this.rx??0,r=this.ry??0;return at(e,t,r,this.start,this.end)}static getPathData(e={x:NaN,y:NaN},t=NaN,r=NaN,s,i){let{pathData:a}=at(e,t,r,s,i);return a}};H([j({emit:!1,converter:V.Point})],W.prototype,"center",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"rx",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"ry",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"start",void 0);H([j({emit:!1,converter:V.Number})],W.prototype,"end",void 0);W=it=H([St({tagName:Ct+"-"+"2d"+"-ellipse"})],W);var ee=st=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"center":case"radius":case"start":case"end":this.recomputeShape();break}}getPathData(){let e=this.radius,t=this.center;return!Ae.isNull(t)&&!Ae.isNull(e)?st.getPathData(t,e,this.start,this.end):null}getShapeGeometry(){let e=this.center??{x:0,y:0},t=this.radius??0;return at(e,t,t,this.start,this.end)}static getPathData(e={x:NaN,y:NaN},t=NaN,r,s){return W.getPathData(e,t,t,r,s)}};H([j({emit:!1,converter:V.Point})],ee.prototype,"center",void 0);H([j({emit:!1,converter:V.Number})],ee.prototype,"radius",void 0);H([j({emit:!1,converter:V.Number})],ee.prototype,"start",void 0);H([j({emit:!1,converter:V.Number})],ee.prototype,"end",void 0);ee=st=H([St({tagName:Ct+"-"+"2d"+"-circle"})],ee);import{CustomElement as pr,Watch as ve,PropertyConverters as Pe,P as fr,Utils as me}from"@pacem/pacem-core";var te=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},nt;function Me(n){let e=n[2],t=n[4]??e,r=n[6]==="cut"?ge.Cut:ge.Rounded;return{rx:Tt(e),ry:Tt(t),type:r}}function Tt(n){return{value:parseFloat(n),unit:n.endsWith("%")?"pct":"u"}}function J(n){return`${n.value}${n.unit==="pct"?"%":""}`}var dr=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;function ur(n){let e,t=[];for(;e=dr.exec(n);)t.push(e);switch(t.length){case 1:let r=Me(t[0]);return[r,r,r,r];case 4:let s=Me(t[0]),i=Me(t[1]),a=Me(t[2]),o=Me(t[3]);return[s,i,a,o];default:return null}}function mr(n){let e=n[0],t=n[1],r=n[2],s=n[3],i=J(e.rx),a=J(e.ry),o=J(t.rx),l=J(t.ry),c=J(r.rx),h=J(r.ry),p=J(s.rx),m=J(s.ry);return`${i},${a} ${o},${l} ${c},${h} ${p},${m}`}var ge;(function(n){n.Rounded="rounded",n.Cut="cut"})(ge||(ge={}));var X=nt=class extends _{propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),!s&&(e==="x"||e==="y"||e==="w"||e==="h"||e==="r"||e==="cornerType")&&this.recomputeShape()}getPathData(){let e=this.x,t=this.y,r=this.w,s=this.h,i=this.r??{rx:{value:0},ry:{value:0},type:ge.Rounded};return me.isArray(i)||(i=[i,i,i,i]),i=i.map(a=>typeof a=="number"?{rx:{value:a},ry:{value:a},type:this.cornerType}:a),!me.isNull(e)&&!me.isNull(t)&&!me.isNull(r)&&!me.isNull(s)?nt.getPathData(e,t,r,s,i):null}getShapeGeometry(){let e=this.x,t=this.y,r=e+this.w,s=t+this.h;return{pathData:this.getPathData(),vertices:[{x:e,y:t},{x:r,y:t},{x:r,y:s},{x:e,y:s}],boundingRect:{x:e,y:t,width:this.w,height:this.h}}}static getPathData(e=NaN,t=NaN,r=NaN,s=NaN,i=null){if(!i)return`M ${e} ${t} h ${r} v ${s} h ${-r} z`;me.isArray(i)||(i=[i,i,i,i]);let a=i[0],o=i[1],l=i[2],c=i[3],h=K=>K.unit==="pct"?K.value*.01*r:K.value,p=K=>K.unit==="pct"?K.value*.01*s:K.value,m=h(a.rx),f=p(a.ry),d=h(o.rx),v=p(o.ry),y=h(l.rx),k=p(l.ry),N=h(c.rx),U=p(c.ry),D=`M ${e},${t+f}`;return a.type==="cut"?D+=` l ${m},${-f}`:D+=` a ${m} ${f} 0 0 1 ${m} ${-f}`,D+=` h ${r-m-d}`,o.type==="cut"?D+=` l ${d},${v}`:D+=` a ${d} ${v} 0 0 1 ${d} ${v}`,D+=` v ${s-v-k}`,l.type==="cut"?D+=` l ${-y},${k}`:D+=` a ${y} ${k} 0 0 1 ${-y} ${k}`,D+=` h ${-(r-y-N)}`,c.type==="cut"?D+=` l ${-N},${-U}`:D+=` a ${N} ${U} 0 0 1 ${-N} ${-U}`,D+" z"}};te([ve({emit:!1,converter:Pe.Number})],X.prototype,"x",void 0);te([ve({emit:!1,converter:Pe.Number})],X.prototype,"y",void 0);te([ve({emit:!1,converter:Pe.Number})],X.prototype,"w",void 0);te([ve({emit:!1,converter:Pe.Number})],X.prototype,"h",void 0);te([ve({emit:!1,converter:{convert:n=>ur(n),convertBack:n=>mr(n)}})],X.prototype,"r",void 0);te([ve({emit:!1,converter:Pe.String})],X.prototype,"cornerType",void 0);X=nt=te([pr({tagName:fr+"-"+"2d"+"-rect"})],X);import{CustomElement as gr,Watch as $t,PropertyConverters as Rt,P as vr,Utils as ze}from"@pacem/pacem-core";var lt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},ot,Se=ot=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"from":case"to":this.recomputeShape();break}}getShapeGeometry(){let e=this.from,t=this.to;if(ze.isNull(e)||ze.isNull(t))return z.empty();let r=e.x,s=e.y,i=t.x,a=t.y,o={x:Math.min(r,i),y:Math.min(s,a),width:Math.abs(r-i),height:Math.abs(s-a)};return{pathData:this.getPathData(),vertices:[e,t],boundingRect:o}}getPathData(){let e=this.from,t=this.to;return!ze.isNull(e)&&!ze.isNull(t)?ot.getPathData(e,t):null}static getPathData(e={x:NaN,y:NaN},t={x:NaN,y:NaN}){let r=e.x,s=e.y,i=t.x,a=t.y;return`M ${r} ${s} L ${i} ${a}`}};lt([$t({emit:!1,converter:Rt.Point})],Se.prototype,"from",void 0);lt([$t({emit:!1,converter:Rt.Point})],Se.prototype,"to",void 0);Se=ot=lt([gr({tagName:vr+"-"+"2d"+"-line"})],Se);import{CustomElement as yr,Watch as xr,PropertyConverters as br,P as Er}from"@pacem/pacem-core";var kt=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},We=class extends _{constructor(){super(...arguments),this.getPathData=()=>this.d}propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),e==="d"&&!s&&this.recomputeShape()}getShapeGeometry(){return{pathData:this.getPathData(),boundingRect:null,vertices:[]}}};kt([xr({emit:!1,converter:br.String})],We.prototype,"d",void 0);We=kt([yr({tagName:Er+"-"+"2d"+"-path"})],We);import{CustomElement as _r,Watch as je,PropertyConverters as Ve,P as wr,Utils as Lt}from"@pacem/pacem-core";var Te=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Ce,re=Ce=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"radius":case"starIndent":case"sides":this.recomputeShape();break}}getPathData(){let e=this.sides,t=this.radius,r=this.center;return!Lt.isNull(e)&&!Lt.isNull(t)?Ce.getPathData(r,t,e,this.starIndent):null}getShapeGeometry(){let e=this.center??{x:0,y:0},t=this.radius??0,r=this.sides??3,s=this.starIndent;return r<3?z.empty():Ce.getShapeGeometry(e,t,r,s)}static getShapeGeometry(e,t,r,s=0){let i={x:e.x,y:e.y-t},a=`M ${i.x} ${i.y}`,o=[i],l=2*Math.PI/r,c=.5*l,h=s>0,p=t*Math.cos(c);for(let f=1;f<r;f++){let d=f*l,v=e.x+Math.sin(d)*t,y=e.y-Math.cos(d)*t;if(h){let k=p*(1-s),N=d-c,U=e.x+Math.sin(N)*k,D=e.y-Math.cos(N)*k;a+=` L ${U} ${D} L ${v} ${y}`,o.push({x:U,y:D})}else a+=` L ${v} ${y}`;o.push({x:v,y})}if(h){let f=p*(1-s),d=2*Math.PI-c,v=e.x+Math.sin(d)*f,y=e.y-Math.cos(d)*f;a+=` L ${v} ${y}`,o.push({x:v,y})}o.push(i);let m=t*2;return{pathData:a+" Z",vertices:o,boundingRect:{x:i.x-t,y:i.y,width:m,height:m}}}static getPathData(e,t,r,s=0){let{pathData:i}=Ce.getShapeGeometry(e,t,r,s);return i}};Te([je({emit:!1,converter:Ve.Number})],re.prototype,"sides",void 0);Te([je({emit:!1,converter:Ve.Number})],re.prototype,"radius",void 0);Te([je({emit:!1,converter:Ve.Point})],re.prototype,"center",void 0);Te([je({emit:!1,converter:Ve.Number})],re.prototype,"starIndent",void 0);re=Ce=Te([_r({tagName:wr+"-"+"2d"+"-polygon"})],re);import{CustomElement as Nr,Watch as Ot,PropertyConverters as Dr,P as Ar,Utils as Mr}from"@pacem/pacem-core";import{parseAsNumericalArray as Pr}from"@pacem/pacem-foundation";var ct=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Xe,Sr={convert:n=>{let e=Pr(n);if(e.length%2===0){let t=[];for(let r=0;r<e.length;r+=2)t.push({x:e[r],y:e[r+1]});return t}return JSON.parse(n)},convertBack:n=>JSON.stringify(n)},$e=Xe=class extends _{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"points":case"closed":this.recomputeShape();break}}static getShapeGeometry(e,t){if(Mr.isNullOrEmpty(e))return z.empty();let r="",s=Number.MAX_VALUE,i=Number.MAX_VALUE,a=Number.MIN_VALUE,o=Number.MIN_VALUE;for(let c=0;c<e.length;c++){let{x:h,y:p}=e[c];r+=`${c===0?"M":"L"} ${h} ${p} `,s=Math.min(s,h),a=Math.max(a,h),i=Math.min(i,p),o=Math.max(o,p)}let l={x:s,y:i,width:a-s,height:o-i};return t&&(r+="Z"),{pathData:r,vertices:e,boundingRect:l}}getShapeGeometry(){return Xe.getShapeGeometry(this.points,this.closed)}getPathData(){let{pathData:e}=this.getShapeGeometry();return e}static getPathData(e,t){let{pathData:r}=Xe.getShapeGeometry(e,t);return r}};ct([Ot({emit:!1,converter:Sr})],$e.prototype,"points",void 0);ct([Ot({emit:!1,converter:Dr.Boolean})],$e.prototype,"closed",void 0);$e=Xe=ct([Nr({tagName:Ar+"-"+"2d"+"-polyline"})],$e);import{CustomElement as Cr,Watch as Re,PropertyConverters as ke,P as Tr}from"@pacem/pacem-core";var ye=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},R=class extends w{propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"src":case"x":case"y":case"width":case"height":this.stage?.draw(this);break}}};ye([Re({emit:!1,converter:ke.String})],R.prototype,"src",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"x",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"y",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"width",void 0);ye([Re({emit:!1,converter:ke.Number})],R.prototype,"height",void 0);R=ye([Cr({tagName:Tr+"-"+"2d"+"-image"})],R);import{CustomElement as $r,Watch as q,PropertyConverters as Z,P as Rr,Utils as kr}from"@pacem/pacem-core";var Y=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},M=class extends w{propertyChangedCallback(e,t,r,s){if(!s)switch(e){case"text":case"color":case"fontFamily":case"fontSize":case"fontWeight":case"fontStyle":case"anchor":kr.isNull(this.stage)||this.stage.draw(this);break}}};Y([q({emit:!1,converter:Z.String})],M.prototype,"text",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"color",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"fontFamily",void 0);Y([q({emit:!1,converter:Z.Number})],M.prototype,"fontSize",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"fontWeight",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"fontStyle",void 0);Y([q({emit:!1,converter:Z.Point})],M.prototype,"anchor",void 0);Y([q({emit:!1,converter:Z.String})],M.prototype,"textAnchor",void 0);M=Y([$r({tagName:Rr+"-"+"2d"+"-text"})],M);import{Utils as Ht,UI as Ye}from"@pacem/pacem-core";import{Rect as Lr}from"@pacem/pacem-foundation";var E=class{static stageDispatch(e,t,r){e instanceof EventTarget&&e.dispatchEvent(new Ee("stage"+t,e,r,e.transformMatrix))}static isValidViewbox(e){return!Ht.isNullOrEmpty(e)&&Lr.isRect(e)&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.width)&&Number.isFinite(e.height)}static itemDispatch(e,t,r){if(Ht.isNull(e?.stage))return!1;var s,i,a;r instanceof Event?i=r:s={item:e,offset:r},typeof t=="string"?a=t:(a=t.type,i=t.originalEvent);let o=e.stage.transformMatrix,l=()=>r instanceof Event?new L(a,e,i,o):new ne(a,{detail:s,cancelable:a===Ye.DragDropEventType.Init||a===Ye.DragDropEventType.Drag},i,o),c=r instanceof Event?new L("item"+a,e,i,o):new ne("item"+a,{detail:s,cancelable:a===Ye.DragDropEventType.Init||a===Ye.DragDropEventType.Drag},i,o);var h=!1;if(e instanceof EventTarget){let p=l();e.dispatchEvent(p),h=p.defaultPrevented}return e.stage.dispatchEvent(c),h||c.defaultPrevented}};import{CustomElement as Gr,P as Ut,CustomElementUtils as ft,Utils as g,Logging as Ur,CustomEventUtils as ht,UI as B,avoidHandler as zr}from"@pacem/pacem-core";import{Matrix2D as F,Rect as Wr}from"@pacem/pacem-foundation";import{PacemEventTarget as Or,Utils as It}from"@pacem/pacem-core";var Hr=.9,xe=class extends Or{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}snapshotElement(e,t,r,s){let i=!It.isNullOrEmpty(t),a=r??(i?"image/jpeg":null),o=s??(i?Hr:null);return It.snapshotElement(e,t,a,o)}};var Ir=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},Be="pacem:2d-canvas-scene",Gt="pacem:2d-parent-matrix",jr="pacem:2d-world-matrix",Fe=ft.setAttachedPropertyValue,Le=ft.getAttachedPropertyValue;function ie(n){return n==="none"||g.isNullOrEmpty(n)}function Oe(n,e){return g.isNull(n)?e:n}var pt=class extends xe{constructor(){super(...arguments),this._pointer={page:{x:Number.NaN,y:Number.NaN},screen:{x:Number.NaN,y:Number.NaN},client:{x:Number.NaN,y:Number.NaN}},this._dragInitHandler=e=>{let t=this._hitTarget;if(g.isNull(t)||!P(t)||!t.draggable){e.preventDefault();return}let r=e.detail,s=t,i=t.transformMatrix??F.identity,a=Le(t,Gt,F.identity);r.data={item:s,initialTransformMatrix:i,parentMatrix:a},E.itemDispatch(s,e,{x:0,y:0})&&e.preventDefault()},this._draggingHandler=e=>{zr(e),this._dragging=!0;let t=e.detail,r=t.data,s={x:t.currentPosition.x-t.origin.x,y:t.currentPosition.y-t.origin.y},i={x:s.x*r.parentMatrix.a+r.initialTransformMatrix.e,y:s.y*r.parentMatrix.d+r.initialTransformMatrix.f},a=r.item.stage.transformMatrix;if(!E.itemDispatch(r.item,e,{x:s.x*a.a+a.e,y:s.y*a.d+a.f}))if(r.item instanceof w)r.item.translateX=i.x,r.item.translateY=i.y;else{let l=r.initialTransformMatrix,c={a:l.a,b:l.b,c:l.c,d:l.d,e:i.x,f:i.y};g.extend(r.item,{transformMatrix:c})}},this._dragEndHandler=e=>{this._dragging=!1;let t=e.detail,r=t.data,s=r.item.transformMatrix;E.itemDispatch(r.item,e,{x:s.e,y:s.f})},this._mouseleaveHandler=e=>{if(this._dragging)return;let t=this._hitTarget;if(g.isNull(t))return;this._scopeEvent=e;let r={x:Number.NaN,y:Number.NaN};this._pointer={page:r,screen:r,client:r};let s=e.srcElement,i=Le(s,Be);this._requestDraw(i)},this._mousemoveHandler=e=>{this._scopeEvent=e,this._pointer=ht.getEventCoordinates(e);let t=e.srcElement,r=Le(t,Be);this._requestDraw(r),this._dragging||g.isNull(this._hitTarget)||E.stageDispatch(r,"move",e)},this._mouseDownUpHandler=e=>{this._scopeEvent=e,this._pointer=ht.getEventCoordinates(e);let t=e.target;if(t instanceof HTMLCanvasElement){let r=Le(t,Be),s=this._hitTarget,i=e.type.replace(/^(mouse|touch)/,""),a=i==="end"?"click":i,o=de(r);ht.matchModifiers(e,o.clickModifiers)&&(!g.isNull(s)&&s.stage===r?E.itemDispatch(s,a,e):E.stageDispatch(r,a,e))}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(e,t,r,s){let i=this._scenes;if(i.has(e)){let a=i.get(e).context,o=a.canvas;return this.snapshotElement(o,t,r,s)}else return Promise.resolve(null)}getCanvas(e){let t=this._scenes;return t.has(e)?t.get(e).context.canvas:null}_getScreenInverseMatrix(e,t){return F.invert({a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+t.x,f:e.f+t.y})}getTransformMatrix(e){let t=this._scenes;return t.has(e)?t.get(e).screenInverseMatrix:F.identity}#e;viewActivatedCallback(){super.viewActivatedCallback();let e=this.#e=document.createElement(Ut+"-drag-drop");e.mode=B.DragDataMode.Copy,e.dropBehavior=B.DropBehavior.None,e.spillBehavior=B.DropTargetMissedBehavior.None;let t=document.createElement("div");t.hidden=!0,e.floater=t,ft.findAncestorShell(this).appendChild(e),e.addEventListener(B.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(B.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(B.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){let e=this.#e;g.isNull(e)||(e.removeEventListener(B.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(B.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(B.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,t){let r=this._scenes;if(!g.isNull(e)&&!g.isNullOrEmpty(t)&&r.has(e)){let s=r.get(e),i=s.context;i.canvas.width=t.width,i.canvas.height=t.height;let a=s.offset=g.offsetRect(i.canvas),o={x:0,y:0,width:t.width,height:t.height},l=e.aspectRatio,c=e.viewbox;if(E.isValidViewbox(c)){let h="contain",p="center",m="middle";if(typeof l=="object"){switch(h=l.slice?"cover":"contain",l.x){case"min":p="left";break;case"max":p="right";break}switch(l.y){case"min":m="top";break;case"max":m="bottom";break}}let f=Wr.findTransform({x:0,y:0,width:c.width,height:c.height},o,h,p,m),d=F.translate(f,{x:-f.a*c.x,y:-f.a*c.y});s.transformMatrix=d,s.screenInverseMatrix=this._getScreenInverseMatrix(d,a)}else s.transformMatrix=F.identity}this._requestDraw(e)}getHitTarget(e){let t=this._hitTarget;return!g.isNull(t)&&t.stage===e?t:null}initialize(e){if(g.isNull(e))throw"Provided scene is null or undefined.";let t=this._scenes,r=this.#e;if(t.has(e)){let o=t.get(e).context.canvas;return g.isNull(r)||r.register(o),o}let s=e.stage;s.innerHTML="";let i=document.createElement("canvas");i.setAttribute("part","stage"),Fe(i,Be,e);let a=i.getContext("2d");return i.addEventListener("mousemove",this._mousemoveHandler,!1),i.addEventListener("mouseleave",this._mouseleaveHandler,!1),i.addEventListener("touchstart",this._mouseDownUpHandler,{passive:!0}),i.addEventListener("touchmove",this._mouseDownUpHandler,{passive:!0}),i.addEventListener("touchend",this._mouseDownUpHandler,{passive:!0}),i.addEventListener("click",this._mouseDownUpHandler,!1),i.addEventListener("mousedown",this._mouseDownUpHandler,!1),i.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.appendChild(i),t.set(e,{context:a,transformMatrix:F.identity,offset:g.offsetRect(i),screenInverseMatrix:F.identity}),g.isNull(r)||r.register(i),i}dispose(e){let t=this._scenes;if(t.has(e)){var r=t.get(e),s=r.context,i=s.canvas;let a=this.#e;g.isNull(a)||a.unregister(i),i.removeEventListener("click",this._mouseDownUpHandler,!1),i.removeEventListener("touchend",this._mouseDownUpHandler,!1),i.removeEventListener("mousedown",this._mouseDownUpHandler,!1),i.removeEventListener("mouseup",this._mouseDownUpHandler,!1),i.removeEventListener("touchstart",this._mouseDownUpHandler),i.removeEventListener("mouseleave",this._mouseleaveHandler,!1),i.removeEventListener("mousemove",this._mousemoveHandler,!1),i.remove(),t.delete(e)}}_requestDraw(e){let t=this._handles;t.has(e)&&cancelAnimationFrame(t.get(e));let r=()=>(this.draw(e),requestAnimationFrame(()=>{}));t.set(e,r())}#t;draw(e){let t=this._scenes,r=this._handles;if(!g.isNull(e)){if(e.adapter!==this){t.has(e)&&(t.delete(e),r.get(e));return}if(!t.has(e)){this.initialize(e);return}r.has(e)&&cancelAnimationFrame(r.get(e));let s=this._hitTarget,i=e.datasource||[];this._hitTarget=null;let a=t.get(e),o=a.context,l=o.canvas;this.#t=getComputedStyle(l),o.resetTransform(),o.clearRect(0,0,l.width,l.height);let c=a.transformMatrix;o.setTransform(c);let h=this._pointer,p=a.offset,m=Number.isNaN(h.page.x)||Number.isNaN(h.page.y)?null:{x:h.page.x-p.x,y:h.page.y-p.y};for(let d of i)this._draw(e,o,d,{transformMatrix:c},m);let f=this._hitTarget;f!=s&&(g.isNull(s)||(s instanceof Element&&s.dispatchEvent(new L("out",s,this._scopeEvent,c)),e.dispatchEvent(new L("itemout",s,this._scopeEvent,c))),g.isNull(f)||(f instanceof Element&&f.dispatchEvent(new L("over",f,this._scopeEvent,c)),e.dispatchEvent(new L("itemover",f,this._scopeEvent,c))))}}_draw(e,t,r,s,i){if(r.stage??=e,oe(r)&&r.hide)return;P(r)&&r.draggable&&!r.hide&&!r.inert&&Fe(r,Gt,t.getTransform().inverse());let a;P(r)&&(a=r.transformMatrix,!g.isNull(a)&&!F.isIdentity(a)&&t.transform(a.a,a.b,a.c,a.d,a.e,a.f));let o=s;if(we(r)&&(o=be.combine(r,s,t.getTransform()),this._setPresentationState(t,o)),ce(r)||r instanceof _)this._drawShape(t,r,i);else if(he(r)||r instanceof M)this._drawText(t,r,i);else if(pe(r)||r instanceof R)this._drawImage(t,r,i);else if(Q(r)||r instanceof ue)for(let l of r.childDrawables||[])this._draw(e,t,l,o,i);P(r)&&r.draggable&&!r.hide&&!r.inert&&Fe(r,jr,t.getTransform().inverse()),this._setPresentationState(t,s)}_setPresentationState(e,t){if(e.setTransform(t.transformMatrix),!g.isNullOrEmpty(t.stroke)&&!ie(t.stroke)?e.strokeStyle=t.stroke:e.strokeStyle="transparent",g.isNullOrEmpty(t.lineWidth)?e.lineWidth=0:e.lineWidth=t.lineWidth,g.isNullOrEmpty(t.dashArray)?e.setLineDash([]):e.setLineDash(t.dashArray),g.isNullOrEmpty(t.lineCap)?e.lineCap="butt":e.lineCap=t.lineCap,g.isNullOrEmpty(t.lineJoin)?e.lineJoin="miter":e.lineJoin=t.lineJoin,typeof t.fill=="object"&&!g.isNullOrEmpty(t.fill)){let{stops:r}=t.fill,s;if(_e(t.fill)){let{start:i,end:a}=t.fill;s=e.createLinearGradient(i.x,i.y,a.x,a.y)}else if(le(t.fill)){let{center:i,radius:a}=t.fill;s=e.createRadialGradient(i.x,i.y,a,i.x,i.y,a)}else throw new Error("Unmanaged gradient type.");for(let i of r)s.addColorStop(i.offset,i.color);e.fillStyle=s}else!g.isNullOrEmpty(t.fill)&&typeof t.fill=="string"&&!ie(t.fill)?e.fillStyle=t.fill:e.fillStyle="transparent";g.isNullOrEmpty(t.opacity)?e.globalAlpha=1:e.globalAlpha=t.opacity}_drawImage(e,t,r){let s="pacem:2d-canvas-imagesrc",i=Le(t,s),a=()=>{let o=i.naturalWidth,l=i.naturalHeight,c=t.width,h=t.height;if(c>0&&h>0||(c>0?h=l*c/o:h>0?c=o*h/l:(c=o,h=l)),!this._dragging&&!t.inert&&!g.isNull(r)){let p=new Path2D(`M ${t.x} ${t.y} h ${c} v ${h} H ${t.x} Z`);e.isPointInPath(p,r.x,r.y)&&(this._hitTarget=t)}e.globalAlpha=Oe(t.opacity,1),e.drawImage(i,t.x,t.y,c,h)};g.isNull(i)?(i=new Image,i.src=t.src,i.onload=()=>{Fe(t,s,i),a()}):a()}_drawText(e,t,r){let s=this.DefaultShapeValues,i=e.fillStyle=Oe(t.color,s.stroke),a=e.getTransform(),o=t.fontSize>0?`${t.fontSize}px`:this.#t.fontSize,l=t.fontStyle||this.#t.fontStyle,c=t.fontWeight||this.#t.fontWeight;e.font=`${l} ${c} ${o} ${t.fontFamily??this.#t.fontFamily}`,e.textAlign=t.textAnchor==="middle"?"center":t.textAnchor,e.fillText(t.text,t.anchor.x,t.anchor.y),e.globalAlpha=Oe(t.opacity,1);let h=!ie(i);if(!this._dragging&&!t.inert&&!g.isNull(r)){let p=e.measureText(t.text),m=p.width,f=p.actualBoundingBoxAscent+p.actualBoundingBoxDescent,d=t.anchor.x-p.actualBoundingBoxLeft,v=t.anchor.y-p.actualBoundingBoxAscent,y=new Path2D(`M ${d} ${v} h ${m} v ${f} H ${d} z`);h&&e.isPointInPath(y,r.x,r.y)&&(this._hitTarget=t)}}_drawShape(e,t,r){if(g.isNullOrEmpty(t?.pathData))return;e.beginPath();let s=typeof e.fillStyle!="string"||!ie(e.fillStyle),i=typeof e.strokeStyle!="string"||!ie(e.strokeStyle);var a=new Path2D(t.pathData);!this._dragging&&!t.inert&&!g.isNull(r)&&(s&&e.isPointInPath(a,r.x,r.y)||i&&e.isPointInStroke(a,r.x,r.y))&&(this._hitTarget=t),i&&e.stroke(a),s&&e.fill(a);let o=!g.isNullOrEmpty(t.vertices)&&t.vertices.length>1,l=!g.isNull(t.markerEnd),c=!g.isNull(t.markerStart),h=!g.isNull(t.markerMid);if((l||h||c)&&(o||this.log(Ur.LogLevel.Warn,"Not enough vertices were explicited in order to make markers renderable.")),o){let p=e.getTransform();if(c){let m=t.markerEnd,f=t.vertices[1],d=t.vertices[0],v=Math.atan2(d.y-f.y,d.x-f.x);this._drawMarker(e,m,d,v)}if(h){let m=t.markerEnd;for(let f=1;f<t.vertices.length-1;f++){e.setTransform(p);let d=t.vertices[f],v=t.vertices[f+1],y=Math.atan2(v.y-d.y,v.x-d.x);this._drawMarker(e,m,v,y)}}if(l){e.setTransform(p);let m=t.markerEnd,f=t.vertices[t.vertices.length-2],d=t.vertices[t.vertices.length-1],v=Math.atan2(d.y-f.y,d.x-f.x);this._drawMarker(e,m,d,v)}}}_drawMarker(e,t,r,s){let i=this.DefaultShapeValues,a=t.ref?.x||0,o=t.ref?.y||0,l=(t.width||1)*e.lineWidth,c=(t.width||1)*e.lineWidth,h=t.viewbox,p={x:0,y:0,width:l,height:c};g.isNull(h)&&(h=p);let m={a:p.width/h.width,d:p.height/h.height};e.translate(r.x,r.y),e.rotate(s),e.scale(m.a,m.d),e.translate(-a,-o),e.fillStyle=Oe(t.fill,i.fill),e.strokeStyle=Oe(t.stroke,i.stroke);let f=!ie(t.fill),d=!ie(t.stroke);var v=new Path2D(t.pathData);f&&e.fill(v),d&&e.stroke(v)}};pt=Ir([Gr({tagName:Ut+"-"+"2d"+"-canvas-adapter"})],pt);import{CustomElement as Xr,P as Xt,CustomElementUtils as qe,CustomEventUtils as zt,Utils as u,UI as se,avoidHandler as Yr}from"@pacem/pacem-core";import{Matrix2D as dt}from"@pacem/pacem-foundation";var Vr=function(n,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,r);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(i=(s<3?a(i):s>3?a(e,t,i):a(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},G="http://www.w3.org/2000/svg",He="pacem:2-svg-drawable",Je="pacem:2d-svg-stage",Ie=qe.getAttachedPropertyValue,Wt=qe.setAttachedPropertyValue,jt=qe.deleteAttachedPropertyValue;function ut(n,e){return u.isNull(n)?e:n}function Vt(n,e,t){return t>=n.children.length?(n.appendChild(e),null):n.replaceChild(e,n.children.item(t))}var mt=class extends xe{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=e=>{let t=e.detail,r=t.element,s=Ie(r,He),i=s.stage.transformMatrix,a=s.transformMatrix??dt.identity;t.data={stageTransformMatrix:i,item:s,initialTransformMatrix:a},E.itemDispatch(s,e,{x:0,y:0})&&e.preventDefault()},this._draggingHandler=e=>{Yr(e),this.#t=!0;let t=e.detail.element,r=e.detail.data,s=e.detail,i={x:(s.currentPosition.x-s.origin.x)*r.stageTransformMatrix.a,y:(s.currentPosition.y-s.origin.y)*r.stageTransformMatrix.d},a={x:i.x+r.initialTransformMatrix.e,y:i.y+r.initialTransformMatrix.f},o={x:i.x+r.stageTransformMatrix.e,y:i.y+r.stageTransformMatrix.f};if(!E.itemDispatch(r.item,e,o)){let c=r.initialTransformMatrix;t.style.transform=`matrix(${c.a},${c.b},${c.c},${c.d},${a.x},${a.y})`}},this._dragEndHandler=e=>{this.#t=!1;let t=e.detail,r=t.element,s=t.data,i=u.deserializeTransform(r.style),a={x:i.e,y:i.f};if(s.item instanceof w)s.item.translateX=a.x,s.item.translateY=a.y;else{let o=s.initialTransformMatrix,l={a:o.a,b:o.b,c:o.c,d:o.d,e:a.x,f:a.y};u.extend(s.item,{transformMatrix:l})}r.style.transform="",E.itemDispatch(s.item,e,a)},this._mouseleaveHandler=e=>{if(this.#t)return;let t=this._hitTarget;u.isNull(t)||(this._hitTarget=null,u.isNull(t)||(this.#e.unregister(this._items.get(t)),E.itemDispatch(t,"out",e)))},this._mousemoveHandler=e=>{var t=zt.getEventCoordinates(e).client;if(!this.#t){var r=null;e.target.getRootNode().elementsFromPoint(t.x,t.y).find(l=>(r=Ie(l,He),r&&!r.inert));var s=this._hitTarget,i=r;(u.isNull(r&&r.stage)||!this._scenes.has(r.stage)||r.inert)&&(i=null);let o=this._hitTarget=i;if(i!==s&&(u.isNull(s)||(this.#e.unregister(this._items.get(s)),E.itemDispatch(s,"out",e)),u.isNull(i)||(i.draggable&&this.#e.register(this._items.get(i)),E.itemDispatch(i,"over",e))),u.isNull(o)){let l=e.currentTarget,c=Ie(l,Je);u.isNull(c)||E.stageDispatch(c,"move",e)}}},this._mouseDownUpHandler=e=>{let t=e.currentTarget;if(t instanceof SVGSVGElement){let r=Ie(t,Je),s=this._hitTarget,i=e.type.replace(/^mouse/,""),a=de(r);zt.matchModifiers(e,a.clickModifiers)&&(!u.isNull(s)&&s.stage===r?E.itemDispatch(s,i,e):E.stageDispatch(r,i,e))}},this._scenes=new WeakMap,this._markers=new WeakMap,this._gradients=new WeakMap,this._items=new WeakMap}snapshot(e,t,r,s){if(this._scenes.has(e)){let i=this._scenes.get(e);return this.snapshotElement(i,t,r,s)}else return Promise.resolve(null)}getTransformMatrix(e){let t=this._scenes;return t.has(e)?t.get(e).getScreenCTM().inverse():dt.identity}#e;viewActivatedCallback(){super.viewActivatedCallback();let e=this.#e=document.createElement(Xt+"-drag-drop");e.mode=se.DragDataMode.Self,qe.findAncestorShell(this).appendChild(e),e.addEventListener(se.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(se.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(se.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){let e=this.#e;u.isNull(e)||(e.removeEventListener(se.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(se.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(se.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,t){let r=this._scenes;if(!u.isNull(e)&&!u.isNullOrEmpty(t)&&r.has(e)){var s=r.get(e);s.setAttribute("width",t.width+""),s.setAttribute("height",t.height+"");let i=e.viewbox,a=e.aspectRatio;E.isValidViewbox(i)?s.setAttribute("viewBox",`${i.x} ${i.y} ${i.width} ${i.height}`):s.removeAttribute("viewBox"),u.isNullOrEmpty(a)||typeof a=="string"?s.removeAttribute("preserveAspectRatio"):s.setAttribute("preserveAspectRatio",`xM${a.x.substring(1)}YM${a.y.substring(1)} ${a.slice?"slice":"meet"}`)}}initialize(e){if(u.isNull(e))throw"Provided scene is null or undefined.";let t=this._scenes;if(t.has(e))return t.get(e);let r=e.stage;r.innerHTML="",this._items=new WeakMap;var s=document.createElementNS(G,"svg");s.setAttribute("part","stage"),Wt(s,Je,e),r.appendChild(s),t.set(e,s);let i={passive:!1,capture:!0};return s.addEventListener("mousemove",this._mousemoveHandler,!1),s.addEventListener("click",this._mouseDownUpHandler,!1),s.addEventListener("mousedown",this._mouseDownUpHandler,!1),s.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.addEventListener("mouseleave",this._mouseleaveHandler,!1),s}dispose(e){let t=this._scenes;if(t.has(e)){var r=t.get(e);r.removeEventListener("mousemove",this._mousemoveHandler),r.removeEventListener("click",this._mouseDownUpHandler),r.removeEventListener("mousedown",this._mouseDownUpHandler),r.removeEventListener("mouseup",this._mouseDownUpHandler),r.removeEventListener("mouseleave",this._mouseleaveHandler),jt(r,Je),r.remove(),t.delete(e)}}getHitTarget(e){return this._hitTarget}draw(e,t,r=!1){let s=this._scenes,i=this._items;if(!u.isNull(e)){if(e.adapter===this)s.has(e)||this.initialize(e);else{s.has(e)&&s.delete(e);return}var a=e.datasource,o=!0,l=s.get(e);!u.isNull(t)&&i.has(t)&&(a=[t],l=i.get(t).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(e,l,a||[],o,r)}}#t;_hasItems(e){return Q(e)}_disposeSvg(e){if(!u.isNull(e)){var t=Ie(e,He);jt(e,He),this._items.delete(t)}}_draw(e,t,r,s,i){let a=this._items,o=0;if(t.firstElementChild instanceof SVGDefsElement&&o++,!u.isNullOrEmpty(r))for(let l of r){l.stage??=e;let c;if(a.has(l)?(c=a.get(l),c.parentNode!==t&&this._disposeSvg(Vt(t,c,o))):(c=this._buildSVGElement(l),Wt(c,He,l),this._disposeSvg(Vt(t,c,o)),a.set(l,c)),oe(l)&&(l.hide?c.setAttribute("display","none"):c.removeAttribute("display"),c.style.transform=""),ce(l)){let h=c;h.setAttribute("d",ut(l.pathData,"M0,0"));for(let{marker:p,suffix:m}of[{marker:l.markerStart,suffix:"start"},{marker:l.markerEnd,suffix:"end"},{marker:l.markerMid,suffix:"mid"}])if(p){let f=this._ensureMarker(t,p);h.setAttribute("marker-"+m,`url(#${f.id})`)}else h.removeAttribute("marker-"+m)}else if(he(l)){let h=c;h.textContent=l.text,h.style.fill=u.isNullOrEmpty(l.color)?"":l.color,h.style.fontFamily=u.isNullOrEmpty(l.fontFamily)?"":l.fontFamily,h.style.fontSize=u.isNull(l.fontSize)?"":l.fontSize+"px",u.isNullOrEmpty(l.fontWeight)||(h.style.fontWeight=l.fontWeight),u.isNullOrEmpty(l.fontStyle)||(h.style.fontStyle=l.fontStyle),h.setAttribute("text-anchor",ut(l.textAnchor,"start")),u.isNull(l.anchor)?(h.removeAttribute("x"),h.removeAttribute("y")):(h.setAttribute("x",l.anchor.x.toString()),h.setAttribute("y",l.anchor.y.toString()))}else if(pe(l)){let h=c;h.setAttribute("href",l.src),h.setAttribute("preserveAspectRatio","none"),l.width>0?h.setAttribute("width",""+l.width):h.removeAttribute("width"),l.height>0?h.setAttribute("height",""+l.height):h.removeAttribute("height"),u.isNull(l.x)?h.removeAttribute("x"):h.setAttribute("x",""+l.x),u.isNull(l.y)?h.removeAttribute("y"):h.setAttribute("y",""+l.y)}if(P(l)){let h=l.transformMatrix;u.isNull(h)||dt.isIdentity(h)?c.removeAttribute("transform"):c.setAttribute("transform",`matrix(${h.a} ${h.b} ${h.c} ${h.d} ${h.e} ${h.f})`);let p=ut(l.opacity,1);p===1?c.removeAttribute("opacity"):c.setAttribute("opacity",""+p)}if(we(l)){if(u.isNullOrEmpty(l.fill))c.removeAttribute("fill");else if(typeof l.fill=="string")c.setAttribute("fill",l.fill);else{let h=this._ensureGradient(t,l.fill);c.setAttribute("fill",`url(#${h.id})`)}u.isNullOrEmpty(l.stroke)?c.removeAttribute("stroke"):c.setAttribute("stroke",l.stroke),u.isNullOrEmpty(l.dashArray)?c.removeAttribute("stroke-dasharray"):c.setAttribute("stroke-dasharray",l.dashArray.join(" ")),u.isNullOrEmpty(l.lineCap)?c.removeAttribute("stroke-linecap"):c.setAttribute("stroke-linecap",l.lineCap),u.isNullOrEmpty(l.lineJoin)?c.removeAttribute("stroke-linejoin"):c.setAttribute("stroke-linejoin",l.lineJoin),u.isNullOrEmpty(l.lineWidth)?c.removeAttribute("stroke-width"):c.setAttribute("stroke-width",""+l.lineWidth)}l.inert?c.style.pointerEvents="none":c.style.pointerEvents="",(s||i)&&this._hasItems(l)&&this._draw(e,c,l.childDrawables,!0,i),o++}if(s)for(let l=t.children.length-1;l>=o;l--){let c=t.children.item(l);this._disposeSvg(c),c.remove()}}_buildSVGElement(e){return ce(e)||e instanceof _?document.createElementNS(G,"path"):he(e)||e instanceof M?document.createElementNS(G,"text"):pe(e)||e instanceof R?document.createElementNS(G,"image"):document.createElementNS(G,"g")}_ensureGradient(e,t){let r=this._gradients;r.has(e)||r.set(e,new WeakMap);let s=r.get(e),i=_e(t),a=le(t);if(s.has(t)){let h=s.get(t);(i&&h instanceof SVGLinearGradientElement||a&&h instanceof SVGRadialGradientElement)&&(h.remove(),s.delete(t))}if(!s.has(t)){let h=e,p;for(;u.isNull(p=h.querySelector(":scope > defs"));){let m=h.parentElement;if(m instanceof SVGElement)h=m;else break}if(u.isNull(p))throw new Error("Must provide a <defs> element.");var o=null;if(i)o=document.createElementNS(G,"linearGradient");else if(le(t))o=document.createElementNS(G,"radialGradient");else throw new Error("Unmanaged gradient type.");o.setAttribute("gradientUnits","userSpaceOnUse"),o.setAttribute("id",`grad-${u.uniqueCode()}`),p.appendChild(o),s.set(t,o)}let l=s.get(t);i?(l.setAttribute("x1",t.start.x.toString()),l.setAttribute("y1",t.start.y.toString()),l.setAttribute("x2",t.end.x.toString()),l.setAttribute("y2",t.end.y.toString())):a&&(l.setAttribute("cx",t.center.x.toString()),l.setAttribute("cy",t.center.y.toString()),l.setAttribute("r",t.radius.toString()));let c=0;for(let h of t.stops){for(;l.children.length<=c;){let m=document.createElementNS(G,"stop");l.appendChild(m)}let p=l.children.item(c);p.setAttribute("offset",h.offset*100+"%"),p.setAttribute("stop-color",h.color),u.isNull(h.opacity)||p.setAttribute("stop-opacity",h.opacity.toString()),c++}for(;l.children.length>t.stops.length;){let h=l.children.item(l.children.length-1);l.removeChild(h)}return l}_ensureMarker(e,t){let r=this._markers;r.has(e)||r.set(e,new WeakMap);let s=r.get(e);if(!s.has(t)){let o=document.createElementNS(G,"marker");s.set(t,o);let l=document.createElementNS(G,"path");o.appendChild(l),o.setAttribute("id","mark"+u.uniqueCode());let c=e,h;for(;u.isNull(h=c.querySelector(":scope > defs"));){let p=c.parentElement;if(p instanceof SVGElement)c=p;else break}if(u.isNull(h))throw new Error("Must provide a <defs> element.");h.appendChild(o)}let i=s.get(t),a=i.firstElementChild;return i.setAttribute("orient","auto-start-reverse"),u.isNullOrEmpty(t.viewbox)?i.removeAttribute("viewBox"):i.setAttribute("viewBox",`${t.viewbox.x} ${t.viewbox.y} ${t.viewbox.width} ${t.viewbox.height}`),u.isNullOrEmpty(t.ref)?(i.removeAttribute("refX"),i.removeAttribute("refY")):(i.setAttribute("refX",t.ref.x.toString()),i.setAttribute("refY",t.ref.y.toString())),t.height>0?i.setAttribute("markerHeight",t.height.toString()):i.removeAttribute("markerHeight"),t.width>0?i.setAttribute("markerWidth",t.width.toString()):i.removeAttribute("markerWidth"),a.setAttribute("d",t.pathData),u.isNullOrEmpty(t.fill)?a.removeAttribute("fill"):a.setAttribute("fill",t.fill),u.isNullOrEmpty(t.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",t.stroke),i}};mt=Vr([Xr({tagName:Xt+"-"+"2d"+"-svg-adapter"})],mt);export{Yt as Components,xt as Drawing};