pacem 0.51.1-corinth → 0.51.1-delphi

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 (57) hide show
  1. package/dist/css/pacem-dark-content.min.css +1 -1
  2. package/dist/css/pacem-dark-shell.min.css +1 -1
  3. package/dist/css/pacem-dark.min.css +1 -1
  4. package/dist/css/pacem-light-content.min.css +1 -1
  5. package/dist/css/pacem-light-shell.min.css +1 -1
  6. package/dist/css/pacem-light.min.css +1 -1
  7. package/dist/css/pacem-phousys-content.min.css +1 -1
  8. package/dist/css/pacem-phousys-shell.min.css +1 -1
  9. package/dist/css/pacem-phousys.min.css +1 -1
  10. package/dist/js/azure-maps.d.ts +1 -1
  11. package/dist/js/pacem-2d.d.ts +5 -1
  12. package/dist/js/pacem-2d.js +32 -4
  13. package/dist/js/pacem-2d.min.js +2 -2
  14. package/dist/js/pacem-3d.d.ts +1 -1
  15. package/dist/js/pacem-3d.js +1 -1
  16. package/dist/js/pacem-3d.min.js +1 -1
  17. package/dist/js/pacem-charts.d.ts +1 -1
  18. package/dist/js/pacem-charts.js +1 -1
  19. package/dist/js/pacem-charts.min.js +1 -1
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +1 -1
  22. package/dist/js/pacem-cms.min.js +1 -1
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +1 -1
  25. package/dist/js/pacem-core.min.js +1 -1
  26. package/dist/js/pacem-foundation.d.ts +1 -1
  27. package/dist/js/pacem-foundation.js +1 -1
  28. package/dist/js/pacem-foundation.min.js +1 -1
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +1 -1
  31. package/dist/js/pacem-fx.min.js +1 -1
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +1 -1
  34. package/dist/js/pacem-logging.min.js +1 -1
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +1 -1
  37. package/dist/js/pacem-maps.min.js +1 -1
  38. package/dist/js/pacem-media.d.ts +1 -1
  39. package/dist/js/pacem-media.js +1 -1
  40. package/dist/js/pacem-media.min.js +1 -1
  41. package/dist/js/pacem-networking.d.ts +1 -1
  42. package/dist/js/pacem-networking.js +1 -1
  43. package/dist/js/pacem-networking.min.js +1 -1
  44. package/dist/js/pacem-numerical.d.ts +1 -1
  45. package/dist/js/pacem-numerical.js +1 -1
  46. package/dist/js/pacem-numerical.min.js +1 -1
  47. package/dist/js/pacem-plus.d.ts +1 -1
  48. package/dist/js/pacem-plus.js +1 -1
  49. package/dist/js/pacem-plus.min.js +1 -1
  50. package/dist/js/pacem-scaffolding.d.ts +1 -1
  51. package/dist/js/pacem-scaffolding.js +1 -1
  52. package/dist/js/pacem-scaffolding.min.js +1 -1
  53. package/dist/js/pacem-ui.d.ts +1 -1
  54. package/dist/js/pacem-ui.js +1 -1
  55. package/dist/js/pacem-ui.min.js +1 -1
  56. package/dist/js/swagger-types.d.ts +1 -1
  57. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -96,6 +96,8 @@ declare namespace Pacem.Drawing {
96
96
  interface Text extends UiObject {
97
97
  text: string;
98
98
  fontFamily?: string;
99
+ fontWeight?: string;
100
+ fontStyle?: string;
99
101
  fontSize?: number;
100
102
  color?: string;
101
103
  anchor?: Point;
@@ -400,6 +402,8 @@ declare namespace Pacem.Components.Drawing {
400
402
  color: string;
401
403
  fontFamily: string;
402
404
  fontSize: number;
405
+ fontWeight: string;
406
+ fontStyle: string;
403
407
  anchor: Point;
404
408
  textAnchor: 'start' | 'middle' | 'end';
405
409
  propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -694,6 +694,20 @@ var Pacem;
694
694
  var Drawing;
695
695
  (function (Drawing) {
696
696
  var PacemPolylineElement_1;
697
+ const PointArrayOrJsonConverter = {
698
+ convert: (attr) => {
699
+ const arr = Pacem.parseAsNumericalArray(attr);
700
+ if (arr.length % 2 === 0) {
701
+ const retval = [];
702
+ for (let j = 0; j < arr.length; j += 2) {
703
+ retval.push({ x: arr[j], y: arr[j + 1] });
704
+ }
705
+ return retval;
706
+ }
707
+ return JSON.parse(attr);
708
+ },
709
+ convertBack: (prop) => JSON.stringify(prop)
710
+ };
697
711
  let PacemPolylineElement = PacemPolylineElement_1 = class PacemPolylineElement extends Drawing.ShapeElement {
698
712
  propertyChangedCallback(name, old, val, first) {
699
713
  super.propertyChangedCallback(name, old, val, first);
@@ -739,7 +753,7 @@ var Pacem;
739
753
  }
740
754
  };
741
755
  __decorate([
742
- Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Json })
756
+ Pacem.Watch({ emit: false, converter: PointArrayOrJsonConverter })
743
757
  ], PacemPolylineElement.prototype, "points", void 0);
744
758
  __decorate([
745
759
  Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Boolean })
@@ -1282,6 +1296,8 @@ var Pacem;
1282
1296
  case 'color':
1283
1297
  case 'fontFamily':
1284
1298
  case 'fontSize':
1299
+ case 'fontWeight':
1300
+ case 'fontStyle':
1285
1301
  case 'anchor':
1286
1302
  if (!Pacem.Utils.isNull(this.stage)) {
1287
1303
  this.stage.draw(this);
@@ -1303,6 +1319,12 @@ var Pacem;
1303
1319
  __decorate([
1304
1320
  Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Number })
1305
1321
  ], PacemTextElement.prototype, "fontSize", void 0);
1322
+ __decorate([
1323
+ Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
1324
+ ], PacemTextElement.prototype, "fontWeight", void 0);
1325
+ __decorate([
1326
+ Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
1327
+ ], PacemTextElement.prototype, "fontStyle", void 0);
1306
1328
  __decorate([
1307
1329
  Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Point })
1308
1330
  ], PacemTextElement.prototype, "anchor", void 0);
@@ -1865,8 +1887,8 @@ var Pacem;
1865
1887
  _drawText(ctx, item, point) {
1866
1888
  const defaults = this.DefaultShapeValues;
1867
1889
  const color = ctx.fillStyle = fallback(item.color, defaults.stroke);
1868
- const m = ctx.getTransform(), fontSize = item.fontSize > 0 ? `${item.fontSize}px` : this.#canvasCssStyle.fontSize;
1869
- ctx.font = `${fontSize} ${(item.fontFamily ?? this.#canvasCssStyle.fontFamily)}`;
1890
+ const m = ctx.getTransform(), fontSize = item.fontSize > 0 ? `${item.fontSize}px` : this.#canvasCssStyle.fontSize, fontStyle = item.fontStyle || this.#canvasCssStyle.fontStyle, fontWeight = item.fontWeight || this.#canvasCssStyle.fontWeight;
1891
+ ctx.font = `${fontStyle} ${fontWeight} ${fontSize} ${(item.fontFamily ?? this.#canvasCssStyle.fontFamily)}`;
1870
1892
  ctx.textAlign = item.textAnchor === 'middle' ? 'center' : item.textAnchor;
1871
1893
  ctx.fillText(item.text, item.anchor.x, item.anchor.y);
1872
1894
  ctx.globalAlpha = fallback(item.opacity, 1);
@@ -2315,6 +2337,12 @@ var Pacem;
2315
2337
  // text.removeAttribute('font-size');
2316
2338
  //}
2317
2339
  text.style.fontSize = Pacem.Utils.isNull(item.fontSize) ? '' : item.fontSize + 'px';
2340
+ if (!Pacem.Utils.isNullOrEmpty(item.fontWeight)) {
2341
+ text.style.fontWeight = item.fontWeight;
2342
+ }
2343
+ if (!Pacem.Utils.isNullOrEmpty(item.fontStyle)) {
2344
+ text.style.fontStyle = item.fontStyle;
2345
+ }
2318
2346
  text.setAttribute('text-anchor', fallback(item.textAnchor, 'start'));
2319
2347
  if (!Pacem.Utils.isNull(item.anchor)) {
2320
2348
  text.setAttribute('x', item.anchor.x.toString());
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var a,n=arguments.length,s=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(a=t[o])&&(s=(n<3?a(s):n>3?a(e,i,s):a(e,i))||s);return n>3&&s&&Object.defineProperty(e,i,s),s};!function(t){!function(e){function i(e){return!t.Utils.isNull(e)&&"stage"in e}function r(t){return i(t)}function a(e){return"stops"in e&&t.Utils.isArray(e.stops)}e.isDrawable=i,e.isUiObject=r,e.isLinearGradient=function(e){return a(e)&&"start"in e&&t.Point.isPoint(e.start)&&"end"in e&&t.Point.isPoint(e.end)},e.isRadialGradient=function(e){return a(e)&&"center"in e&&t.Point.isPoint(e.center)&&"radius"in e&&"number"==typeof e.radius};e.PresentationState=class PresentationState{static combine(e,i,r=null){return{opacity:(e.opacity??1)*(i.opacity??1),transformMatrix:r??t.Matrix2D.multiply(i.transformMatrix,e.transformMatrix),dashArray:e.dashArray??i.dashArray,fill:e.fill??i.fill,lineCap:e.lineCap??i.lineCap,lineJoin:e.lineJoin??i.lineJoin,lineWidth:e.lineWidth??i.lineWidth,stroke:e.stroke??i.stroke}}},e.isPresentationObject=function(t){return r(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)},e.isShape=function(t){return r(t)&&"pathData"in t},e.isGroup=function(e){return r(e)&&"childDrawables"in e&&!t.Utils.isNullOrEmpty(e.childDrawables)},e.isText=function(t){return r(t)&&"text"in t&&"string"==typeof t.text},e.isImage=function(t){return r(t)&&"src"in t&&"string"==typeof t.src};class UI2DEvent extends t.CustomUIEvent{constructor(t,e,i,r){super(t,e,i),this.#t=r}#t;get transformMatrix(){return this.#t}project(e={x:this.screenX,y:this.screenY}){return t.Matrix2D.multiply(e,this.#t)}}e.UI2DEvent=UI2DEvent;e.Shape=class Shape{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}};e.DragEvent=class DragEvent extends UI2DEvent{};e.DrawableEvent=class DrawableEvent extends UI2DEvent{constructor(t,e,i,r){super(t,{detail:e,bubbles:!0,cancelable:!0},i,r)}};e.StageEvent=class StageEvent extends UI2DEvent{constructor(t,e,i,r=e.transformMatrix){super(t,{detail:e,bubbles:!0,cancelable:!0},i,r)}}}(t.Drawing||(t.Drawing={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){i.TAG_MIDDLE_NAME="2d",i.TWO_PI=2*Math.PI;const r=Math.PI/180;class Pacem2DAdapterElement extends e.PacemEventTarget{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}snapshotElement(e,i,r,a){const n=!t.Utils.isNullOrEmpty(i),s=r??(n?"image/jpeg":null),o=a??(n?.9:null);return t.Utils.snapshotElement(e,i,s,o)}}i.Pacem2DAdapterElement=Pacem2DAdapterElement;class DrawableElement extends e.PacemCrossItemsContainerElement{validate(t){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||t.CustomElementUtils.findAncestorOfType(this,i.Pacem2DElement)}get parent(){return this._drawableParent=this._drawableParent||t.CustomElementUtils.findAncestor(this,(t=>t instanceof DrawableElement))}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(e,i,r,a){if(super.propertyChangedCallback(e,i,r,a),"hide"===e){const e=this.stage;t.Utils.isNull(e)||e.draw(this)}}}__decorate([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],DrawableElement.prototype,"tag",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],DrawableElement.prototype,"inert",void 0),i.DrawableElement=DrawableElement;class UiElement extends DrawableElement{#t=t.Matrix2D.identity;viewActivatedCallback(){super.viewActivatedCallback(),this._updateTransformMatrix()}propertyChangedCallback(e,i,r,a){if(super.propertyChangedCallback(e,i,r,a),!a)switch(e){case"rotate":case"scaleX":case"scaleY":case"translateX":case"translateY":this._updateTransformMatrix();case"opacity":t.Utils.isNull(this.stage)||this.stage.draw(this)}}_updateTransformMatrix(){let t=r*(this.rotate??0),e=Math.cos(t),i=Math.sin(t),a=(this.scaleX??1)*e,n=-i,s=i,o=(this.scaleY??1)*e,l=this.translateX??0,c=this.translateY??0;this.#t={a:a,b:n,c:s,d:o,e:l,f:c}}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}}}__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"rotate",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"scaleX",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"scaleY",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"translateX",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"translateY",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"opacity",void 0),i.UiElement=UiElement;class PresentationElement extends UiElement{propertyChangedCallback(e,i,r,a){if(super.propertyChangedCallback(e,i,r,a),!a)switch(e){case"stroke":case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":case"fill":t.Utils.isNull(this.stage)||this.stage.draw(this)}}}__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"stroke",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"fill",void 0),__decorate([t.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),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PresentationElement.prototype,"lineWidth",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"lineJoin",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"lineCap",void 0),i.PresentationElement=PresentationElement;class ShapeElement extends PresentationElement{propertyChangedCallback(e,i,r,a){if(super.propertyChangedCallback(e,i,r,a),!a&&"data"===e)t.Utils.isNull(this.stage)||this.stage.draw(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.recomputeShape()}recomputeShape(){const{pathData:t,vertices:e,boundingRect:i}=this.getShapeGeometry();this.#e=e,this.#i=i,this.data=t}get pathData(){return this.data}#i;get boundingRect(){return this.#i}#e;get vertices(){return this.#e}}__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],ShapeElement.prototype,"data",void 0),i.ShapeElement=ShapeElement}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemCircleElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"center":case"radius":this.recomputeShape()}}getPathData(){const e=this.radius,r=this.center;return t.Utils.isNull(r)||t.Utils.isNull(e)?null:i.getPathData(r,e)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0,i=2*e,r=t.x,a=t.y;return{pathData:this.getPathData(),boundingRect:{x:r-e,y:a-e,width:i,height:i},vertices:[]}}static getPathData(t={x:NaN,y:NaN},i=NaN){return e.PacemEllipseElement.getPathData(t,i,i)}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"radius",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-circle"})],r),e.PacemCircleElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemEllipseElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"center":case"rx":case"ry":this.recomputeShape()}}getPathData(){const e=this.rx,r=this.ry,a=this.center;return t.Utils.isNull(a)||t.Utils.isNull(e)||t.Utils.isNull(r)?null:i.getPathData(a,e,r)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.rx??0,i=this.ry??0,r=t.x,a=t.y;return{pathData:this.getPathData(),boundingRect:{x:r-e,y:a-i,width:2*e,height:2*i},vertices:[]}}static getPathData(t={x:NaN,y:NaN},e=NaN,i=NaN){const r=2*e;return`M ${t.x} ${t.y} m ${-e},0 a ${e},${i} 0 1,1 ${r},0 a ${e},${i} 0 1,1 ${-r},0`}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"rx",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"ry",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-ellipse"})],r),e.PacemEllipseElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemGroupElement extends e.PresentationElement{validate(t){return t instanceof e.DrawableElement&&t.parent===this}#r=[];get childDrawables(){return this.#r}propertyChangedCallback(e,i,r,a){switch(super.propertyChangedCallback(e,i,r,a),e){case"items":case"datasource":this.#r=r||[];const e=this.stage;t.Utils.isNull(e)||e.draw(this,!0)}}};__decorate([t.Watch({emit:!1})],i.prototype,"datasource",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-group"})],i),e.PacemGroupElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemImageElement extends e.UiElement{propertyChangedCallback(e,i,r,a){if(!a)switch(e){case"src":case"x":case"y":case"width":case"height":t.Utils.isNull(this.stage)||this.stage.draw(this)}}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"src",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"x",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"y",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"width",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"height",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-image"})],i),e.PacemImageElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemLineElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"from":case"to":this.recomputeShape()}}getShapeGeometry(){const e=this.from,i=this.to;if(t.Utils.isNull(e)||t.Utils.isNull(i))return t.Drawing.Shape.empty();const r=e.x,a=e.y,n=i.x,s=i.y,o={x:Math.min(r,n),y:Math.min(a,s),width:Math.abs(r-n),height:Math.abs(a-s)};return{pathData:this.getPathData(),vertices:[e,i],boundingRect:o}}getPathData(){const e=this.from,r=this.to;return t.Utils.isNull(e)||t.Utils.isNull(r)?null:i.getPathData(e,r)}static getPathData(t={x:NaN,y:NaN},e={x:NaN,y:NaN}){return`M ${t.x} ${t.y} L ${e.x} ${e.y}`}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"from",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"to",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-line"})],r),e.PacemLineElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemPathElement extends e.ShapeElement{constructor(){super(...arguments),this.getPathData=()=>this.d}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"d"!==t||r||this.recomputeShape()}getShapeGeometry(){return{pathData:this.getPathData(),boundingRect:null,vertices:[]}}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"d",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-path"})],i),e.PacemPathElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemPolygonElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"radius":case"starIndent":case"sides":this.recomputeShape()}}getPathData(){const e=this.sides,r=this.radius,a=this.center;return t.Utils.isNull(e)||t.Utils.isNull(r)?null:i.getPathData(a,r,e,this.starIndent)}getShapeGeometry(){const e=this.center??{x:0,y:0},r=this.radius??0,a=this.sides??3,n=this.starIndent;return a<3?t.Drawing.Shape.empty():i.getShapeGeometry(e,r,a,n)}static getShapeGeometry(t,e,i,r=0){const a={x:t.x,y:t.y-e};let n=`M ${a.x} ${a.y}`;const s=[a],o=2*Math.PI/i,l=.5*o,c=r>0,h=e*Math.cos(l);for(let a=1;a<i;a++){const i=a*o,d=t.x+Math.sin(i)*e,m=t.y-Math.cos(i)*e;if(c){const e=h*(1-r),a=i-l,o=t.x+Math.sin(a)*e,c=t.y-Math.cos(a)*e;n+=` L ${o} ${c} L ${d} ${m}`,s.push({x:o,y:c})}else n+=` L ${d} ${m}`;s.push({x:d,y:m})}if(c){const e=h*(1-r),i=2*Math.PI-l,a=t.x+Math.sin(i)*e,o=t.y-Math.cos(i)*e;n+=` L ${a} ${o}`,s.push({x:a,y:o})}s.push(a);const d=2*e;return{pathData:n+" Z",vertices:s,boundingRect:{x:a.x-e,y:a.y,width:d,height:d}}}static getPathData(t,e,r,a=0){const{pathData:n}=i.getShapeGeometry(t,e,r,a);return n}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"sides",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"radius",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"starIndent",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-polygon"})],r),e.PacemPolygonElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemPolylineElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"points":case"closed":this.recomputeShape()}}static getShapeGeometry(e,i){if(t.Utils.isNullOrEmpty(e))return t.Drawing.Shape.empty();let r="",a=Number.MAX_VALUE,n=Number.MAX_VALUE,s=Number.MIN_VALUE,o=Number.MIN_VALUE;for(let t=0;t<e.length;t++){const{x:i,y:l}=e[t];r+=`${0===t?"M":"L"} ${i} ${l} `,a=Math.min(a,i),s=Math.max(s,i),n=Math.min(n,l),o=Math.max(o,l)}return i&&(r+="Z"),{pathData:r,vertices:e,boundingRect:{x:a,y:n,width:s-a,height:o-n}}}getShapeGeometry(){return i.getShapeGeometry(this.points,this.closed)}getPathData(){const{pathData:t}=this.getShapeGeometry();return t}static getPathData(t,e){const{pathData:r}=i.getShapeGeometry(t,e);return r}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],r.prototype,"points",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],r.prototype,"closed",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-polyline"})],r),e.PacemPolylineElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;function r(t){const e=t[2],i=t[4]??e,r="cut"===t[6]?o.Cut:o.Rounded;return{rx:a(e),ry:a(i),type:r}}function a(t){return{value:parseFloat(t),unit:t.endsWith("%")?"pct":"u"}}function n(t){return`${t.value}${"pct"===t.unit?"%":""}`}const s=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;let o;!function(t){t.Rounded="rounded",t.Cut="cut"}(o=e.CornerType||(e.CornerType={}));let l=i=class PacemRectElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),r||"x"!==t&&"y"!==t&&"w"!==t&&"h"!==t&&"r"!==t&&"cornerType"!==t||this.recomputeShape()}getPathData(){const e=this.x,r=this.y,a=this.w,n=this.h,s=this.r;return t.Utils.isNull(e)||t.Utils.isNull(r)||t.Utils.isNull(a)||t.Utils.isNull(n)?null:i.getPathData(e,r,a,n,s)}getShapeGeometry(){const t=this.x,e=this.y,i=t+this.w,r=e+this.h;return{pathData:this.getPathData(),vertices:[{x:t,y:e},{x:i,y:e},{x:i,y:r},{x:t,y:r}],boundingRect:{x:t,y:e,width:this.w,height:this.h}}}static getPathData(e=NaN,i=NaN,r=NaN,a=NaN,n=null){if(t.Utils.isNullOrEmpty(n))return`M ${e} ${i} h ${r} v ${a} h ${-r} z`;t.Utils.isArray(n)||(n=[n,n,n,n]);const s=n[0],o=n[1],l=n[2],c=n[3],h=t=>"pct"===t.unit?.01*t.value*r:t.value,d=t=>"pct"===t.unit?.01*t.value*a:t.value,m=h(s.rx),p=d(s.ry),u=h(o.rx),g=d(o.ry),v=h(l.rx),f=d(l.ry),y=h(c.rx),_=d(c.ry);let E=`M ${e+m},${i+p}`;if("cut"===s.type)E+=` l ${m},${-p}`;else E+=` a ${m} ${p} 0 0 1 ${m} ${-p}`;if(E+=" h "+(r-m-u),"cut"===o.type)E+=` l ${u},${g}`;else E+=` a ${u} ${g} 0 0 1 ${u} ${g}`;if(E+=" v "+(a-g-f),"cut"===l.type)E+=` l ${-v},${f}`;else E+=` a ${v} ${f} 0 0 1 ${-v} ${f}`;if(E+=" h "+-(r-v-y),"cut"===c.type)E+=` l ${-y},${-_}`;else E+=` a ${y} ${_} 0 0 1 ${-y} ${-_}`;return E+" z"}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"x",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"y",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"w",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"h",void 0),__decorate([t.Watch({emit:!1,converter:{convert:t=>function(t){let e;const i=[];for(;e=s.exec(t);)i.push(e);switch(i.length){case 1:const t=r(i[0]);return[t,t,t,t];case 4:return[r(i[0]),r(i[1]),r(i[2]),r(i[3])];default:return null}}(t),convertBack:t=>function(t){const e=t[0],i=t[1],r=t[2],a=t[3];return`${n(e.rx)},${n(e.ry)} ${n(i.rx)},${n(i.ry)} ${n(r.rx)},${n(r.ry)} ${n(a.rx)},${n(a.ry)}`}(t)}})],l.prototype,"r",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],l.prototype,"cornerType",void 0),l=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-rect"})],l),e.PacemRectElement=l}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){const r=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,a={convert:t=>{const e=r.exec(t);return e&&e.length>=4?{x:e[1].toLowerCase(),y:e[3].toLowerCase(),slice:"slice"===e[6]}:"none"},convertBack:e=>t.Utils.isNull(e)||"string"==typeof e?"none":`xM${e.x.substr(1)}YM${e.y.substr(1)} ${e.slice?"slice":"meet"}`},n={panControl:!0,zoomControl:!0,panModifiers:[t.EventKeyModifier.AltKey],zoomModifiers:[t.EventKeyModifier.AltKey]};let s=class Pacem2DElement extends e.PacemItemsContainerElement{constructor(){super(...arguments),this.#a=t.Matrix2D.identity,this._options=n,this._resizeHandler=e=>{this._size={width:e.detail.width,height:e.detail.height};const i=this.adapter;t.Utils.isNull(i)||this._invalidateSize()},this._zoomHandler=e=>{const i=this._options;if(i.zoomControl&&t.CustomEventUtils.matchModifiers(e,i.zoomModifiers)){t.avoidHandler(e);const i=1+.1*(e.deltaY<0?-1:1),r=t.Utils.offsetRect(e.currentTarget),a={x:e.clientX,y:e.clientY};this._zoom(i,r,a)}},this._panHandler=e=>{const i=this._panningStart,r=this._getPanPoint(e);if(!t.Utils.isNullOrEmpty(i&&i.point)&&!t.Utils.isNull(r)){t.avoidHandler(e);const a=i.factor,n=i.box,s=i.point;this.viewbox={x:n.x-a*(r.x-s.x),y:n.y-a*(r.y-s.y),width:n.width,height:n.height}}},this._panStartHandler=e=>{if(!this._options.panControl)return;const i=this._size,r=this.viewbox||{x:0,y:0,width:i.width,height:i.height},a=this._getPanPoint(e);if(a){t.avoidHandler(e),this._stage.style.pointerEvents="none";const n=this._getActualAspectRatio(),s=r.width/i.width,o=r.height/i.height,l=n.slice?Math.min(s,o):Math.max(s,o);this._panningStart={point:a,box:r,factor:l}}},this._panEndHandler=t=>{this._stage.style.pointerEvents="",this._panningStart=null}}get stage(){return this._stage}snapshot(e,i,r){const a=this.adapter;return t.Utils.isNull(a)?Promise.resolve(null):a.snapshot(this,e,i,r)}#n;#a;get transformMatrix(){return this.#a}_transformMatrixScale(){const e=t.Utils.extend(this._size||t.Utils.offsetRect(this._stage),{x:0,y:0});var i=this.#n||{x:0,y:0,width:e.width,height:e.height};const r=this.viewbox||i,a=this.aspectRatio||"none",n="none"===a?"stretch":a.slice?"cover":"contain";return t.Rect.findTransform(r,i,n).a}validate(e){return e instanceof i.DrawableElement&&t.Utils.isNull(e.parent)}draw(e,i=!1){const r=this.adapter;if(!this.disabled&&!t.Utils.isNull(r)){let t=new CustomEvent("predraw",{cancelable:!0});this.dispatchEvent(t),t.defaultPrevented||(r.draw(this,e,i),this.dispatchEvent(new CustomEvent("draw")))}}_drawDebounced(e,i=!1){!t.Utils.isNull(e)&&t.Drawing.isGroup(e)?this.draw(e,i):this.draw(e)}requestDraw(t,e=!1){this._drawDebounced(t,e)}_buildUpDatasourceFromDOM(){this.datasource=(this.items||[]).slice()}_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(e){const i=this._size;if(t.Utils.isNull(i))return;const r=t.Utils.extend(i,{x:0,y:0}),a=this.#n||{x:0,y:0,width:i.width,height:i.height},n=this.viewbox||a,s=this.aspectRatio||"none",o="none"===s?"stretch":s.slice?"cover":"contain",l=t.Rect.findTransform(n,r,o),c=t.Rect.findTransform(a,r,o),h=l.a/(c.a*e);this._zoom(h)}_zoom(e,i,r){t.Utils.isNull(i)&&(i=t.Utils.offsetRect(this._stage)),t.Utils.isNull(r)&&(r={x:i.x+.5*i.width,y:i.y+.5*i.height});const a=this._size,n=this.viewbox||{x:0,y:0,width:a.width,height:a.height},s=Math.min(n.width,n.height),o=s*e,l=s*e;if(o>0&&l>0){const t=this._getActualAspectRatio(),e=t.x,a=t.y,s=t.slice,c=n.width/n.height,h=s?Math.max(i.width,i.height):Math.min(i.width,i.height);let d,m;switch(e){case"mid":d=(o-n.width)*(r.x-i.x-.5*(i.width-h))/(h*c);break;case"max":d=(o-n.width)*(r.x-i.x-(i.width-h))/(h*c);break;default:d=(o-n.width)*(r.x-i.x)/(h*c)}switch(a){case"mid":m=(l-n.height)*(r.y-i.y-.5*(i.height-h))/(h*c);break;case"max":m=(l-n.height)*(r.y-i.y-(i.height-h))/(h*c);break;default:m=(l-n.height)*(r.y-i.y)/(h*c)}const p=n.x-d,u=n.y-m;this.viewbox={x:p,y:u,width:o,height:l}}}_getPanPoint(e){const i=this._options;return e instanceof MouseEvent&&t.CustomEventUtils.matchModifiers(e,i.panModifiers)?t.CustomEventUtils.getEventCoordinates(e).page:null}_invalidateSize(){this.adapter.invalidateSize(this,this._size);const i=this.#a;this.#a=this.adapter.getTransformMatrix(this),this.dispatchEvent(new t.PropertyChangeEvent({propertyName:"transformMatrix",currentValue:this.#a,oldValue:i})),this.zoom=this._transformMatrixScale(),this.dispatchEvent(new e.ResizeEvent(this._size))}viewActivatedCallback(){super.viewActivatedCallback();const e=this.adapter;t.Utils.isNull(e)||(e.initialize(this),this._invalidateSize(),this._drawDebounced());const i=this._resize;i.addEventListener(t.Components.ResizeEventName,this._resizeHandler,!1);const r=this._stage;i.target=r;const a={capture:!1,passive:!0};r.addEventListener("wheel",this._zoomHandler,!1),r.addEventListener("mousedown",this._panStartHandler,!1),r.addEventListener("touchstart",this._panStartHandler,a),window.addEventListener("mousemove",this._panHandler,!1),window.addEventListener("mouseup",this._panEndHandler,!1),window.addEventListener("touchmove",this._panHandler,a),window.addEventListener("touchend",this._panEndHandler,a)}propertyChangedCallback(e,i,r,a){switch(super.propertyChangedCallback(e,i,r,a),e){case"adapter":t.Utils.isNull(i)||i.dispose(this),t.Utils.isNull(r)||(r.initialize(this),this._invalidateSize(),this._drawDebounced());break;case"aspectRatio":t.Utils.isNull(this.adapter)||this._invalidateSize();break;case"viewbox":t.Utils.isNull(this.adapter)||this._invalidateSize(),this.#n??=this.viewbox||null;break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":r!==this._transformMatrixScale()&&this._zoomFromValue(r);break;case"options":this._options=t.Utils.extend({},n,r||{});break;case"disabled":case"datasource":this._drawDebounced()}}disconnectedCallback(){const e=this._resize,i=this._stage;t.Utils.isNull(e)||e.removeEventListener(t.Components.ResizeEventName,this._resizeHandler,!1),t.Utils.isNull(i)||(i.removeEventListener("wheel",this._zoomHandler,!1),i.removeEventListener("mousedown",this._panStartHandler,!1),i.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)),t.Utils.isNull(this.adapter)||this.adapter.dispose(this),super.disconnectedCallback()}};__decorate([t.Watch({converter:t.PropertyConverters.Element})],s.prototype,"adapter",void 0),__decorate([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Rect})],s.prototype,"viewbox",void 0),__decorate([t.Watch({emit:!1,reflectBack:!0,converter:a})],s.prototype,"aspectRatio",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],s.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],s.prototype,"options",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],s.prototype,"zoom",void 0),__decorate([t.ViewChild("."+t.PCSS+"-2d")],s.prototype,"_stage",void 0),__decorate([t.ViewChild(t.P+"-resize")],s.prototype,"_resize",void 0),__decorate([t.Debounce(!0)],s.prototype,"_drawDebounced",null),s=__decorate([t.CustomElement({tagName:t.P+"-"+i.TAG_MIDDLE_NAME,shadow:!0,template:`<${t.P}-resize></${t.P}-resize><div class="${t.PCSS}-2d" part="container"></div><slot></slot>`})],s),i.Pacem2DElement=s}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemTextElement extends e.UiElement{propertyChangedCallback(e,i,r,a){if(!a)switch(e){case"text":case"color":case"fontFamily":case"fontSize":case"anchor":t.Utils.isNull(this.stage)||this.stage.draw(this)}}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"text",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"color",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"fontFamily",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"fontSize",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],i.prototype,"anchor",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"textAnchor",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-text"})],i),e.PacemTextElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){e.AdapterUtils=class AdapterUtils{static stageDispatch(e,i,r){e instanceof EventTarget&&e.dispatchEvent(new t.Drawing.StageEvent("stage"+i,e,r,e.transformMatrix))}static itemDispatch(e,i,r){if(!t.Utils.isNull(e)){var a,n,s;r instanceof Event?n=r:a={item:e,offset:r},"string"==typeof i?s=i:(s=i.type,n=i.originalEvent);const l=e.stage.transformMatrix,c=()=>r instanceof Event?new t.Drawing.DrawableEvent(s,e,n,l):new t.Drawing.DragEvent(s,{detail:a,cancelable:s===t.UI.DragDropEventType.Init||s===t.UI.DragDropEventType.Drag},n,l),h=r instanceof Event?new t.Drawing.DrawableEvent("item"+s,e,n,l):new t.Drawing.DragEvent("item"+s,{detail:a,cancelable:s===t.UI.DragDropEventType.Init||s===t.UI.DragDropEventType.Drag},n,l);var o=!1;if(e instanceof EventTarget){const t=c();e.dispatchEvent(t),o=t.defaultPrevented}return e.stage.dispatchEvent(h),o||h.defaultPrevented}return!1}}}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="pacem:2d-canvas-scene",r="pacem:2d-parent-matrix",a=t.CustomElementUtils.setAttachedPropertyValue,n=t.CustomElementUtils.getAttachedPropertyValue;function s(e){return"none"===e||t.Utils.isNullOrEmpty(e)}function o(e,i){return t.Utils.isNull(e)?i:e}let l=class PacemCanvasAdapterElement extends e.Pacem2DAdapterElement{constructor(){super(...arguments),this._pointer={page:{x:0,y:0},screen:{x:0,y:0},client:{x:0,y:0}},this._dragInitHandler=i=>{const a=this._hitTarget;if(t.Utils.isNull(a)||!t.Drawing.isUiObject(a)||!a.draggable)return void i.preventDefault();const s=i.detail,o=a,l=a.transformMatrix??t.Matrix2D.identity,c=n(a,r,t.Matrix2D.identity);s.data={item:o,initialTransformMatrix:l,parentMatrix:c};e.AdapterUtils.itemDispatch(o,i,{x:0,y:0})&&i.preventDefault()},this._draggingHandler=i=>{t.avoidHandler(i),this._dragging=!0;const r=i.detail,a=r.data,n=r.currentPosition.x-r.origin.x,s=r.currentPosition.y-r.origin.y,o={x:n*a.parentMatrix.a+a.initialTransformMatrix.e,y:s*a.parentMatrix.d+a.initialTransformMatrix.f},l=a.item.stage.transformMatrix;if(!e.AdapterUtils.itemDispatch(a.item,i,{x:n*l.a+l.e,y:s*l.d+l.f}))if(a.item instanceof t.Components.Drawing.UiElement)a.item.translateX=o.x,a.item.translateY=o.y;else{const e=a.initialTransformMatrix,i={a:e.a,b:e.b,c:e.c,d:e.d,e:o.x,f:o.y};t.Utils.extend(a.item,{transformMatrix:i})}},this._dragEndHandler=t=>{this._dragging=!1;const i=t.detail.data,r=i.item.transformMatrix;e.AdapterUtils.itemDispatch(i.item,t,{x:r.e,y:r.f})},this._mousemoveHandler=r=>{this._scopeEvent=r,this._pointer=t.CustomEventUtils.getEventCoordinates(r);const a=r.srcElement,s=n(a,i);this._requestDraw(s),this._dragging||t.Utils.isNull(this._hitTarget)||e.AdapterUtils.stageDispatch(s,"move",r)},this._mouseDownUpHandler=r=>{this._scopeEvent=r,this._pointer=t.CustomEventUtils.getEventCoordinates(r);const a=r.target;if(a instanceof HTMLCanvasElement){const s=n(a,i),o=this._hitTarget,l=r.type.replace(/^(mouse|touch)/,""),c="end"===l?"click":l;t.Utils.isNull(o)||o.stage!==s?e.AdapterUtils.stageDispatch(s,c,r):e.AdapterUtils.itemDispatch(this._hitTarget,c,r)}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(t,e,i,r){const a=this._scenes;if(a.has(t)){const n=a.get(t).context.canvas;return this.snapshotElement(n,e,i,r)}return Promise.resolve(null)}getCanvas(t){const e=this._scenes;if(e.has(t)){return e.get(t).context.canvas}return null}_getScreenInverseMatrix(e,i){return t.Matrix2D.invert({a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+i.x,f:e.f+i.y})}getTransformMatrix(e){const i=this._scenes;return i.has(e)?i.get(e).screenInverseMatrix:t.Matrix2D.identity}viewActivatedCallback(){super.viewActivatedCallback();const e=this._dragger=document.createElement(t.P+"-drag-drop");e.mode=t.UI.DragDataMode.Copy,e.dropBehavior=t.UI.DropBehavior.None,e.spillBehavior=t.UI.DropTargetMissedBehavior.None;const i=document.createElement("div");i.hidden=!0,e.floater=i;t.CustomElementUtils.findAncestorShell(this).appendChild(e),e.addEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const e=this._dragger;t.Utils.isNull(e)||(e.removeEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,i){const r=this._scenes;if(!t.Utils.isNull(e)&&!t.Utils.isNullOrEmpty(i)&&r.has(e)){const a=r.get(e),n=a.context;n.canvas.width=i.width,n.canvas.height=i.height;const s=a.offset=t.Utils.offsetRect(n.canvas),o={x:0,y:0,width:i.width,height:i.height},l=e.aspectRatio,c=e.viewbox;if(t.Utils.isNullOrEmpty(c))a.transformMatrix=t.Matrix2D.identity;else{let e="contain",i="center",r="middle";if("object"==typeof l){switch(e=l.slice?"cover":"contain",l.x){case"min":i="left";break;case"max":i="right"}switch(l.y){case"min":r="top";break;case"max":r="bottom"}}const n=t.Rect.findTransform({x:0,y:0,width:c.width,height:c.height},o,e,i,r),h=t.Matrix2D.translate(n,{x:-n.a*c.x,y:-n.a*c.y});a.transformMatrix=h,a.screenInverseMatrix=this._getScreenInverseMatrix(h,s)}}this._requestDraw(e)}getHitTarget(e){const i=this._hitTarget;return t.Utils.isNull(i)||i.stage!==e?null:i}initialize(e){if(t.Utils.isNull(e))throw"Provided scene is null or undefined.";const r=this._scenes,n=this._dragger;if(r.has(e)){const i=r.get(e).context.canvas;return t.Utils.isNull(n)||n.register(i),i}const s=e.stage;s.innerHTML="";const o=document.createElement("canvas");o.setAttribute("part","stage"),a(o,i,e);const l=o.getContext("2d");return o.addEventListener("mousemove",this._mousemoveHandler,!1),o.addEventListener("touchstart",this._mouseDownUpHandler,{passive:!0}),o.addEventListener("touchmove",this._mouseDownUpHandler,{passive:!0}),o.addEventListener("touchend",this._mouseDownUpHandler,{passive:!0}),o.addEventListener("click",this._mouseDownUpHandler,!1),o.addEventListener("mousedown",this._mouseDownUpHandler,!1),o.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.appendChild(o),r.set(e,{context:l,transformMatrix:t.Matrix2D.identity,offset:t.Utils.offsetRect(o),screenInverseMatrix:t.Matrix2D.identity}),t.Utils.isNull(n)||n.register(o),o}dispose(e){const i=this._scenes;if(i.has(e)){var r=i.get(e).context.canvas;const a=this._dragger;t.Utils.isNull(a)||a.unregister(r),r.removeEventListener("click",this._mouseDownUpHandler,!1),r.removeEventListener("touchend",this._mouseDownUpHandler,!1),r.removeEventListener("mousedown",this._mouseDownUpHandler,!1),r.removeEventListener("mouseup",this._mouseDownUpHandler,!1),r.removeEventListener("touchstart",this._mouseDownUpHandler),r.removeEventListener("mousemove",this._mousemoveHandler,!1),r.remove(),i.delete(e)}}_requestDraw(t){const e=this._handles;e.has(t)&&cancelAnimationFrame(e.get(t));e.set(t,(()=>(this.draw(t),requestAnimationFrame((()=>{}))))())}#s;draw(e){const i=this._scenes,r=this._handles;if(!t.Utils.isNull(e)){if(e.adapter!==this)return void(i.has(e)&&(i.delete(e),r.get(e)));if(!i.has(e))return void this.initialize(e);r.has(e)&&cancelAnimationFrame(r.get(e));const a=this._hitTarget,n=e.datasource||[];this._hitTarget=null;const s=i.get(e),o=s.context,l=o.canvas;this.#s=getComputedStyle(l),o.resetTransform(),o.clearRect(0,0,l.width,l.height);const c=s.transformMatrix;o.setTransform(c);const h=this._pointer,d=s.offset,m={x:h.page.x-d.x,y:h.page.y-d.y};for(let t of n)this._draw(e,o,t,{transformMatrix:c},m);const p=this._hitTarget;p!=a&&(t.Utils.isNull(a)||(a instanceof Element&&a.dispatchEvent(new t.Drawing.DrawableEvent("out",a,this._scopeEvent,c)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemout",a,this._scopeEvent,c))),t.Utils.isNull(p)||(p instanceof Element&&p.dispatchEvent(new t.Drawing.DrawableEvent("over",p,this._scopeEvent,c)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemover",p,this._scopeEvent,c))))}}_draw(e,i,n,s,o){if(n.stage??=e,t.Drawing.isDrawable(n)&&n.hide)return;let l;t.Drawing.isUiObject(n)&&n.draggable&&!n.hide&&!n.inert&&a(n,r,i.getTransform().inverse()),t.Drawing.isUiObject(n)&&(l=n.transformMatrix,t.Utils.isNull(l)||t.Matrix2D.isIdentity(l)||i.transform(l.a,l.b,l.c,l.d,l.e,l.f));let c=s;if(t.Drawing.isPresentationObject(n)&&(c=t.Drawing.PresentationState.combine(n,s,i.getTransform()),this._setPresentationState(i,c)),t.Drawing.isShape(n)||n instanceof t.Components.Drawing.ShapeElement)this._drawShape(i,n,o);else if(t.Drawing.isText(n)||n instanceof t.Components.Drawing.PacemTextElement)this._drawText(i,n,o);else if(t.Drawing.isImage(n)||n instanceof t.Components.Drawing.PacemImageElement)this._drawImage(i,n,o);else if(t.Drawing.isGroup(n)||n instanceof t.Components.Drawing.PacemGroupElement)for(let t of n.childDrawables||[])this._draw(e,i,t,c,o);t.Drawing.isUiObject(n)&&n.draggable&&!n.hide&&!n.inert&&a(n,"pacem:2d-world-matrix",i.getTransform().inverse()),this._setPresentationState(i,s)}_setPresentationState(e,i){if(e.setTransform(i.transformMatrix),t.Utils.isNullOrEmpty(i.stroke)||s(i.stroke)?e.strokeStyle="transparent":e.strokeStyle=i.stroke,t.Utils.isNullOrEmpty(i.lineWidth)?e.lineWidth=0:e.lineWidth=i.lineWidth,t.Utils.isNullOrEmpty(i.dashArray)?e.setLineDash([]):e.setLineDash(i.dashArray),t.Utils.isNullOrEmpty(i.lineCap)?e.lineCap="butt":e.lineCap=i.lineCap,t.Utils.isNullOrEmpty(i.lineJoin)?e.lineJoin="miter":e.lineJoin=i.lineJoin,"object"!=typeof i.fill||t.Utils.isNullOrEmpty(i.fill))t.Utils.isNullOrEmpty(i.fill)||"string"!=typeof i.fill||s(i.fill)?e.fillStyle="transparent":e.fillStyle=i.fill;else{const{stops:r}=i.fill;let a;if(t.Drawing.isLinearGradient(i.fill)){const{start:t,end:r}=i.fill;a=e.createLinearGradient(t.x,t.y,r.x,r.y)}else{if(!t.Drawing.isRadialGradient(i.fill))throw new Error("Unmanaged gradient type.");{const{center:t,radius:r}=i.fill;a=e.createRadialGradient(t.x,t.y,r,t.x,t.y,r)}}for(let t of r)a.addColorStop(t.offset,t.color);e.fillStyle=a}t.Utils.isNullOrEmpty(i.opacity)?e.globalAlpha=1:e.globalAlpha=i.opacity}_drawImage(e,i,r){const s="pacem:2d-canvas-imagesrc";let l=n(i,s);const c=()=>{let a=l.naturalWidth,n=l.naturalHeight,s=i.width,c=i.height;if(s>0&&c>0||(s>0?c=n*s/a:c>0?s=a*c/n:(s=a,c=n)),!this._dragging&&!i.inert&&!t.Utils.isNull(r)){const t=new Path2D(`M ${i.x} ${i.y} h ${s} v ${c} H ${i.x} Z`);e.isPointInPath(t,r.x,r.y)&&(this._hitTarget=i)}e.globalAlpha=o(i.opacity,1),e.drawImage(l,i.x,i.y,s,c)};t.Utils.isNull(l)?(l=new Image,l.src=i.src,l.onload=()=>{a(i,s,l),c()}):c()}_drawText(e,i,r){const a=this.DefaultShapeValues,n=e.fillStyle=o(i.color,a.stroke),l=(e.getTransform(),i.fontSize>0?`${i.fontSize}px`:this.#s.fontSize);e.font=`${l} ${i.fontFamily??this.#s.fontFamily}`,e.textAlign="middle"===i.textAnchor?"center":i.textAnchor,e.fillText(i.text,i.anchor.x,i.anchor.y),e.globalAlpha=o(i.opacity,1);const c=!s(n);if(!this._dragging&&!i.inert&&!t.Utils.isNull(r)){const t=e.measureText(i.text),a=t.width,n=t.actualBoundingBoxAscent+t.actualBoundingBoxDescent,s=i.anchor.x-t.actualBoundingBoxLeft,o=i.anchor.y-t.actualBoundingBoxAscent,l=new Path2D(`M ${s} ${o} h ${a} v ${n} H ${s} z`);c&&e.isPointInPath(l,r.x,r.y)&&(this._hitTarget=i)}}_drawShape(e,i,r){if(t.Utils.isNullOrEmpty(i?.pathData))return;e.beginPath();const a="string"!=typeof e.fillStyle||!s(e.fillStyle),n="string"!=typeof e.strokeStyle||!s(e.strokeStyle);var o=new Path2D(i.pathData);this._dragging||i.inert||t.Utils.isNull(r)||(a&&e.isPointInPath(o,r.x,r.y)||n&&e.isPointInStroke(o,r.x,r.y))&&(this._hitTarget=i),n&&e.stroke(o),a&&e.fill(o);const l=!t.Utils.isNullOrEmpty(i.vertices)&&i.vertices.length>1,c=!t.Utils.isNull(i.markerEnd),h=!t.Utils.isNull(i.markerStart),d=!t.Utils.isNull(i.markerMid);if((c||d||h)&&(l||this.log(t.Logging.LogLevel.Warn,"Not enough vertices were explicited in order to make markers renderable.")),l){const t=e.getTransform();if(h){const t=i.markerEnd,r=i.vertices[1],a=i.vertices[0],n=Math.atan2(a.y-r.y,a.x-r.x);this._drawMarker(e,t,a,n)}if(d){const r=i.markerEnd;for(let a=1;a<i.vertices.length-1;a++){e.setTransform(t);const n=i.vertices[a],s=i.vertices[a+1],o=Math.atan2(s.y-n.y,s.x-n.x);this._drawMarker(e,r,s,o)}}if(c){e.setTransform(t);const r=i.markerEnd,a=i.vertices[i.vertices.length-2],n=i.vertices[i.vertices.length-1],s=Math.atan2(n.y-a.y,n.x-a.x);this._drawMarker(e,r,n,s)}}}_drawMarker(e,i,r,a){const n=this.DefaultShapeValues,l=i.ref?.x||0,c=i.ref?.y||0,h=(i.width||1)*e.lineWidth,d=(i.width||1)*e.lineWidth;let m=i.viewbox,p={x:0,y:0,width:h,height:d};t.Utils.isNull(m)&&(m=p);const u={a:p.width/m.width,d:p.height/m.height};e.translate(r.x,r.y),e.rotate(a),e.scale(u.a,u.d),e.translate(-l,-c),e.fillStyle=o(i.fill,n.fill),e.strokeStyle=o(i.stroke,n.stroke);const g=!s(i.fill),v=!s(i.stroke);var f=new Path2D(i.pathData);g&&e.fill(f),v&&e.stroke(f)}};l=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-canvas-adapter"})],l),e.PacemCanvasAdapterElement=l}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="http://www.w3.org/2000/svg",r="pacem:2-svg-drawable",a="pacem:2d-svg-stage",n=t.CustomElementUtils.getAttachedPropertyValue,s=t.CustomElementUtils.setAttachedPropertyValue,o=t.CustomElementUtils.deleteAttachedPropertyValue;function l(e,i){return t.Utils.isNull(e)?i:e}function c(t,e,i){return i>=t.children.length?(t.appendChild(e),null):t.replaceChild(e,t.children.item(i))}let h=class PacemSvgAdapterElement extends e.Pacem2DAdapterElement{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=i=>{const a=i.detail,s=a.element,o=n(s,r),l=o.stage.transformMatrix,c=o.transformMatrix??t.Matrix2D.identity;a.data={stageTransformMatrix:l,item:o,initialTransformMatrix:c};e.AdapterUtils.itemDispatch(o,i,{x:0,y:0})&&i.preventDefault()},this._draggingHandler=i=>{t.avoidHandler(i),this._dragging=!0;const r=i.detail.element,a=i.detail.data,n=i.detail,s=(n.currentPosition.x-n.origin.x)*a.stageTransformMatrix.a,o=(n.currentPosition.y-n.origin.y)*a.stageTransformMatrix.d,l=s+a.initialTransformMatrix.e,c=o+a.initialTransformMatrix.f,h={x:s+a.stageTransformMatrix.e,y:o+a.stageTransformMatrix.f};if(!e.AdapterUtils.itemDispatch(a.item,i,h)){const t=a.initialTransformMatrix;r.style.transform=`matrix(${t.a},${t.b},${t.c},${t.d},${l},${c})`}},this._dragEndHandler=i=>{this._dragging=!1;const r=i.detail,a=r.element,n=r.data,s=t.Utils.deserializeTransform(a.style),o={x:s.e,y:s.f};if(n.item instanceof t.Components.Drawing.UiElement)n.item.translateX=o.x,n.item.translateY=o.y;else{const e=n.initialTransformMatrix,i={a:e.a,b:e.b,c:e.c,d:e.d,e:o.x,f:o.y};t.Utils.extend(n.item,{transformMatrix:i})}a.style.transform="",e.AdapterUtils.itemDispatch(n.item,i,o)},this._mousemoveHandler=i=>{var s=t.CustomEventUtils.getEventCoordinates(i).client;if(!this._dragging){var o=null;i.target.getRootNode().elementsFromPoint(s.x,s.y).find((t=>(o=n(t,r))&&!o.inert));var l=this._hitTarget,c=o;(t.Utils.isNull(o&&o.stage)||!this._scenes.has(o.stage)||o.inert)&&(c=null);const h=this._hitTarget=c;if(c!==l&&(t.Utils.isNull(l)||(this._dragger.unregister(this._items.get(l)),e.AdapterUtils.itemDispatch(l,"out",i)),t.Utils.isNull(c)||(c.draggable&&this._dragger.register(this._items.get(c)),e.AdapterUtils.itemDispatch(c,"over",i))),t.Utils.isNull(h)){const r=i.currentTarget,s=n(r,a);t.Utils.isNull(s)||e.AdapterUtils.stageDispatch(s,"move",i)}}},this._mouseDownUpHandler=i=>{const r=i.currentTarget;if(r instanceof SVGSVGElement){const s=n(r,a),o=this._hitTarget,l=i.type.replace(/^mouse/,"");t.Utils.isNull(o)||o.stage!==s?e.AdapterUtils.stageDispatch(s,l,i):e.AdapterUtils.itemDispatch(this._hitTarget,l,i)}},this._scenes=new WeakMap,this._markers=new WeakMap,this._gradients=new WeakMap,this._items=new WeakMap}snapshot(t,e,i,r){if(this._scenes.has(t)){const a=this._scenes.get(t);return this.snapshotElement(a,e,i,r)}return Promise.resolve(null)}getTransformMatrix(e){const i=this._scenes;return i.has(e)?i.get(e).getScreenCTM().inverse():t.Matrix2D.identity}viewActivatedCallback(){super.viewActivatedCallback();const e=this._dragger=document.createElement(t.P+"-drag-drop");e.mode=t.UI.DragDataMode.Self;t.CustomElementUtils.findAncestorShell(this).appendChild(e),e.addEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const e=this._dragger;t.Utils.isNull(e)||(e.removeEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,i){const r=this._scenes;if(!t.Utils.isNull(e)&&!t.Utils.isNullOrEmpty(i)&&r.has(e)){var a=r.get(e);a.setAttribute("width",i.width+""),a.setAttribute("height",i.height+"");const n=e.viewbox,s=e.aspectRatio;t.Utils.isNullOrEmpty(n)?a.removeAttribute("viewBox"):a.setAttribute("viewBox",`${n.x} ${n.y} ${n.width} ${n.height}`),t.Utils.isNullOrEmpty(s)||"string"==typeof s?a.removeAttribute("preserveAspectRatio"):a.setAttribute("preserveAspectRatio",`xM${s.x.substring(1)}YM${s.y.substring(1)} ${s.slice?"slice":"meet"}`)}}initialize(e){if(t.Utils.isNull(e))throw"Provided scene is null or undefined.";const r=this._scenes;if(r.has(e))return r.get(e);const n=e.stage;n.innerHTML="",this._items=new WeakMap;var o=document.createElementNS(i,"svg");o.setAttribute("part","stage"),s(o,a,e),n.appendChild(o),r.set(e,o);return o.addEventListener("mousemove",this._mousemoveHandler,!1),o.addEventListener("click",this._mouseDownUpHandler,!1),o.addEventListener("mousedown",this._mouseDownUpHandler,!1),o.addEventListener("mouseup",this._mouseDownUpHandler,!1),o}dispose(t){const e=this._scenes;if(e.has(t)){var i=e.get(t);i.removeEventListener("mousemove",this._mousemoveHandler),i.removeEventListener("click",this._mouseDownUpHandler),i.removeEventListener("mousedown",this._mouseDownUpHandler),i.removeEventListener("mouseup",this._mouseDownUpHandler),o(i,a),i.remove(),e.delete(t)}}getHitTarget(t){return this._hitTarget}draw(e,i,r=!1){const a=this._scenes,n=this._items;if(!t.Utils.isNull(e))if(e.adapter===this){a.has(e)||this.initialize(e);var s=e.datasource,o=!0,l=a.get(e);t.Utils.isNull(i)||n.has(i)&&(s=[i],l=n.get(i).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(e,l,s||[],o,r)}else a.has(e)&&a.delete(e)}_hasItems(e){return t.Drawing.isGroup(e)}_disposeSvg(e){if(!t.Utils.isNull(e)){var i=n(e,r);o(e,r),this._items.delete(i)}}_draw(e,i,a,n,o){const h=this._items;let d=0;if(i.firstElementChild instanceof SVGDefsElement&&d++,!t.Utils.isNullOrEmpty(a))for(let m of a){let a;if(m.stage??=e,h.has(m)?(a=h.get(m),a.parentNode!==i&&this._disposeSvg(c(i,a,d))):(a=this._buildSVGElement(m),s(a,r,m),this._disposeSvg(c(i,a,d)),h.set(m,a)),t.Drawing.isDrawable(m)&&(m.hide?a.setAttribute("display","none"):a.removeAttribute("display"),a.style.transform=""),t.Drawing.isShape(m)){const t=a;t.setAttribute("d",l(m.pathData,"M0,0"));for(let{marker:e,suffix:r}of[{marker:m.markerStart,suffix:"start"},{marker:m.markerEnd,suffix:"end"},{marker:m.markerMid,suffix:"mid"}])if(e){const a=this._ensureMarker(i,e);t.setAttribute("marker-"+r,`url(#${a.id})`)}else t.removeAttribute("marker-"+r)}else if(t.Drawing.isText(m)){const e=a;e.textContent=m.text,e.style.fill=t.Utils.isNullOrEmpty(m.color)?"":m.color,e.style.fontFamily=t.Utils.isNullOrEmpty(m.fontFamily)?"":m.fontFamily,e.style.fontSize=t.Utils.isNull(m.fontSize)?"":m.fontSize+"px",e.setAttribute("text-anchor",l(m.textAnchor,"start")),t.Utils.isNull(m.anchor)?(e.removeAttribute("x"),e.removeAttribute("y")):(e.setAttribute("x",m.anchor.x.toString()),e.setAttribute("y",m.anchor.y.toString()))}else if(t.Drawing.isImage(m)){const e=a;e.setAttribute("href",m.src),m.width>0?e.setAttribute("width",""+m.width):e.removeAttribute("width"),m.height>0?e.setAttribute("height",""+m.height):e.removeAttribute("height"),t.Utils.isNull(m.x)?e.removeAttribute("x"):e.setAttribute("x",""+m.x),t.Utils.isNull(m.y)?e.removeAttribute("y"):e.setAttribute("y",""+m.y)}if(t.Drawing.isUiObject(m)){const e=m.transformMatrix;t.Utils.isNull(e)||t.Matrix2D.isIdentity(e)?a.removeAttribute("transform"):a.setAttribute("transform",`matrix(${e.a} ${e.b} ${e.c} ${e.d} ${e.e} ${e.f})`);const i=l(m.opacity,1);1===i?a.removeAttribute("opacity"):a.setAttribute("opacity",""+i)}if(t.Drawing.isPresentationObject(m)){if(t.Utils.isNullOrEmpty(m.fill))a.removeAttribute("fill");else if("string"==typeof m.fill)a.setAttribute("fill",m.fill);else{const t=this._ensureGradient(i,m.fill);a.setAttribute("fill",`url(#${t.id})`)}t.Utils.isNullOrEmpty(m.stroke)?a.removeAttribute("stroke"):a.setAttribute("stroke",m.stroke),t.Utils.isNullOrEmpty(m.dashArray)?a.removeAttribute("stroke-dasharray"):a.setAttribute("stroke-dasharray",m.dashArray.join(" ")),t.Utils.isNullOrEmpty(m.lineCap)?a.removeAttribute("stroke-linecap"):a.setAttribute("stroke-linecap",m.lineCap),t.Utils.isNullOrEmpty(m.lineJoin)?a.removeAttribute("stroke-linejoin"):a.setAttribute("stroke-linejoin",m.lineJoin),t.Utils.isNullOrEmpty(m.lineWidth)?a.removeAttribute("stroke-width"):a.setAttribute("stroke-width",""+m.lineWidth)}m.inert?a.style.pointerEvents="none":a.style.pointerEvents="",(n||o)&&this._hasItems(m)&&this._draw(e,a,m.childDrawables,!0,o),d++}if(n)for(let t=i.children.length-1;t>=d;t--){const e=i.children.item(t);this._disposeSvg(e),e.remove()}}_buildSVGElement(e){return t.Drawing.isShape(e)||e instanceof t.Components.Drawing.ShapeElement?document.createElementNS(i,"path"):t.Drawing.isText(e)||e instanceof t.Components.Drawing.PacemTextElement?document.createElementNS(i,"text"):t.Drawing.isImage(e)||e instanceof t.Components.Drawing.PacemImageElement?document.createElementNS(i,"image"):document.createElementNS(i,"g")}_ensureGradient(e,r){const a=this._gradients;a.has(e)||a.set(e,new WeakMap);const n=a.get(e),s=t.Drawing.isLinearGradient(r),o=t.Drawing.isRadialGradient(r);if(n.has(r)){const t=n.get(r);(s&&t instanceof SVGLinearGradientElement||o&&t instanceof SVGRadialGradientElement)&&(t.remove(),n.delete(r))}if(!n.has(r)){let a,o=e;for(;t.Utils.isNull(a=o.querySelector(":scope > defs"));){const t=o.parentElement;if(!(t instanceof SVGElement))break;o=t}if(t.Utils.isNull(a))throw new Error("Must provide a <defs> element.");var l=null;if(s)l=document.createElementNS(i,"linearGradient");else{if(!t.Drawing.isRadialGradient(r))throw new Error("Unmanaged gradient type.");l=document.createElementNS(i,"radialGradient")}l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("id",`grad-${t.Utils.uniqueCode()}`),a.appendChild(l),n.set(r,l)}const c=n.get(r);s?(c.setAttribute("x1",r.start.x.toString()),c.setAttribute("y1",r.start.y.toString()),c.setAttribute("x2",r.end.x.toString()),c.setAttribute("y2",r.end.y.toString())):o&&(c.setAttribute("cx",r.center.x.toString()),c.setAttribute("cy",r.center.y.toString()),c.setAttribute("r",r.radius.toString()));let h=0;for(let e of r.stops){for(;c.children.length<=h;){const t=document.createElementNS(i,"stop");c.appendChild(t)}const r=c.children.item(h);r.setAttribute("offset",100*e.offset+"%"),r.setAttribute("stop-color",e.color),t.Utils.isNull(e.opacity)||r.setAttribute("stop-opacity",e.opacity.toString()),h++}for(;c.children.length>r.stops.length;){const t=c.children.item(c.children.length-1);c.removeChild(t)}return c}_ensureMarker(e,r){const a=this._markers;a.has(e)||a.set(e,new WeakMap);const n=a.get(e);if(!n.has(r)){const a=document.createElementNS(i,"marker");n.set(r,a);const s=document.createElementNS(i,"path");a.appendChild(s),a.setAttribute("id","mark"+t.Utils.uniqueCode());let o,l=e;for(;t.Utils.isNull(o=l.querySelector(":scope > defs"));){const t=l.parentElement;if(!(t instanceof SVGElement))break;l=t}if(t.Utils.isNull(o))throw new Error("Must provide a <defs> element.");o.appendChild(a)}const s=n.get(r),o=s.firstElementChild;return s.setAttribute("orient","auto-start-reverse"),t.Utils.isNullOrEmpty(r.viewbox)?s.removeAttribute("viewBox"):s.setAttribute("viewBox",`${r.viewbox.x} ${r.viewbox.y} ${r.viewbox.width} ${r.viewbox.height}`),t.Utils.isNullOrEmpty(r.ref)?(s.removeAttribute("refX"),s.removeAttribute("refY")):(s.setAttribute("refX",r.ref.x.toString()),s.setAttribute("refY",r.ref.y.toString())),r.height>0?s.setAttribute("markerHeight",r.height.toString()):s.removeAttribute("markerHeight"),r.width>0?s.setAttribute("markerWidth",r.width.toString()):s.removeAttribute("markerWidth"),o.setAttribute("d",r.pathData),t.Utils.isNullOrEmpty(r.fill)?o.removeAttribute("fill"):o.setAttribute("fill",r.fill),t.Utils.isNullOrEmpty(r.stroke)?o.removeAttribute("stroke"):o.setAttribute("stroke",r.stroke),s}};h=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-svg-adapter"})],h),e.PacemSvgAdapterElement=h}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={}));
6
+ var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var n,a=arguments.length,s=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(n=t[o])&&(s=(a<3?n(s):a>3?n(e,i,s):n(e,i))||s);return a>3&&s&&Object.defineProperty(e,i,s),s};!function(t){!function(e){function i(e){return!t.Utils.isNull(e)&&"stage"in e}function r(t){return i(t)}function n(e){return"stops"in e&&t.Utils.isArray(e.stops)}e.isDrawable=i,e.isUiObject=r,e.isLinearGradient=function(e){return n(e)&&"start"in e&&t.Point.isPoint(e.start)&&"end"in e&&t.Point.isPoint(e.end)},e.isRadialGradient=function(e){return n(e)&&"center"in e&&t.Point.isPoint(e.center)&&"radius"in e&&"number"==typeof e.radius};e.PresentationState=class PresentationState{static combine(e,i,r=null){return{opacity:(e.opacity??1)*(i.opacity??1),transformMatrix:r??t.Matrix2D.multiply(i.transformMatrix,e.transformMatrix),dashArray:e.dashArray??i.dashArray,fill:e.fill??i.fill,lineCap:e.lineCap??i.lineCap,lineJoin:e.lineJoin??i.lineJoin,lineWidth:e.lineWidth??i.lineWidth,stroke:e.stroke??i.stroke}}},e.isPresentationObject=function(t){return r(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)},e.isShape=function(t){return r(t)&&"pathData"in t},e.isGroup=function(e){return r(e)&&"childDrawables"in e&&!t.Utils.isNullOrEmpty(e.childDrawables)},e.isText=function(t){return r(t)&&"text"in t&&"string"==typeof t.text},e.isImage=function(t){return r(t)&&"src"in t&&"string"==typeof t.src};class UI2DEvent extends t.CustomUIEvent{constructor(t,e,i,r){super(t,e,i),this.#t=r}#t;get transformMatrix(){return this.#t}project(e={x:this.screenX,y:this.screenY}){return t.Matrix2D.multiply(e,this.#t)}}e.UI2DEvent=UI2DEvent;e.Shape=class Shape{static empty(){return{pathData:"",vertices:[],boundingRect:{x:0,y:0,width:0,height:0}}}};e.DragEvent=class DragEvent extends UI2DEvent{};e.DrawableEvent=class DrawableEvent extends UI2DEvent{constructor(t,e,i,r){super(t,{detail:e,bubbles:!0,cancelable:!0},i,r)}};e.StageEvent=class StageEvent extends UI2DEvent{constructor(t,e,i,r=e.transformMatrix){super(t,{detail:e,bubbles:!0,cancelable:!0},i,r)}}}(t.Drawing||(t.Drawing={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){i.TAG_MIDDLE_NAME="2d",i.TWO_PI=2*Math.PI;const r=Math.PI/180;class Pacem2DAdapterElement extends e.PacemEventTarget{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}snapshotElement(e,i,r,n){const a=!t.Utils.isNullOrEmpty(i),s=r??(a?"image/jpeg":null),o=n??(a?.9:null);return t.Utils.snapshotElement(e,i,s,o)}}i.Pacem2DAdapterElement=Pacem2DAdapterElement;class DrawableElement extends e.PacemCrossItemsContainerElement{validate(t){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||t.CustomElementUtils.findAncestorOfType(this,i.Pacem2DElement)}get parent(){return this._drawableParent=this._drawableParent||t.CustomElementUtils.findAncestor(this,(t=>t instanceof DrawableElement))}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(e,i,r,n){if(super.propertyChangedCallback(e,i,r,n),"hide"===e){const e=this.stage;t.Utils.isNull(e)||e.draw(this)}}}__decorate([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],DrawableElement.prototype,"tag",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],DrawableElement.prototype,"inert",void 0),i.DrawableElement=DrawableElement;class UiElement extends DrawableElement{#t=t.Matrix2D.identity;viewActivatedCallback(){super.viewActivatedCallback(),this._updateTransformMatrix()}propertyChangedCallback(e,i,r,n){if(super.propertyChangedCallback(e,i,r,n),!n)switch(e){case"rotate":case"scaleX":case"scaleY":case"translateX":case"translateY":this._updateTransformMatrix();case"opacity":t.Utils.isNull(this.stage)||this.stage.draw(this)}}_updateTransformMatrix(){let t=r*(this.rotate??0),e=Math.cos(t),i=Math.sin(t),n=(this.scaleX??1)*e,a=-i,s=i,o=(this.scaleY??1)*e,l=this.translateX??0,c=this.translateY??0;this.#t={a:n,b:a,c:s,d:o,e:l,f:c}}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}}}__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"rotate",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"scaleX",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"scaleY",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"translateX",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"translateY",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],UiElement.prototype,"opacity",void 0),i.UiElement=UiElement;class PresentationElement extends UiElement{propertyChangedCallback(e,i,r,n){if(super.propertyChangedCallback(e,i,r,n),!n)switch(e){case"stroke":case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":case"fill":t.Utils.isNull(this.stage)||this.stage.draw(this)}}}__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"stroke",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"fill",void 0),__decorate([t.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),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PresentationElement.prototype,"lineWidth",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"lineJoin",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PresentationElement.prototype,"lineCap",void 0),i.PresentationElement=PresentationElement;class ShapeElement extends PresentationElement{propertyChangedCallback(e,i,r,n){if(super.propertyChangedCallback(e,i,r,n),!n&&"data"===e)t.Utils.isNull(this.stage)||this.stage.draw(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.recomputeShape()}recomputeShape(){const{pathData:t,vertices:e,boundingRect:i}=this.getShapeGeometry();this.#e=e,this.#i=i,this.data=t}get pathData(){return this.data}#i;get boundingRect(){return this.#i}#e;get vertices(){return this.#e}}__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],ShapeElement.prototype,"data",void 0),i.ShapeElement=ShapeElement}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemCircleElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"center":case"radius":this.recomputeShape()}}getPathData(){const e=this.radius,r=this.center;return t.Utils.isNull(r)||t.Utils.isNull(e)?null:i.getPathData(r,e)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.radius??0,i=2*e,r=t.x,n=t.y;return{pathData:this.getPathData(),boundingRect:{x:r-e,y:n-e,width:i,height:i},vertices:[]}}static getPathData(t={x:NaN,y:NaN},i=NaN){return e.PacemEllipseElement.getPathData(t,i,i)}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"radius",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-circle"})],r),e.PacemCircleElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemEllipseElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"center":case"rx":case"ry":this.recomputeShape()}}getPathData(){const e=this.rx,r=this.ry,n=this.center;return t.Utils.isNull(n)||t.Utils.isNull(e)||t.Utils.isNull(r)?null:i.getPathData(n,e,r)}getShapeGeometry(){const t=this.center??{x:0,y:0},e=this.rx??0,i=this.ry??0,r=t.x,n=t.y;return{pathData:this.getPathData(),boundingRect:{x:r-e,y:n-i,width:2*e,height:2*i},vertices:[]}}static getPathData(t={x:NaN,y:NaN},e=NaN,i=NaN){const r=2*e;return`M ${t.x} ${t.y} m ${-e},0 a ${e},${i} 0 1,1 ${r},0 a ${e},${i} 0 1,1 ${-r},0`}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"rx",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"ry",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-ellipse"})],r),e.PacemEllipseElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemGroupElement extends e.PresentationElement{validate(t){return t instanceof e.DrawableElement&&t.parent===this}#r=[];get childDrawables(){return this.#r}propertyChangedCallback(e,i,r,n){switch(super.propertyChangedCallback(e,i,r,n),e){case"items":case"datasource":this.#r=r||[];const e=this.stage;t.Utils.isNull(e)||e.draw(this,!0)}}};__decorate([t.Watch({emit:!1})],i.prototype,"datasource",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-group"})],i),e.PacemGroupElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemImageElement extends e.UiElement{propertyChangedCallback(e,i,r,n){if(!n)switch(e){case"src":case"x":case"y":case"width":case"height":t.Utils.isNull(this.stage)||this.stage.draw(this)}}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"src",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"x",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"y",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"width",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"height",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-image"})],i),e.PacemImageElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemLineElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"from":case"to":this.recomputeShape()}}getShapeGeometry(){const e=this.from,i=this.to;if(t.Utils.isNull(e)||t.Utils.isNull(i))return t.Drawing.Shape.empty();const r=e.x,n=e.y,a=i.x,s=i.y,o={x:Math.min(r,a),y:Math.min(n,s),width:Math.abs(r-a),height:Math.abs(n-s)};return{pathData:this.getPathData(),vertices:[e,i],boundingRect:o}}getPathData(){const e=this.from,r=this.to;return t.Utils.isNull(e)||t.Utils.isNull(r)?null:i.getPathData(e,r)}static getPathData(t={x:NaN,y:NaN},e={x:NaN,y:NaN}){return`M ${t.x} ${t.y} L ${e.x} ${e.y}`}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"from",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"to",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-line"})],r),e.PacemLineElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemPathElement extends e.ShapeElement{constructor(){super(...arguments),this.getPathData=()=>this.d}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"d"!==t||r||this.recomputeShape()}getShapeGeometry(){return{pathData:this.getPathData(),boundingRect:null,vertices:[]}}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"d",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-path"})],i),e.PacemPathElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=i=class PacemPolygonElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"radius":case"starIndent":case"sides":this.recomputeShape()}}getPathData(){const e=this.sides,r=this.radius,n=this.center;return t.Utils.isNull(e)||t.Utils.isNull(r)?null:i.getPathData(n,r,e,this.starIndent)}getShapeGeometry(){const e=this.center??{x:0,y:0},r=this.radius??0,n=this.sides??3,a=this.starIndent;return n<3?t.Drawing.Shape.empty():i.getShapeGeometry(e,r,n,a)}static getShapeGeometry(t,e,i,r=0){const n={x:t.x,y:t.y-e};let a=`M ${n.x} ${n.y}`;const s=[n],o=2*Math.PI/i,l=.5*o,c=r>0,h=e*Math.cos(l);for(let n=1;n<i;n++){const i=n*o,d=t.x+Math.sin(i)*e,m=t.y-Math.cos(i)*e;if(c){const e=h*(1-r),n=i-l,o=t.x+Math.sin(n)*e,c=t.y-Math.cos(n)*e;a+=` L ${o} ${c} L ${d} ${m}`,s.push({x:o,y:c})}else a+=` L ${d} ${m}`;s.push({x:d,y:m})}if(c){const e=h*(1-r),i=2*Math.PI-l,n=t.x+Math.sin(i)*e,o=t.y-Math.cos(i)*e;a+=` L ${n} ${o}`,s.push({x:n,y:o})}s.push(n);const d=2*e;return{pathData:a+" Z",vertices:s,boundingRect:{x:n.x-e,y:n.y,width:d,height:d}}}static getPathData(t,e,r,n=0){const{pathData:a}=i.getShapeGeometry(t,e,r,n);return a}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"sides",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"radius",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],r.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"starIndent",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-polygon"})],r),e.PacemPolygonElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;const r={convert:e=>{const i=t.parseAsNumericalArray(e);if(i.length%2==0){const t=[];for(let e=0;e<i.length;e+=2)t.push({x:i[e],y:i[e+1]});return t}return JSON.parse(e)},convertBack:t=>JSON.stringify(t)};let n=i=class PacemPolylineElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"points":case"closed":this.recomputeShape()}}static getShapeGeometry(e,i){if(t.Utils.isNullOrEmpty(e))return t.Drawing.Shape.empty();let r="",n=Number.MAX_VALUE,a=Number.MAX_VALUE,s=Number.MIN_VALUE,o=Number.MIN_VALUE;for(let t=0;t<e.length;t++){const{x:i,y:l}=e[t];r+=`${0===t?"M":"L"} ${i} ${l} `,n=Math.min(n,i),s=Math.max(s,i),a=Math.min(a,l),o=Math.max(o,l)}return i&&(r+="Z"),{pathData:r,vertices:e,boundingRect:{x:n,y:a,width:s-n,height:o-a}}}getShapeGeometry(){return i.getShapeGeometry(this.points,this.closed)}getPathData(){const{pathData:t}=this.getShapeGeometry();return t}static getPathData(t,e){const{pathData:r}=i.getShapeGeometry(t,e);return r}};__decorate([t.Watch({emit:!1,converter:r})],n.prototype,"points",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],n.prototype,"closed",void 0),n=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-polyline"})],n),e.PacemPolylineElement=n}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;function r(t){const e=t[2],i=t[4]??e,r="cut"===t[6]?o.Cut:o.Rounded;return{rx:n(e),ry:n(i),type:r}}function n(t){return{value:parseFloat(t),unit:t.endsWith("%")?"pct":"u"}}function a(t){return`${t.value}${"pct"===t.unit?"%":""}`}const s=/(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;let o;!function(t){t.Rounded="rounded",t.Cut="cut"}(o=e.CornerType||(e.CornerType={}));let l=i=class PacemRectElement extends e.ShapeElement{propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),r||"x"!==t&&"y"!==t&&"w"!==t&&"h"!==t&&"r"!==t&&"cornerType"!==t||this.recomputeShape()}getPathData(){const e=this.x,r=this.y,n=this.w,a=this.h,s=this.r;return t.Utils.isNull(e)||t.Utils.isNull(r)||t.Utils.isNull(n)||t.Utils.isNull(a)?null:i.getPathData(e,r,n,a,s)}getShapeGeometry(){const t=this.x,e=this.y,i=t+this.w,r=e+this.h;return{pathData:this.getPathData(),vertices:[{x:t,y:e},{x:i,y:e},{x:i,y:r},{x:t,y:r}],boundingRect:{x:t,y:e,width:this.w,height:this.h}}}static getPathData(e=NaN,i=NaN,r=NaN,n=NaN,a=null){if(t.Utils.isNullOrEmpty(a))return`M ${e} ${i} h ${r} v ${n} h ${-r} z`;t.Utils.isArray(a)||(a=[a,a,a,a]);const s=a[0],o=a[1],l=a[2],c=a[3],h=t=>"pct"===t.unit?.01*t.value*r:t.value,d=t=>"pct"===t.unit?.01*t.value*n:t.value,m=h(s.rx),p=d(s.ry),u=h(o.rx),g=d(o.ry),v=h(l.rx),f=d(l.ry),y=h(c.rx),_=d(c.ry);let E=`M ${e+m},${i+p}`;if("cut"===s.type)E+=` l ${m},${-p}`;else E+=` a ${m} ${p} 0 0 1 ${m} ${-p}`;if(E+=" h "+(r-m-u),"cut"===o.type)E+=` l ${u},${g}`;else E+=` a ${u} ${g} 0 0 1 ${u} ${g}`;if(E+=" v "+(n-g-f),"cut"===l.type)E+=` l ${-v},${f}`;else E+=` a ${v} ${f} 0 0 1 ${-v} ${f}`;if(E+=" h "+-(r-v-y),"cut"===c.type)E+=` l ${-y},${-_}`;else E+=` a ${y} ${_} 0 0 1 ${-y} ${-_}`;return E+" z"}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"x",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"y",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"w",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],l.prototype,"h",void 0),__decorate([t.Watch({emit:!1,converter:{convert:t=>function(t){let e;const i=[];for(;e=s.exec(t);)i.push(e);switch(i.length){case 1:const t=r(i[0]);return[t,t,t,t];case 4:return[r(i[0]),r(i[1]),r(i[2]),r(i[3])];default:return null}}(t),convertBack:t=>function(t){const e=t[0],i=t[1],r=t[2],n=t[3];return`${a(e.rx)},${a(e.ry)} ${a(i.rx)},${a(i.ry)} ${a(r.rx)},${a(r.ry)} ${a(n.rx)},${a(n.ry)}`}(t)}})],l.prototype,"r",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],l.prototype,"cornerType",void 0),l=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-rect"})],l),e.PacemRectElement=l}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){const r=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,n={convert:t=>{const e=r.exec(t);return e&&e.length>=4?{x:e[1].toLowerCase(),y:e[3].toLowerCase(),slice:"slice"===e[6]}:"none"},convertBack:e=>t.Utils.isNull(e)||"string"==typeof e?"none":`xM${e.x.substr(1)}YM${e.y.substr(1)} ${e.slice?"slice":"meet"}`},a={panControl:!0,zoomControl:!0,panModifiers:[t.EventKeyModifier.AltKey],zoomModifiers:[t.EventKeyModifier.AltKey]};let s=class Pacem2DElement extends e.PacemItemsContainerElement{constructor(){super(...arguments),this.#n=t.Matrix2D.identity,this._options=a,this._resizeHandler=e=>{this._size={width:e.detail.width,height:e.detail.height};const i=this.adapter;t.Utils.isNull(i)||this._invalidateSize()},this._zoomHandler=e=>{const i=this._options;if(i.zoomControl&&t.CustomEventUtils.matchModifiers(e,i.zoomModifiers)){t.avoidHandler(e);const i=1+.1*(e.deltaY<0?-1:1),r=t.Utils.offsetRect(e.currentTarget),n={x:e.clientX,y:e.clientY};this._zoom(i,r,n)}},this._panHandler=e=>{const i=this._panningStart,r=this._getPanPoint(e);if(!t.Utils.isNullOrEmpty(i&&i.point)&&!t.Utils.isNull(r)){t.avoidHandler(e);const n=i.factor,a=i.box,s=i.point;this.viewbox={x:a.x-n*(r.x-s.x),y:a.y-n*(r.y-s.y),width:a.width,height:a.height}}},this._panStartHandler=e=>{if(!this._options.panControl)return;const i=this._size,r=this.viewbox||{x:0,y:0,width:i.width,height:i.height},n=this._getPanPoint(e);if(n){t.avoidHandler(e),this._stage.style.pointerEvents="none";const a=this._getActualAspectRatio(),s=r.width/i.width,o=r.height/i.height,l=a.slice?Math.min(s,o):Math.max(s,o);this._panningStart={point:n,box:r,factor:l}}},this._panEndHandler=t=>{this._stage.style.pointerEvents="",this._panningStart=null}}get stage(){return this._stage}snapshot(e,i,r){const n=this.adapter;return t.Utils.isNull(n)?Promise.resolve(null):n.snapshot(this,e,i,r)}#a;#n;get transformMatrix(){return this.#n}_transformMatrixScale(){const e=t.Utils.extend(this._size||t.Utils.offsetRect(this._stage),{x:0,y:0});var i=this.#a||{x:0,y:0,width:e.width,height:e.height};const r=this.viewbox||i,n=this.aspectRatio||"none",a="none"===n?"stretch":n.slice?"cover":"contain";return t.Rect.findTransform(r,i,a).a}validate(e){return e instanceof i.DrawableElement&&t.Utils.isNull(e.parent)}draw(e,i=!1){const r=this.adapter;if(!this.disabled&&!t.Utils.isNull(r)){let t=new CustomEvent("predraw",{cancelable:!0});this.dispatchEvent(t),t.defaultPrevented||(r.draw(this,e,i),this.dispatchEvent(new CustomEvent("draw")))}}_drawDebounced(e,i=!1){!t.Utils.isNull(e)&&t.Drawing.isGroup(e)?this.draw(e,i):this.draw(e)}requestDraw(t,e=!1){this._drawDebounced(t,e)}_buildUpDatasourceFromDOM(){this.datasource=(this.items||[]).slice()}_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(e){const i=this._size;if(t.Utils.isNull(i))return;const r=t.Utils.extend(i,{x:0,y:0}),n=this.#a||{x:0,y:0,width:i.width,height:i.height},a=this.viewbox||n,s=this.aspectRatio||"none",o="none"===s?"stretch":s.slice?"cover":"contain",l=t.Rect.findTransform(a,r,o),c=t.Rect.findTransform(n,r,o),h=l.a/(c.a*e);this._zoom(h)}_zoom(e,i,r){t.Utils.isNull(i)&&(i=t.Utils.offsetRect(this._stage)),t.Utils.isNull(r)&&(r={x:i.x+.5*i.width,y:i.y+.5*i.height});const n=this._size,a=this.viewbox||{x:0,y:0,width:n.width,height:n.height},s=Math.min(a.width,a.height),o=s*e,l=s*e;if(o>0&&l>0){const t=this._getActualAspectRatio(),e=t.x,n=t.y,s=t.slice,c=a.width/a.height,h=s?Math.max(i.width,i.height):Math.min(i.width,i.height);let d,m;switch(e){case"mid":d=(o-a.width)*(r.x-i.x-.5*(i.width-h))/(h*c);break;case"max":d=(o-a.width)*(r.x-i.x-(i.width-h))/(h*c);break;default:d=(o-a.width)*(r.x-i.x)/(h*c)}switch(n){case"mid":m=(l-a.height)*(r.y-i.y-.5*(i.height-h))/(h*c);break;case"max":m=(l-a.height)*(r.y-i.y-(i.height-h))/(h*c);break;default:m=(l-a.height)*(r.y-i.y)/(h*c)}const p=a.x-d,u=a.y-m;this.viewbox={x:p,y:u,width:o,height:l}}}_getPanPoint(e){const i=this._options;return e instanceof MouseEvent&&t.CustomEventUtils.matchModifiers(e,i.panModifiers)?t.CustomEventUtils.getEventCoordinates(e).page:null}_invalidateSize(){this.adapter.invalidateSize(this,this._size);const i=this.#n;this.#n=this.adapter.getTransformMatrix(this),this.dispatchEvent(new t.PropertyChangeEvent({propertyName:"transformMatrix",currentValue:this.#n,oldValue:i})),this.zoom=this._transformMatrixScale(),this.dispatchEvent(new e.ResizeEvent(this._size))}viewActivatedCallback(){super.viewActivatedCallback();const e=this.adapter;t.Utils.isNull(e)||(e.initialize(this),this._invalidateSize(),this._drawDebounced());const i=this._resize;i.addEventListener(t.Components.ResizeEventName,this._resizeHandler,!1);const r=this._stage;i.target=r;const n={capture:!1,passive:!0};r.addEventListener("wheel",this._zoomHandler,!1),r.addEventListener("mousedown",this._panStartHandler,!1),r.addEventListener("touchstart",this._panStartHandler,n),window.addEventListener("mousemove",this._panHandler,!1),window.addEventListener("mouseup",this._panEndHandler,!1),window.addEventListener("touchmove",this._panHandler,n),window.addEventListener("touchend",this._panEndHandler,n)}propertyChangedCallback(e,i,r,n){switch(super.propertyChangedCallback(e,i,r,n),e){case"adapter":t.Utils.isNull(i)||i.dispose(this),t.Utils.isNull(r)||(r.initialize(this),this._invalidateSize(),this._drawDebounced());break;case"aspectRatio":t.Utils.isNull(this.adapter)||this._invalidateSize();break;case"viewbox":t.Utils.isNull(this.adapter)||this._invalidateSize(),this.#a??=this.viewbox||null;break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":r!==this._transformMatrixScale()&&this._zoomFromValue(r);break;case"options":this._options=t.Utils.extend({},a,r||{});break;case"disabled":case"datasource":this._drawDebounced()}}disconnectedCallback(){const e=this._resize,i=this._stage;t.Utils.isNull(e)||e.removeEventListener(t.Components.ResizeEventName,this._resizeHandler,!1),t.Utils.isNull(i)||(i.removeEventListener("wheel",this._zoomHandler,!1),i.removeEventListener("mousedown",this._panStartHandler,!1),i.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)),t.Utils.isNull(this.adapter)||this.adapter.dispose(this),super.disconnectedCallback()}};__decorate([t.Watch({converter:t.PropertyConverters.Element})],s.prototype,"adapter",void 0),__decorate([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Rect})],s.prototype,"viewbox",void 0),__decorate([t.Watch({emit:!1,reflectBack:!0,converter:n})],s.prototype,"aspectRatio",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],s.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],s.prototype,"options",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],s.prototype,"zoom",void 0),__decorate([t.ViewChild("."+t.PCSS+"-2d")],s.prototype,"_stage",void 0),__decorate([t.ViewChild(t.P+"-resize")],s.prototype,"_resize",void 0),__decorate([t.Debounce(!0)],s.prototype,"_drawDebounced",null),s=__decorate([t.CustomElement({tagName:t.P+"-"+i.TAG_MIDDLE_NAME,shadow:!0,template:`<${t.P}-resize></${t.P}-resize><div class="${t.PCSS}-2d" part="container"></div><slot></slot>`})],s),i.Pacem2DElement=s}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){let i=class PacemTextElement extends e.UiElement{propertyChangedCallback(e,i,r,n){if(!n)switch(e){case"text":case"color":case"fontFamily":case"fontSize":case"fontWeight":case"fontStyle":case"anchor":t.Utils.isNull(this.stage)||this.stage.draw(this)}}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"text",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"color",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"fontFamily",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],i.prototype,"fontSize",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"fontWeight",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"fontStyle",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],i.prototype,"anchor",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"textAnchor",void 0),i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-text"})],i),e.PacemTextElement=i}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){e.AdapterUtils=class AdapterUtils{static stageDispatch(e,i,r){e instanceof EventTarget&&e.dispatchEvent(new t.Drawing.StageEvent("stage"+i,e,r,e.transformMatrix))}static itemDispatch(e,i,r){if(!t.Utils.isNull(e)){var n,a,s;r instanceof Event?a=r:n={item:e,offset:r},"string"==typeof i?s=i:(s=i.type,a=i.originalEvent);const l=e.stage.transformMatrix,c=()=>r instanceof Event?new t.Drawing.DrawableEvent(s,e,a,l):new t.Drawing.DragEvent(s,{detail:n,cancelable:s===t.UI.DragDropEventType.Init||s===t.UI.DragDropEventType.Drag},a,l),h=r instanceof Event?new t.Drawing.DrawableEvent("item"+s,e,a,l):new t.Drawing.DragEvent("item"+s,{detail:n,cancelable:s===t.UI.DragDropEventType.Init||s===t.UI.DragDropEventType.Drag},a,l);var o=!1;if(e instanceof EventTarget){const t=c();e.dispatchEvent(t),o=t.defaultPrevented}return e.stage.dispatchEvent(h),o||h.defaultPrevented}return!1}}}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="pacem:2d-canvas-scene",r="pacem:2d-parent-matrix",n=t.CustomElementUtils.setAttachedPropertyValue,a=t.CustomElementUtils.getAttachedPropertyValue;function s(e){return"none"===e||t.Utils.isNullOrEmpty(e)}function o(e,i){return t.Utils.isNull(e)?i:e}let l=class PacemCanvasAdapterElement extends e.Pacem2DAdapterElement{constructor(){super(...arguments),this._pointer={page:{x:0,y:0},screen:{x:0,y:0},client:{x:0,y:0}},this._dragInitHandler=i=>{const n=this._hitTarget;if(t.Utils.isNull(n)||!t.Drawing.isUiObject(n)||!n.draggable)return void i.preventDefault();const s=i.detail,o=n,l=n.transformMatrix??t.Matrix2D.identity,c=a(n,r,t.Matrix2D.identity);s.data={item:o,initialTransformMatrix:l,parentMatrix:c};e.AdapterUtils.itemDispatch(o,i,{x:0,y:0})&&i.preventDefault()},this._draggingHandler=i=>{t.avoidHandler(i),this._dragging=!0;const r=i.detail,n=r.data,a=r.currentPosition.x-r.origin.x,s=r.currentPosition.y-r.origin.y,o={x:a*n.parentMatrix.a+n.initialTransformMatrix.e,y:s*n.parentMatrix.d+n.initialTransformMatrix.f},l=n.item.stage.transformMatrix;if(!e.AdapterUtils.itemDispatch(n.item,i,{x:a*l.a+l.e,y:s*l.d+l.f}))if(n.item instanceof t.Components.Drawing.UiElement)n.item.translateX=o.x,n.item.translateY=o.y;else{const e=n.initialTransformMatrix,i={a:e.a,b:e.b,c:e.c,d:e.d,e:o.x,f:o.y};t.Utils.extend(n.item,{transformMatrix:i})}},this._dragEndHandler=t=>{this._dragging=!1;const i=t.detail.data,r=i.item.transformMatrix;e.AdapterUtils.itemDispatch(i.item,t,{x:r.e,y:r.f})},this._mousemoveHandler=r=>{this._scopeEvent=r,this._pointer=t.CustomEventUtils.getEventCoordinates(r);const n=r.srcElement,s=a(n,i);this._requestDraw(s),this._dragging||t.Utils.isNull(this._hitTarget)||e.AdapterUtils.stageDispatch(s,"move",r)},this._mouseDownUpHandler=r=>{this._scopeEvent=r,this._pointer=t.CustomEventUtils.getEventCoordinates(r);const n=r.target;if(n instanceof HTMLCanvasElement){const s=a(n,i),o=this._hitTarget,l=r.type.replace(/^(mouse|touch)/,""),c="end"===l?"click":l;t.Utils.isNull(o)||o.stage!==s?e.AdapterUtils.stageDispatch(s,c,r):e.AdapterUtils.itemDispatch(this._hitTarget,c,r)}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(t,e,i,r){const n=this._scenes;if(n.has(t)){const a=n.get(t).context.canvas;return this.snapshotElement(a,e,i,r)}return Promise.resolve(null)}getCanvas(t){const e=this._scenes;if(e.has(t)){return e.get(t).context.canvas}return null}_getScreenInverseMatrix(e,i){return t.Matrix2D.invert({a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+i.x,f:e.f+i.y})}getTransformMatrix(e){const i=this._scenes;return i.has(e)?i.get(e).screenInverseMatrix:t.Matrix2D.identity}viewActivatedCallback(){super.viewActivatedCallback();const e=this._dragger=document.createElement(t.P+"-drag-drop");e.mode=t.UI.DragDataMode.Copy,e.dropBehavior=t.UI.DropBehavior.None,e.spillBehavior=t.UI.DropTargetMissedBehavior.None;const i=document.createElement("div");i.hidden=!0,e.floater=i;t.CustomElementUtils.findAncestorShell(this).appendChild(e),e.addEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const e=this._dragger;t.Utils.isNull(e)||(e.removeEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,i){const r=this._scenes;if(!t.Utils.isNull(e)&&!t.Utils.isNullOrEmpty(i)&&r.has(e)){const n=r.get(e),a=n.context;a.canvas.width=i.width,a.canvas.height=i.height;const s=n.offset=t.Utils.offsetRect(a.canvas),o={x:0,y:0,width:i.width,height:i.height},l=e.aspectRatio,c=e.viewbox;if(t.Utils.isNullOrEmpty(c))n.transformMatrix=t.Matrix2D.identity;else{let e="contain",i="center",r="middle";if("object"==typeof l){switch(e=l.slice?"cover":"contain",l.x){case"min":i="left";break;case"max":i="right"}switch(l.y){case"min":r="top";break;case"max":r="bottom"}}const a=t.Rect.findTransform({x:0,y:0,width:c.width,height:c.height},o,e,i,r),h=t.Matrix2D.translate(a,{x:-a.a*c.x,y:-a.a*c.y});n.transformMatrix=h,n.screenInverseMatrix=this._getScreenInverseMatrix(h,s)}}this._requestDraw(e)}getHitTarget(e){const i=this._hitTarget;return t.Utils.isNull(i)||i.stage!==e?null:i}initialize(e){if(t.Utils.isNull(e))throw"Provided scene is null or undefined.";const r=this._scenes,a=this._dragger;if(r.has(e)){const i=r.get(e).context.canvas;return t.Utils.isNull(a)||a.register(i),i}const s=e.stage;s.innerHTML="";const o=document.createElement("canvas");o.setAttribute("part","stage"),n(o,i,e);const l=o.getContext("2d");return o.addEventListener("mousemove",this._mousemoveHandler,!1),o.addEventListener("touchstart",this._mouseDownUpHandler,{passive:!0}),o.addEventListener("touchmove",this._mouseDownUpHandler,{passive:!0}),o.addEventListener("touchend",this._mouseDownUpHandler,{passive:!0}),o.addEventListener("click",this._mouseDownUpHandler,!1),o.addEventListener("mousedown",this._mouseDownUpHandler,!1),o.addEventListener("mouseup",this._mouseDownUpHandler,!1),s.appendChild(o),r.set(e,{context:l,transformMatrix:t.Matrix2D.identity,offset:t.Utils.offsetRect(o),screenInverseMatrix:t.Matrix2D.identity}),t.Utils.isNull(a)||a.register(o),o}dispose(e){const i=this._scenes;if(i.has(e)){var r=i.get(e).context.canvas;const n=this._dragger;t.Utils.isNull(n)||n.unregister(r),r.removeEventListener("click",this._mouseDownUpHandler,!1),r.removeEventListener("touchend",this._mouseDownUpHandler,!1),r.removeEventListener("mousedown",this._mouseDownUpHandler,!1),r.removeEventListener("mouseup",this._mouseDownUpHandler,!1),r.removeEventListener("touchstart",this._mouseDownUpHandler),r.removeEventListener("mousemove",this._mousemoveHandler,!1),r.remove(),i.delete(e)}}_requestDraw(t){const e=this._handles;e.has(t)&&cancelAnimationFrame(e.get(t));e.set(t,(()=>(this.draw(t),requestAnimationFrame((()=>{}))))())}#s;draw(e){const i=this._scenes,r=this._handles;if(!t.Utils.isNull(e)){if(e.adapter!==this)return void(i.has(e)&&(i.delete(e),r.get(e)));if(!i.has(e))return void this.initialize(e);r.has(e)&&cancelAnimationFrame(r.get(e));const n=this._hitTarget,a=e.datasource||[];this._hitTarget=null;const s=i.get(e),o=s.context,l=o.canvas;this.#s=getComputedStyle(l),o.resetTransform(),o.clearRect(0,0,l.width,l.height);const c=s.transformMatrix;o.setTransform(c);const h=this._pointer,d=s.offset,m={x:h.page.x-d.x,y:h.page.y-d.y};for(let t of a)this._draw(e,o,t,{transformMatrix:c},m);const p=this._hitTarget;p!=n&&(t.Utils.isNull(n)||(n instanceof Element&&n.dispatchEvent(new t.Drawing.DrawableEvent("out",n,this._scopeEvent,c)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemout",n,this._scopeEvent,c))),t.Utils.isNull(p)||(p instanceof Element&&p.dispatchEvent(new t.Drawing.DrawableEvent("over",p,this._scopeEvent,c)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemover",p,this._scopeEvent,c))))}}_draw(e,i,a,s,o){if(a.stage??=e,t.Drawing.isDrawable(a)&&a.hide)return;let l;t.Drawing.isUiObject(a)&&a.draggable&&!a.hide&&!a.inert&&n(a,r,i.getTransform().inverse()),t.Drawing.isUiObject(a)&&(l=a.transformMatrix,t.Utils.isNull(l)||t.Matrix2D.isIdentity(l)||i.transform(l.a,l.b,l.c,l.d,l.e,l.f));let c=s;if(t.Drawing.isPresentationObject(a)&&(c=t.Drawing.PresentationState.combine(a,s,i.getTransform()),this._setPresentationState(i,c)),t.Drawing.isShape(a)||a instanceof t.Components.Drawing.ShapeElement)this._drawShape(i,a,o);else if(t.Drawing.isText(a)||a instanceof t.Components.Drawing.PacemTextElement)this._drawText(i,a,o);else if(t.Drawing.isImage(a)||a instanceof t.Components.Drawing.PacemImageElement)this._drawImage(i,a,o);else if(t.Drawing.isGroup(a)||a instanceof t.Components.Drawing.PacemGroupElement)for(let t of a.childDrawables||[])this._draw(e,i,t,c,o);t.Drawing.isUiObject(a)&&a.draggable&&!a.hide&&!a.inert&&n(a,"pacem:2d-world-matrix",i.getTransform().inverse()),this._setPresentationState(i,s)}_setPresentationState(e,i){if(e.setTransform(i.transformMatrix),t.Utils.isNullOrEmpty(i.stroke)||s(i.stroke)?e.strokeStyle="transparent":e.strokeStyle=i.stroke,t.Utils.isNullOrEmpty(i.lineWidth)?e.lineWidth=0:e.lineWidth=i.lineWidth,t.Utils.isNullOrEmpty(i.dashArray)?e.setLineDash([]):e.setLineDash(i.dashArray),t.Utils.isNullOrEmpty(i.lineCap)?e.lineCap="butt":e.lineCap=i.lineCap,t.Utils.isNullOrEmpty(i.lineJoin)?e.lineJoin="miter":e.lineJoin=i.lineJoin,"object"!=typeof i.fill||t.Utils.isNullOrEmpty(i.fill))t.Utils.isNullOrEmpty(i.fill)||"string"!=typeof i.fill||s(i.fill)?e.fillStyle="transparent":e.fillStyle=i.fill;else{const{stops:r}=i.fill;let n;if(t.Drawing.isLinearGradient(i.fill)){const{start:t,end:r}=i.fill;n=e.createLinearGradient(t.x,t.y,r.x,r.y)}else{if(!t.Drawing.isRadialGradient(i.fill))throw new Error("Unmanaged gradient type.");{const{center:t,radius:r}=i.fill;n=e.createRadialGradient(t.x,t.y,r,t.x,t.y,r)}}for(let t of r)n.addColorStop(t.offset,t.color);e.fillStyle=n}t.Utils.isNullOrEmpty(i.opacity)?e.globalAlpha=1:e.globalAlpha=i.opacity}_drawImage(e,i,r){const s="pacem:2d-canvas-imagesrc";let l=a(i,s);const c=()=>{let n=l.naturalWidth,a=l.naturalHeight,s=i.width,c=i.height;if(s>0&&c>0||(s>0?c=a*s/n:c>0?s=n*c/a:(s=n,c=a)),!this._dragging&&!i.inert&&!t.Utils.isNull(r)){const t=new Path2D(`M ${i.x} ${i.y} h ${s} v ${c} H ${i.x} Z`);e.isPointInPath(t,r.x,r.y)&&(this._hitTarget=i)}e.globalAlpha=o(i.opacity,1),e.drawImage(l,i.x,i.y,s,c)};t.Utils.isNull(l)?(l=new Image,l.src=i.src,l.onload=()=>{n(i,s,l),c()}):c()}_drawText(e,i,r){const n=this.DefaultShapeValues,a=e.fillStyle=o(i.color,n.stroke),l=(e.getTransform(),i.fontSize>0?`${i.fontSize}px`:this.#s.fontSize),c=i.fontStyle||this.#s.fontStyle,h=i.fontWeight||this.#s.fontWeight;e.font=`${c} ${h} ${l} ${i.fontFamily??this.#s.fontFamily}`,e.textAlign="middle"===i.textAnchor?"center":i.textAnchor,e.fillText(i.text,i.anchor.x,i.anchor.y),e.globalAlpha=o(i.opacity,1);const d=!s(a);if(!this._dragging&&!i.inert&&!t.Utils.isNull(r)){const t=e.measureText(i.text),n=t.width,a=t.actualBoundingBoxAscent+t.actualBoundingBoxDescent,s=i.anchor.x-t.actualBoundingBoxLeft,o=i.anchor.y-t.actualBoundingBoxAscent,l=new Path2D(`M ${s} ${o} h ${n} v ${a} H ${s} z`);d&&e.isPointInPath(l,r.x,r.y)&&(this._hitTarget=i)}}_drawShape(e,i,r){if(t.Utils.isNullOrEmpty(i?.pathData))return;e.beginPath();const n="string"!=typeof e.fillStyle||!s(e.fillStyle),a="string"!=typeof e.strokeStyle||!s(e.strokeStyle);var o=new Path2D(i.pathData);this._dragging||i.inert||t.Utils.isNull(r)||(n&&e.isPointInPath(o,r.x,r.y)||a&&e.isPointInStroke(o,r.x,r.y))&&(this._hitTarget=i),a&&e.stroke(o),n&&e.fill(o);const l=!t.Utils.isNullOrEmpty(i.vertices)&&i.vertices.length>1,c=!t.Utils.isNull(i.markerEnd),h=!t.Utils.isNull(i.markerStart),d=!t.Utils.isNull(i.markerMid);if((c||d||h)&&(l||this.log(t.Logging.LogLevel.Warn,"Not enough vertices were explicited in order to make markers renderable.")),l){const t=e.getTransform();if(h){const t=i.markerEnd,r=i.vertices[1],n=i.vertices[0],a=Math.atan2(n.y-r.y,n.x-r.x);this._drawMarker(e,t,n,a)}if(d){const r=i.markerEnd;for(let n=1;n<i.vertices.length-1;n++){e.setTransform(t);const a=i.vertices[n],s=i.vertices[n+1],o=Math.atan2(s.y-a.y,s.x-a.x);this._drawMarker(e,r,s,o)}}if(c){e.setTransform(t);const r=i.markerEnd,n=i.vertices[i.vertices.length-2],a=i.vertices[i.vertices.length-1],s=Math.atan2(a.y-n.y,a.x-n.x);this._drawMarker(e,r,a,s)}}}_drawMarker(e,i,r,n){const a=this.DefaultShapeValues,l=i.ref?.x||0,c=i.ref?.y||0,h=(i.width||1)*e.lineWidth,d=(i.width||1)*e.lineWidth;let m=i.viewbox,p={x:0,y:0,width:h,height:d};t.Utils.isNull(m)&&(m=p);const u={a:p.width/m.width,d:p.height/m.height};e.translate(r.x,r.y),e.rotate(n),e.scale(u.a,u.d),e.translate(-l,-c),e.fillStyle=o(i.fill,a.fill),e.strokeStyle=o(i.stroke,a.stroke);const g=!s(i.fill),v=!s(i.stroke);var f=new Path2D(i.pathData);g&&e.fill(f),v&&e.stroke(f)}};l=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-canvas-adapter"})],l),e.PacemCanvasAdapterElement=l}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="http://www.w3.org/2000/svg",r="pacem:2-svg-drawable",n="pacem:2d-svg-stage",a=t.CustomElementUtils.getAttachedPropertyValue,s=t.CustomElementUtils.setAttachedPropertyValue,o=t.CustomElementUtils.deleteAttachedPropertyValue;function l(e,i){return t.Utils.isNull(e)?i:e}function c(t,e,i){return i>=t.children.length?(t.appendChild(e),null):t.replaceChild(e,t.children.item(i))}let h=class PacemSvgAdapterElement extends e.Pacem2DAdapterElement{constructor(){super(...arguments),this._hitTarget=null,this._dragInitHandler=i=>{const n=i.detail,s=n.element,o=a(s,r),l=o.stage.transformMatrix,c=o.transformMatrix??t.Matrix2D.identity;n.data={stageTransformMatrix:l,item:o,initialTransformMatrix:c};e.AdapterUtils.itemDispatch(o,i,{x:0,y:0})&&i.preventDefault()},this._draggingHandler=i=>{t.avoidHandler(i),this._dragging=!0;const r=i.detail.element,n=i.detail.data,a=i.detail,s=(a.currentPosition.x-a.origin.x)*n.stageTransformMatrix.a,o=(a.currentPosition.y-a.origin.y)*n.stageTransformMatrix.d,l=s+n.initialTransformMatrix.e,c=o+n.initialTransformMatrix.f,h={x:s+n.stageTransformMatrix.e,y:o+n.stageTransformMatrix.f};if(!e.AdapterUtils.itemDispatch(n.item,i,h)){const t=n.initialTransformMatrix;r.style.transform=`matrix(${t.a},${t.b},${t.c},${t.d},${l},${c})`}},this._dragEndHandler=i=>{this._dragging=!1;const r=i.detail,n=r.element,a=r.data,s=t.Utils.deserializeTransform(n.style),o={x:s.e,y:s.f};if(a.item instanceof t.Components.Drawing.UiElement)a.item.translateX=o.x,a.item.translateY=o.y;else{const e=a.initialTransformMatrix,i={a:e.a,b:e.b,c:e.c,d:e.d,e:o.x,f:o.y};t.Utils.extend(a.item,{transformMatrix:i})}n.style.transform="",e.AdapterUtils.itemDispatch(a.item,i,o)},this._mousemoveHandler=i=>{var s=t.CustomEventUtils.getEventCoordinates(i).client;if(!this._dragging){var o=null;i.target.getRootNode().elementsFromPoint(s.x,s.y).find((t=>(o=a(t,r))&&!o.inert));var l=this._hitTarget,c=o;(t.Utils.isNull(o&&o.stage)||!this._scenes.has(o.stage)||o.inert)&&(c=null);const h=this._hitTarget=c;if(c!==l&&(t.Utils.isNull(l)||(this._dragger.unregister(this._items.get(l)),e.AdapterUtils.itemDispatch(l,"out",i)),t.Utils.isNull(c)||(c.draggable&&this._dragger.register(this._items.get(c)),e.AdapterUtils.itemDispatch(c,"over",i))),t.Utils.isNull(h)){const r=i.currentTarget,s=a(r,n);t.Utils.isNull(s)||e.AdapterUtils.stageDispatch(s,"move",i)}}},this._mouseDownUpHandler=i=>{const r=i.currentTarget;if(r instanceof SVGSVGElement){const s=a(r,n),o=this._hitTarget,l=i.type.replace(/^mouse/,"");t.Utils.isNull(o)||o.stage!==s?e.AdapterUtils.stageDispatch(s,l,i):e.AdapterUtils.itemDispatch(this._hitTarget,l,i)}},this._scenes=new WeakMap,this._markers=new WeakMap,this._gradients=new WeakMap,this._items=new WeakMap}snapshot(t,e,i,r){if(this._scenes.has(t)){const n=this._scenes.get(t);return this.snapshotElement(n,e,i,r)}return Promise.resolve(null)}getTransformMatrix(e){const i=this._scenes;return i.has(e)?i.get(e).getScreenCTM().inverse():t.Matrix2D.identity}viewActivatedCallback(){super.viewActivatedCallback();const e=this._dragger=document.createElement(t.P+"-drag-drop");e.mode=t.UI.DragDataMode.Self;t.CustomElementUtils.findAncestorShell(this).appendChild(e),e.addEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.addEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.addEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1)}disconnectedCallback(){const e=this._dragger;t.Utils.isNull(e)||(e.removeEventListener(t.UI.DragDropEventType.Init,this._dragInitHandler,!1),e.removeEventListener(t.UI.DragDropEventType.Drag,this._draggingHandler,!1),e.removeEventListener(t.UI.DragDropEventType.End,this._dragEndHandler,!1),e.remove()),super.disconnectedCallback()}invalidateSize(e,i){const r=this._scenes;if(!t.Utils.isNull(e)&&!t.Utils.isNullOrEmpty(i)&&r.has(e)){var n=r.get(e);n.setAttribute("width",i.width+""),n.setAttribute("height",i.height+"");const a=e.viewbox,s=e.aspectRatio;t.Utils.isNullOrEmpty(a)?n.removeAttribute("viewBox"):n.setAttribute("viewBox",`${a.x} ${a.y} ${a.width} ${a.height}`),t.Utils.isNullOrEmpty(s)||"string"==typeof s?n.removeAttribute("preserveAspectRatio"):n.setAttribute("preserveAspectRatio",`xM${s.x.substring(1)}YM${s.y.substring(1)} ${s.slice?"slice":"meet"}`)}}initialize(e){if(t.Utils.isNull(e))throw"Provided scene is null or undefined.";const r=this._scenes;if(r.has(e))return r.get(e);const a=e.stage;a.innerHTML="",this._items=new WeakMap;var o=document.createElementNS(i,"svg");o.setAttribute("part","stage"),s(o,n,e),a.appendChild(o),r.set(e,o);return o.addEventListener("mousemove",this._mousemoveHandler,!1),o.addEventListener("click",this._mouseDownUpHandler,!1),o.addEventListener("mousedown",this._mouseDownUpHandler,!1),o.addEventListener("mouseup",this._mouseDownUpHandler,!1),o}dispose(t){const e=this._scenes;if(e.has(t)){var i=e.get(t);i.removeEventListener("mousemove",this._mousemoveHandler),i.removeEventListener("click",this._mouseDownUpHandler),i.removeEventListener("mousedown",this._mouseDownUpHandler),i.removeEventListener("mouseup",this._mouseDownUpHandler),o(i,n),i.remove(),e.delete(t)}}getHitTarget(t){return this._hitTarget}draw(e,i,r=!1){const n=this._scenes,a=this._items;if(!t.Utils.isNull(e))if(e.adapter===this){n.has(e)||this.initialize(e);var s=e.datasource,o=!0,l=n.get(e);t.Utils.isNull(i)||a.has(i)&&(s=[i],l=a.get(i).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(e,l,s||[],o,r)}else n.has(e)&&n.delete(e)}_hasItems(e){return t.Drawing.isGroup(e)}_disposeSvg(e){if(!t.Utils.isNull(e)){var i=a(e,r);o(e,r),this._items.delete(i)}}_draw(e,i,n,a,o){const h=this._items;let d=0;if(i.firstElementChild instanceof SVGDefsElement&&d++,!t.Utils.isNullOrEmpty(n))for(let m of n){let n;if(m.stage??=e,h.has(m)?(n=h.get(m),n.parentNode!==i&&this._disposeSvg(c(i,n,d))):(n=this._buildSVGElement(m),s(n,r,m),this._disposeSvg(c(i,n,d)),h.set(m,n)),t.Drawing.isDrawable(m)&&(m.hide?n.setAttribute("display","none"):n.removeAttribute("display"),n.style.transform=""),t.Drawing.isShape(m)){const t=n;t.setAttribute("d",l(m.pathData,"M0,0"));for(let{marker:e,suffix:r}of[{marker:m.markerStart,suffix:"start"},{marker:m.markerEnd,suffix:"end"},{marker:m.markerMid,suffix:"mid"}])if(e){const n=this._ensureMarker(i,e);t.setAttribute("marker-"+r,`url(#${n.id})`)}else t.removeAttribute("marker-"+r)}else if(t.Drawing.isText(m)){const e=n;e.textContent=m.text,e.style.fill=t.Utils.isNullOrEmpty(m.color)?"":m.color,e.style.fontFamily=t.Utils.isNullOrEmpty(m.fontFamily)?"":m.fontFamily,e.style.fontSize=t.Utils.isNull(m.fontSize)?"":m.fontSize+"px",t.Utils.isNullOrEmpty(m.fontWeight)||(e.style.fontWeight=m.fontWeight),t.Utils.isNullOrEmpty(m.fontStyle)||(e.style.fontStyle=m.fontStyle),e.setAttribute("text-anchor",l(m.textAnchor,"start")),t.Utils.isNull(m.anchor)?(e.removeAttribute("x"),e.removeAttribute("y")):(e.setAttribute("x",m.anchor.x.toString()),e.setAttribute("y",m.anchor.y.toString()))}else if(t.Drawing.isImage(m)){const e=n;e.setAttribute("href",m.src),m.width>0?e.setAttribute("width",""+m.width):e.removeAttribute("width"),m.height>0?e.setAttribute("height",""+m.height):e.removeAttribute("height"),t.Utils.isNull(m.x)?e.removeAttribute("x"):e.setAttribute("x",""+m.x),t.Utils.isNull(m.y)?e.removeAttribute("y"):e.setAttribute("y",""+m.y)}if(t.Drawing.isUiObject(m)){const e=m.transformMatrix;t.Utils.isNull(e)||t.Matrix2D.isIdentity(e)?n.removeAttribute("transform"):n.setAttribute("transform",`matrix(${e.a} ${e.b} ${e.c} ${e.d} ${e.e} ${e.f})`);const i=l(m.opacity,1);1===i?n.removeAttribute("opacity"):n.setAttribute("opacity",""+i)}if(t.Drawing.isPresentationObject(m)){if(t.Utils.isNullOrEmpty(m.fill))n.removeAttribute("fill");else if("string"==typeof m.fill)n.setAttribute("fill",m.fill);else{const t=this._ensureGradient(i,m.fill);n.setAttribute("fill",`url(#${t.id})`)}t.Utils.isNullOrEmpty(m.stroke)?n.removeAttribute("stroke"):n.setAttribute("stroke",m.stroke),t.Utils.isNullOrEmpty(m.dashArray)?n.removeAttribute("stroke-dasharray"):n.setAttribute("stroke-dasharray",m.dashArray.join(" ")),t.Utils.isNullOrEmpty(m.lineCap)?n.removeAttribute("stroke-linecap"):n.setAttribute("stroke-linecap",m.lineCap),t.Utils.isNullOrEmpty(m.lineJoin)?n.removeAttribute("stroke-linejoin"):n.setAttribute("stroke-linejoin",m.lineJoin),t.Utils.isNullOrEmpty(m.lineWidth)?n.removeAttribute("stroke-width"):n.setAttribute("stroke-width",""+m.lineWidth)}m.inert?n.style.pointerEvents="none":n.style.pointerEvents="",(a||o)&&this._hasItems(m)&&this._draw(e,n,m.childDrawables,!0,o),d++}if(a)for(let t=i.children.length-1;t>=d;t--){const e=i.children.item(t);this._disposeSvg(e),e.remove()}}_buildSVGElement(e){return t.Drawing.isShape(e)||e instanceof t.Components.Drawing.ShapeElement?document.createElementNS(i,"path"):t.Drawing.isText(e)||e instanceof t.Components.Drawing.PacemTextElement?document.createElementNS(i,"text"):t.Drawing.isImage(e)||e instanceof t.Components.Drawing.PacemImageElement?document.createElementNS(i,"image"):document.createElementNS(i,"g")}_ensureGradient(e,r){const n=this._gradients;n.has(e)||n.set(e,new WeakMap);const a=n.get(e),s=t.Drawing.isLinearGradient(r),o=t.Drawing.isRadialGradient(r);if(a.has(r)){const t=a.get(r);(s&&t instanceof SVGLinearGradientElement||o&&t instanceof SVGRadialGradientElement)&&(t.remove(),a.delete(r))}if(!a.has(r)){let n,o=e;for(;t.Utils.isNull(n=o.querySelector(":scope > defs"));){const t=o.parentElement;if(!(t instanceof SVGElement))break;o=t}if(t.Utils.isNull(n))throw new Error("Must provide a <defs> element.");var l=null;if(s)l=document.createElementNS(i,"linearGradient");else{if(!t.Drawing.isRadialGradient(r))throw new Error("Unmanaged gradient type.");l=document.createElementNS(i,"radialGradient")}l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("id",`grad-${t.Utils.uniqueCode()}`),n.appendChild(l),a.set(r,l)}const c=a.get(r);s?(c.setAttribute("x1",r.start.x.toString()),c.setAttribute("y1",r.start.y.toString()),c.setAttribute("x2",r.end.x.toString()),c.setAttribute("y2",r.end.y.toString())):o&&(c.setAttribute("cx",r.center.x.toString()),c.setAttribute("cy",r.center.y.toString()),c.setAttribute("r",r.radius.toString()));let h=0;for(let e of r.stops){for(;c.children.length<=h;){const t=document.createElementNS(i,"stop");c.appendChild(t)}const r=c.children.item(h);r.setAttribute("offset",100*e.offset+"%"),r.setAttribute("stop-color",e.color),t.Utils.isNull(e.opacity)||r.setAttribute("stop-opacity",e.opacity.toString()),h++}for(;c.children.length>r.stops.length;){const t=c.children.item(c.children.length-1);c.removeChild(t)}return c}_ensureMarker(e,r){const n=this._markers;n.has(e)||n.set(e,new WeakMap);const a=n.get(e);if(!a.has(r)){const n=document.createElementNS(i,"marker");a.set(r,n);const s=document.createElementNS(i,"path");n.appendChild(s),n.setAttribute("id","mark"+t.Utils.uniqueCode());let o,l=e;for(;t.Utils.isNull(o=l.querySelector(":scope > defs"));){const t=l.parentElement;if(!(t instanceof SVGElement))break;l=t}if(t.Utils.isNull(o))throw new Error("Must provide a <defs> element.");o.appendChild(n)}const s=a.get(r),o=s.firstElementChild;return s.setAttribute("orient","auto-start-reverse"),t.Utils.isNullOrEmpty(r.viewbox)?s.removeAttribute("viewBox"):s.setAttribute("viewBox",`${r.viewbox.x} ${r.viewbox.y} ${r.viewbox.width} ${r.viewbox.height}`),t.Utils.isNullOrEmpty(r.ref)?(s.removeAttribute("refX"),s.removeAttribute("refY")):(s.setAttribute("refX",r.ref.x.toString()),s.setAttribute("refY",r.ref.y.toString())),r.height>0?s.setAttribute("markerHeight",r.height.toString()):s.removeAttribute("markerHeight"),r.width>0?s.setAttribute("markerWidth",r.width.toString()):s.removeAttribute("markerWidth"),o.setAttribute("d",r.pathData),t.Utils.isNullOrEmpty(r.fill)?o.removeAttribute("fill"):o.setAttribute("fill",r.fill),t.Utils.isNullOrEmpty(r.stroke)?o.removeAttribute("stroke"):o.setAttribute("stroke",r.stroke),s}};h=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-svg-adapter"})],h),e.PacemSvgAdapterElement=h}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.1-corinth (https://js.pacem.it)
2
+ * pacem v0.51.1-delphi (https://js.pacem.it)
3
3
  * Copyright 2024 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.51.1-corinth",
2
+ "version": "0.51.1-delphi",
3
3
  "name": "pacem",
4
4
  "homepage": "https://js.pacem.it",
5
5
  "repository": {
@@ -147,7 +147,7 @@
147
147
  "@types/leaflet": "1.9.15",
148
148
  "@types/three": "0.152.0",
149
149
  "@types/webxr": "0.5.20",
150
- "@webgpu/types": "0.1.51",
150
+ "@webgpu/types": "0.1.52",
151
151
  "@types/twitter-for-web": "0.0.6",
152
152
  "@types/less": "3.0.7",
153
153
  "@types/swagger-schema-official": "2.0.25",