@pacem/pacem 1.0.0-babbage → 1.0.0-bernoulli

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.
Files changed (49) hide show
  1. package/dist/browser/pacem-2d.js +1 -1
  2. package/dist/browser/pacem-2d.min.js +2 -2
  3. package/dist/browser/pacem-2d.min.js.map +1 -1
  4. package/dist/browser/pacem-3d.js +1 -1
  5. package/dist/browser/pacem-3d.min.js +2 -2
  6. package/dist/browser/pacem-3d.min.js.map +1 -1
  7. package/dist/browser/pacem-charts.js +1 -1
  8. package/dist/browser/pacem-charts.min.js +2 -2
  9. package/dist/browser/pacem-charts.min.js.map +1 -1
  10. package/dist/browser/pacem-cms.js +1 -1
  11. package/dist/browser/pacem-cms.min.js +2 -2
  12. package/dist/browser/pacem-cms.min.js.map +1 -1
  13. package/dist/browser/pacem-core.js +1 -1
  14. package/dist/browser/pacem-core.min.js +2 -2
  15. package/dist/browser/pacem-core.min.js.map +1 -1
  16. package/dist/browser/pacem-foundation.js +1 -1
  17. package/dist/browser/pacem-foundation.min.js +2 -2
  18. package/dist/browser/pacem-foundation.min.js.map +1 -1
  19. package/dist/browser/pacem-fx.js +1 -1
  20. package/dist/browser/pacem-fx.min.js +2 -2
  21. package/dist/browser/pacem-fx.min.js.map +1 -1
  22. package/dist/browser/pacem-logging.js +1 -1
  23. package/dist/browser/pacem-logging.min.js +2 -2
  24. package/dist/browser/pacem-logging.min.js.map +1 -1
  25. package/dist/browser/pacem-maps.js +1 -1
  26. package/dist/browser/pacem-maps.min.js +2 -2
  27. package/dist/browser/pacem-maps.min.js.map +1 -1
  28. package/dist/browser/pacem-media.js +1 -1
  29. package/dist/browser/pacem-media.min.js +2 -2
  30. package/dist/browser/pacem-media.min.js.map +1 -1
  31. package/dist/browser/pacem-networking.js +1 -1
  32. package/dist/browser/pacem-networking.min.js +2 -2
  33. package/dist/browser/pacem-networking.min.js.map +1 -1
  34. package/dist/browser/pacem-numerical.js +1 -1
  35. package/dist/browser/pacem-numerical.min.js +2 -2
  36. package/dist/browser/pacem-numerical.min.js.map +1 -1
  37. package/dist/browser/pacem-plus.js +1 -1
  38. package/dist/browser/pacem-plus.min.js +2 -2
  39. package/dist/browser/pacem-plus.min.js.map +1 -1
  40. package/dist/browser/pacem-scaffolding.js +1 -1
  41. package/dist/browser/pacem-scaffolding.min.js +2 -2
  42. package/dist/browser/pacem-scaffolding.min.js.map +1 -1
  43. package/dist/browser/pacem-ui.js +1 -1
  44. package/dist/browser/pacem-ui.min.js +2 -2
  45. package/dist/browser/pacem-ui.min.js.map +1 -1
  46. package/dist/bundle/pacem.min.mjs +1 -1
  47. package/dist/bundle/pacem.mjs +1 -1
  48. package/dist/typings/index.d.ts +1 -1
  49. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (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 l{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 c(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 h(t){return s(t)&&"pathData"in t}function d(t){return s(t)&&"childDrawables"in t&&!e.Utils.isNullOrEmpty(t.childDrawables)}function p(t){return s(t)&&"text"in t&&"string"==typeof t.text}function u(t){return s(t)&&"src"in t&&"string"==typeof t.src}class m 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 v{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}}class g extends m{}class f extends m{constructor(t,e,r,i){super(t,{detail:e,bubbles:!0,cancelable:!0},r,i)}}class y extends m{constructor(t,e,r,i=e.transformMatrix){super(t,{detail:e,bubbles:!0,cancelable:!0},r,i)}}var x=Object.freeze({__proto__:null,DragEvent:g,DrawableEvent:f,PresentationState:l,Shape:v,StageEvent:y,UI2DEvent:m,isDrawable:i,isGroup:d,isImage:u,isLinearGradient:a,isPresentationObject:c,isRadialGradient:o,isShape:h,isText:p,isUiObject:s}),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};const w=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,E={convert:t=>{const e=w.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"}`},N={panControl:!0,zoomControl:!0,panModifiers:[e.EventKeyModifier.AltKey],zoomModifiers:[e.EventKeyModifier.AltKey],clickModifiers:[]};function _(t){const r=t instanceof C?t.options:{};return e.Utils.extend({},N,r)}let C=class extends e.Components.PacemItemsContainerElement{constructor(){super(...arguments),this.#t=t.Matrix2D.identity,this.#e=N,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 U&&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)&&d(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=_(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()}};b([e.Watch({converter:e.PropertyConverters.Element})],C.prototype,"adapter",void 0),b([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Rect})],C.prototype,"viewbox",void 0),b([e.Watch({emit:!1,reflectBack:!0,converter:E})],C.prototype,"aspectRatio",void 0),b([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],C.prototype,"datasource",void 0),b([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],C.prototype,"options",void 0),b([e.Watch({converter:e.PropertyConverters.Number})],C.prototype,"zoom",void 0),b([e.ViewChild("."+e.PCSS+"-2d")],C.prototype,"_stage",void 0),b([e.ViewChild(e.P+"-resize")],C.prototype,"_resize",void 0),b([e.Debounce(!0)],C.prototype,"_drawDebounced",null),C=b([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>`})],C);var P=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 U 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,C)}get parent(){return this._drawableParent=this._drawableParent||e.CustomElementUtils.findAncestor(this,t=>t instanceof U)}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)}}P([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],U.prototype,"tag",void 0),P([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],U.prototype,"inert",void 0);var D=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 M=Math.PI/180;class S extends U{#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=M*(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}}}D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"rotate",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"scaleX",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"scaleY",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"translateX",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"translateY",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],S.prototype,"opacity",void 0);class k extends S{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)}}}D([e.Watch({emit:!1,converter:e.PropertyConverters.String})],k.prototype,"stroke",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.String})],k.prototype,"fill",void 0),D([e.Watch({emit:!1,converter:{convert:t=>t?.split(",").map(t=>parseInt(t)).filter(t=>!Number.isNaN(t)),convertBack:t=>t?.join(",")}})],k.prototype,"dashArray",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],k.prototype,"lineWidth",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.String})],k.prototype,"lineJoin",void 0),D([e.Watch({emit:!1,converter:e.PropertyConverters.String})],k.prototype,"lineCap",void 0);class A extends k{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}}D([e.Watch({emit:!1,converter:e.PropertyConverters.String})],A.prototype,"data",void 0);var $=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 R=class extends k{validate(t){return t instanceof U&&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)}}};$([e.Watch({emit:!1})],R.prototype,"datasource",void 0),R=$([e.CustomElement({tagName:e.P+"-"+"2d-group"})],R);var T,W,O=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 H(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 L=T=class extends A{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:T.getPathData(i,t,r,s,n)}getShapeGeometry(){return H(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}=H(t,e,r,i,s);return n}};O([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],L.prototype,"center",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],L.prototype,"rx",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],L.prototype,"ry",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],L.prototype,"start",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],L.prototype,"end",void 0),L=T=O([e.CustomElement({tagName:e.P+"-"+"2d-ellipse"})],L);let I=W=class extends A{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:W.getPathData(r,t,this.start,this.end)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0;return H(t,e,e,this.start,this.end)}static getPathData(t={x:NaN,y:NaN},e=NaN,r,i){return L.getPathData(t,e,e,r,i)}};O([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],I.prototype,"center",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],I.prototype,"radius",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],I.prototype,"start",void 0),O([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],I.prototype,"end",void 0),I=W=O([e.CustomElement({tagName:e.P+"-"+"2d-circle"})],I);var z,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};function V(t){const e=t[2],r=t[4]??e,i="cut"===t[6]?J.Cut:J.Rounded;return{rx:G(e),ry:G(r),type:i}}function G(t){return{value:parseFloat(t),unit:t.endsWith("%")?"pct":"u"}}function B(t){return`${t.value}${"pct"===t.unit?"%":""}`}const F=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;var J;!function(t){t.Rounded="rounded",t.Cut="cut"}(J||(J={}));let Y=z=class extends A{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:J.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:z.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"}};j([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Y.prototype,"x",void 0),j([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Y.prototype,"y",void 0),j([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Y.prototype,"w",void 0),j([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],Y.prototype,"h",void 0),j([e.Watch({emit:!1,converter:{convert:t=>function(t){let e;const r=[];for(;e=F.exec(t);)r.push(e);switch(r.length){case 1:const t=V(r[0]);return[t,t,t,t];case 4:return[V(r[0]),V(r[1]),V(r[2]),V(r[3])];default:return null}}(t),convertBack:t=>function(t){const e=t[0],r=t[1],i=t[2],s=t[3];return`${B(e.rx)},${B(e.ry)} ${B(r.rx)},${B(r.ry)} ${B(i.rx)},${B(i.ry)} ${B(s.rx)},${B(s.ry)}`}(t)}})],Y.prototype,"r",void 0),j([e.Watch({emit:!1,converter:e.PropertyConverters.String})],Y.prototype,"cornerType",void 0),Y=z=j([e.CustomElement({tagName:e.P+"-"+"2d-rect"})],Y);var X,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 K=X=class extends A{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 v.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:X.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}`}};q([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],K.prototype,"from",void 0),q([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],K.prototype,"to",void 0),K=X=q([e.CustomElement({tagName:e.P+"-"+"2d-line"})],K);var Z=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 Q=class extends A{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:[]}}};Z([e.Watch({emit:!1,converter:e.PropertyConverters.String})],Q.prototype,"d",void 0),Q=Z([e.CustomElement({tagName:e.P+"-"+"2d-path"})],Q);var tt,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};let rt=tt=class extends A{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:tt.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?v.empty():tt.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}=tt.getShapeGeometry(t,e,r,i);return s}};et([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],rt.prototype,"sides",void 0),et([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],rt.prototype,"radius",void 0),et([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],rt.prototype,"center",void 0),et([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],rt.prototype,"starIndent",void 0),rt=tt=et([e.CustomElement({tagName:e.P+"-"+"2d-polygon"})],rt);var it,st=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 nt={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 at=it=class extends A{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 v.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 it.getShapeGeometry(this.points,this.closed)}getPathData(){const{pathData:t}=this.getShapeGeometry();return t}static getPathData(t,e){const{pathData:r}=it.getShapeGeometry(t,e);return r}};st([e.Watch({emit:!1,converter:nt})],at.prototype,"points",void 0),st([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],at.prototype,"closed",void 0),at=it=st([e.CustomElement({tagName:e.P+"-"+"2d-polyline"})],at);var ot=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 lt=class extends S{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)}}};ot([e.Watch({emit:!1,converter:e.PropertyConverters.String})],lt.prototype,"src",void 0),ot([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],lt.prototype,"x",void 0),ot([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],lt.prototype,"y",void 0),ot([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],lt.prototype,"width",void 0),ot([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],lt.prototype,"height",void 0),lt=ot([e.CustomElement({tagName:e.P+"-"+"2d-image"})],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};let ht=class extends S{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)}}};ct([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ht.prototype,"text",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ht.prototype,"color",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ht.prototype,"fontFamily",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],ht.prototype,"fontSize",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ht.prototype,"fontWeight",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ht.prototype,"fontStyle",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.Point})],ht.prototype,"anchor",void 0),ct([e.Watch({emit:!1,converter:e.PropertyConverters.String})],ht.prototype,"textAnchor",void 0),ht=ct([e.CustomElement({tagName:e.P+"-"+"2d-text"})],ht);class dt{static stageDispatch(t,e,r){t instanceof EventTarget&&t.dispatchEvent(new y("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 f("item"+a,t,n,o):new g("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 f(a,t,n,o):new g(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 pt 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 ut=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 mt="pacem:2d-canvas-scene",vt="pacem:2d-parent-matrix",gt=e.CustomElementUtils.setAttachedPropertyValue,ft=e.CustomElementUtils.getAttachedPropertyValue;function yt(t){return"none"===t||e.Utils.isNullOrEmpty(t)}function xt(t,r){return e.Utils.isNull(t)?r:t}let bt=class extends pt{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=ft(i,vt,t.Matrix2D.identity);n.data={item:a,initialTransformMatrix:o,parentMatrix:l};dt.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(!dt.itemDispatch(i.item,t,{x:s*o.a+o.e,y:n*o.d+o.f}))if(i.item instanceof S)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;dt.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=ft(s,mt);this._requestDraw(n)},this._mousemoveHandler=t=>{this._scopeEvent=t,this._pointer=e.CustomEventUtils.getEventCoordinates(t);const r=t.srcElement,i=ft(r,mt);this._requestDraw(i),this._dragging||e.Utils.isNull(this._hitTarget)||dt.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=ft(r,mt),s=this._hitTarget,n=t.type.replace(/^(mouse|touch)/,""),a="end"===n?"click":n,o=_(i);e.CustomEventUtils.matchModifiers(t,o.clickModifiers)&&(e.Utils.isNull(s)||s.stage!==i?dt.stageDispatch(i,a,t):dt.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(dt.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"),gt(a,mt,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 f("out",s,this._scopeEvent,c)),t.dispatchEvent(new f("itemout",s,this._scopeEvent,c))),e.Utils.isNull(u)||(u instanceof Element&&u.dispatchEvent(new f("over",u,this._scopeEvent,c)),t.dispatchEvent(new f("itemover",u,this._scopeEvent,c))))}}_draw(r,n,a,o,m){if(a.stage??=r,i(a)&&a.hide)return;let v;s(a)&&a.draggable&&!a.hide&&!a.inert&&gt(a,vt,n.getTransform().inverse()),s(a)&&(v=a.transformMatrix,e.Utils.isNull(v)||t.Matrix2D.isIdentity(v)||n.transform(v.a,v.b,v.c,v.d,v.e,v.f));let g=o;if(c(a)&&(g=l.combine(a,o,n.getTransform()),this._setPresentationState(n,g)),h(a)||a instanceof A)this._drawShape(n,a,m);else if(p(a)||a instanceof ht)this._drawText(n,a,m);else if(u(a)||a instanceof lt)this._drawImage(n,a,m);else if(d(a)||a instanceof R)for(let t of a.childDrawables||[])this._draw(r,n,t,g,m);s(a)&&a.draggable&&!a.hide&&!a.inert&&gt(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)||yt(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||yt(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=ft(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=xt(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=()=>{gt(r,s,n),a()}):a()}_drawText(t,r,i){const s=this.DefaultShapeValues,n=t.fillStyle=xt(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=xt(r.opacity,1);const c=!yt(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||!yt(t.fillStyle),n="string"!=typeof t.strokeStyle||!yt(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=xt(r.fill,n.fill),t.strokeStyle=xt(r.stroke,n.stroke);const u=!yt(r.fill),m=!yt(r.stroke);var v=new Path2D(r.pathData);u&&t.fill(v),m&&t.stroke(v)}};bt=ut([e.CustomElement({tagName:e.P+"-"+"2d-canvas-adapter"})],bt);var wt=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 Et="http://www.w3.org/2000/svg",Nt="pacem:2-svg-drawable",_t="pacem:2d-svg-stage",Ct=e.CustomElementUtils.getAttachedPropertyValue,Pt=e.CustomElementUtils.setAttachedPropertyValue,Ut=e.CustomElementUtils.deleteAttachedPropertyValue;function Dt(t,r){return e.Utils.isNull(t)?r:t}function Mt(t,e,r){return r>=t.children.length?(t.appendChild(e),null):t.replaceChild(e,t.children.item(r))}let St=class extends pt{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=e=>{const r=e.detail,i=r.element,s=Ct(i,Nt),n=s.stage.transformMatrix,a=s.transformMatrix??t.Matrix2D.identity;r.data={stageTransformMatrix:n,item:s,initialTransformMatrix:a};dt.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(!dt.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 S)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="",dt.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)),dt.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=Ct(t,Nt))&&!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)),dt.itemDispatch(s,"out",t)),e.Utils.isNull(n)||(n.draggable&&this.#l.register(this._items.get(n)),dt.itemDispatch(n,"over",t))),e.Utils.isNull(a)){const r=t.currentTarget,i=Ct(r,_t);e.Utils.isNull(i)||dt.stageDispatch(i,"move",t)}}},this._mouseDownUpHandler=t=>{const r=t.currentTarget;if(r instanceof SVGSVGElement){const i=Ct(r,_t),s=this._hitTarget,n=t.type.replace(/^mouse/,""),a=_(i);e.CustomEventUtils.matchModifiers(t,a.clickModifiers)&&(e.Utils.isNull(s)||s.stage!==i?dt.stageDispatch(i,n,t):dt.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;dt.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(Et,"svg");return s.setAttribute("part","stage"),Pt(s,_t,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),Ut(r,_t),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 d(t)}_disposeSvg(t){if(!e.Utils.isNull(t)){var r=Ct(t,Nt);Ut(t,Nt),this._items.delete(r)}}_draw(r,n,a,o,l){const d=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,d.has(v)?(a=d.get(v),a.parentNode!==n&&this._disposeSvg(Mt(n,a,m))):(a=this._buildSVGElement(v),Pt(a,Nt,v),this._disposeSvg(Mt(n,a,m)),d.set(v,a)),i(v)&&(v.hide?a.setAttribute("display","none"):a.removeAttribute("display"),a.style.transform=""),h(v)){const t=a;t.setAttribute("d",Dt(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(p(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",Dt(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(u(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=Dt(v.opacity,1);1===i?a.removeAttribute("opacity"):a.setAttribute("opacity",""+i)}if(c(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||l)&&this._hasItems(v)&&this._draw(r,a,v.childDrawables,!0,l),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 h(t)||t instanceof A?document.createElementNS(Et,"path"):p(t)||t instanceof ht?document.createElementNS(Et,"text"):u(t)||t instanceof lt?document.createElementNS(Et,"image"):document.createElementNS(Et,"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(Et,"linearGradient");else{if(!o(r))throw new Error("Unmanaged gradient type.");c=document.createElementNS(Et,"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(Et,"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(Et,"marker");s.set(r,i);const n=document.createElementNS(Et,"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}};St=wt([e.CustomElement({tagName:e.P+"-"+"2d-svg-adapter"})],St);var kt=Object.freeze({__proto__:null,AdapterUtils:dt,get CornerType(){return J},DrawableElement:U,get Pacem2DElement(){return C},get PacemCanvasAdapterElement(){return bt},get PacemCircleElement(){return I},get PacemEllipseElement(){return L},get PacemGroupElement(){return R},get PacemImageElement(){return lt},get PacemLineElement(){return K},get PacemPathElement(){return Q},get PacemPolygonElement(){return rt},get PacemPolylineElement(){return at},get PacemRectElement(){return Y},get PacemSvgAdapterElement(){return St},get PacemTextElement(){return ht},PresentationElement:k,ShapeElement:A,UiElement:S,getStageOptions:_}),At=Object.freeze({__proto__:null,Drawing:kt}),$t=Object.freeze({__proto__:null,Components:At,Drawing:x});t.DeepMerger.merge($t)}(Pacem,Pacem);
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);
7
7
  //# sourceMappingURL=pacem-2d.min.js.map