pacem 0.30.0-agylla → 0.30.0-ainos
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/pacem-dark-content.min.css +1 -1
- package/dist/css/pacem-dark-shell.min.css +1 -1
- package/dist/css/pacem-dark.min.css +1 -1
- package/dist/css/pacem-light-content.min.css +1 -1
- package/dist/css/pacem-light-shell.min.css +1 -1
- package/dist/css/pacem-light.min.css +1 -1
- package/dist/css/pacem-phousys-content.min.css +1 -1
- package/dist/css/pacem-phousys-shell.min.css +1 -1
- package/dist/css/pacem-phousys.min.css +1 -1
- package/dist/js/azure-maps.d.ts +1 -1
- package/dist/js/pacem-2d.d.ts +19 -3
- package/dist/js/pacem-2d.js +123 -6
- package/dist/js/pacem-2d.min.js +2 -2
- package/dist/js/pacem-3d.d.ts +1 -1
- package/dist/js/pacem-3d.js +1 -1
- package/dist/js/pacem-3d.min.js +1 -1
- package/dist/js/pacem-charts.d.ts +1 -1
- package/dist/js/pacem-charts.js +1 -1
- package/dist/js/pacem-charts.min.js +1 -1
- package/dist/js/pacem-cms.d.ts +1 -1
- package/dist/js/pacem-cms.js +1 -1
- package/dist/js/pacem-cms.min.js +1 -1
- package/dist/js/pacem-core.d.ts +1 -1
- package/dist/js/pacem-core.js +1 -1
- package/dist/js/pacem-core.min.js +1 -1
- package/dist/js/pacem-foundation.d.ts +1 -1
- package/dist/js/pacem-foundation.js +1 -1
- package/dist/js/pacem-foundation.min.js +1 -1
- package/dist/js/pacem-fx.d.ts +1 -1
- package/dist/js/pacem-fx.js +1 -1
- package/dist/js/pacem-fx.min.js +1 -1
- package/dist/js/pacem-logging.d.ts +1 -1
- package/dist/js/pacem-logging.js +1 -1
- package/dist/js/pacem-logging.min.js +1 -1
- package/dist/js/pacem-maps.d.ts +1 -1
- package/dist/js/pacem-maps.js +1 -1
- package/dist/js/pacem-maps.min.js +1 -1
- package/dist/js/pacem-media.d.ts +1 -1
- package/dist/js/pacem-media.js +1 -1
- package/dist/js/pacem-media.min.js +1 -1
- package/dist/js/pacem-networking.js +1 -1
- package/dist/js/pacem-networking.min.js +1 -1
- package/dist/js/pacem-numerical.d.ts +1 -1
- package/dist/js/pacem-numerical.js +1 -1
- package/dist/js/pacem-numerical.min.js +1 -1
- package/dist/js/pacem-plus.d.ts +2 -1
- package/dist/js/pacem-plus.js +4 -1
- package/dist/js/pacem-plus.min.js +2 -2
- package/dist/js/pacem-scaffolding.d.ts +1 -1
- package/dist/js/pacem-scaffolding.js +1 -1
- package/dist/js/pacem-scaffolding.min.js +1 -1
- package/dist/js/pacem-ui.d.ts +1 -1
- package/dist/js/pacem-ui.js +1 -1
- package/dist/js/pacem-ui.min.js +1 -1
- package/dist/js/swagger-types.d.ts +1 -1
- package/package.json +1 -1
package/dist/js/azure-maps.d.ts
CHANGED
package/dist/js/pacem-2d.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.30.0-
|
|
2
|
+
* pacem v0.30.0-ainos (https://js.pacem.it)
|
|
3
3
|
* Copyright 2022 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
@@ -299,15 +299,31 @@ declare namespace Pacem.Components.Drawing {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
declare namespace Pacem.Components.Drawing {
|
|
302
|
+
type CornerRadiusComponent = {
|
|
303
|
+
value: number;
|
|
304
|
+
unit?: 'pct' | 'u';
|
|
305
|
+
};
|
|
306
|
+
type CornerRadius = {
|
|
307
|
+
rx: CornerRadiusComponent;
|
|
308
|
+
ry: CornerRadiusComponent;
|
|
309
|
+
type: CornerType;
|
|
310
|
+
};
|
|
311
|
+
enum CornerType {
|
|
312
|
+
Rounded = "rounded",
|
|
313
|
+
Cut = "cut"
|
|
314
|
+
}
|
|
302
315
|
class PacemRectElement extends ShapeElement {
|
|
303
316
|
x: number;
|
|
304
317
|
y: number;
|
|
305
318
|
w: number;
|
|
306
319
|
h: number;
|
|
320
|
+
r: [CornerRadius, CornerRadius, CornerRadius, CornerRadius];
|
|
321
|
+
cornerType: CornerType;
|
|
307
322
|
propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
|
|
308
|
-
protected getPathData():
|
|
323
|
+
protected getPathData(): any;
|
|
309
324
|
protected getShapeGeometry(): Pacem.Drawing.ShapeGeometry;
|
|
310
|
-
static getPathData(x
|
|
325
|
+
static getPathData(x: number, y: number, w: number, h: number, r: CornerRadius): any;
|
|
326
|
+
static getPathData(x: number, y: number, w: number, h: number, r: [CornerRadius, CornerRadius, CornerRadius, CornerRadius]): any;
|
|
311
327
|
}
|
|
312
328
|
}
|
|
313
329
|
declare namespace Pacem.Components.Drawing {
|
package/dist/js/pacem-2d.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.30.0-
|
|
2
|
+
* pacem v0.30.0-ainos (https://js.pacem.it)
|
|
3
3
|
* Copyright 2022 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
@@ -722,17 +722,70 @@ var Pacem;
|
|
|
722
722
|
var Drawing;
|
|
723
723
|
(function (Drawing) {
|
|
724
724
|
var PacemRectElement_1;
|
|
725
|
+
/*
|
|
726
|
+
r="4" // every corner has a rx equalt o ry equal to 8 units
|
|
727
|
+
r="4,8 cut" // every corner has a rx equal to 4px and a ry equal to 8px (cut corners)
|
|
728
|
+
r="4,8 cut 5,6 3,20% round 50%,4" // top-left corner has a rx equal to 4px and a ry equal to 8px (cut corner), top-right corner has a rx equal to 5px and a ry equal to 6px,
|
|
729
|
+
// bottom-right corner has a rx equal to 3px and a ry equal to 20% the height,
|
|
730
|
+
// bottom-left corner has a rx equal to 50% the width and a ry equal to 4px.
|
|
731
|
+
|
|
732
|
+
*/
|
|
733
|
+
function parseCornerRadius(radius) {
|
|
734
|
+
const rx = radius[2], ry = radius[4] ?? rx, type = radius[6] === 'cut' ? CornerType.Cut : CornerType.Rounded;
|
|
735
|
+
return { rx: parseCornerRadiusComponent(rx), ry: parseCornerRadiusComponent(ry), type };
|
|
736
|
+
}
|
|
737
|
+
function parseCornerRadiusComponent(radius) {
|
|
738
|
+
const val = parseFloat(radius);
|
|
739
|
+
return { value: val, unit: radius.endsWith('%') ? 'pct' : 'u' };
|
|
740
|
+
}
|
|
741
|
+
function stringifyCornerRadiusComponent(radius) {
|
|
742
|
+
return `${radius.value}${radius.unit === 'pct' ? '%' : ''}`;
|
|
743
|
+
}
|
|
744
|
+
const CORNERS_PATTERN = /(([\d\.]+%?)(\s*,?\s*([\d\.]+%?))?(\s+(cut|round))?)/g;
|
|
745
|
+
function parseCornerRadii(radii) {
|
|
746
|
+
let numbers;
|
|
747
|
+
const acc = [];
|
|
748
|
+
while (numbers = CORNERS_PATTERN.exec(radii)) {
|
|
749
|
+
acc.push(numbers);
|
|
750
|
+
}
|
|
751
|
+
switch (acc.length) {
|
|
752
|
+
case 1:
|
|
753
|
+
const single = parseCornerRadius(acc[0]);
|
|
754
|
+
return [single, single, single, single];
|
|
755
|
+
case 4:
|
|
756
|
+
const topLeft = parseCornerRadius(acc[0]);
|
|
757
|
+
const topRight = parseCornerRadius(acc[1]);
|
|
758
|
+
const bottomRight = parseCornerRadius(acc[2]);
|
|
759
|
+
const bottomLeft = parseCornerRadius(acc[3]);
|
|
760
|
+
return [topLeft, topRight, bottomRight, bottomLeft];
|
|
761
|
+
default:
|
|
762
|
+
return null;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
function stringifyCornerRadii(radii) {
|
|
766
|
+
const topLeft = radii[0], topRight = radii[1], bottomRight = radii[2], bottomLeft = radii[3];
|
|
767
|
+
const tlX = stringifyCornerRadiusComponent(topLeft.rx), tlY = stringifyCornerRadiusComponent(topLeft.ry);
|
|
768
|
+
const trX = stringifyCornerRadiusComponent(topRight.rx), trY = stringifyCornerRadiusComponent(topRight.ry);
|
|
769
|
+
const brX = stringifyCornerRadiusComponent(bottomRight.rx), brY = stringifyCornerRadiusComponent(bottomRight.ry);
|
|
770
|
+
const blX = stringifyCornerRadiusComponent(bottomLeft.rx), blY = stringifyCornerRadiusComponent(bottomLeft.ry);
|
|
771
|
+
return `${tlX},${tlY} ${trX},${trY} ${brX},${brY} ${blX},${blY}`;
|
|
772
|
+
}
|
|
773
|
+
let CornerType;
|
|
774
|
+
(function (CornerType) {
|
|
775
|
+
CornerType["Rounded"] = "rounded";
|
|
776
|
+
CornerType["Cut"] = "cut";
|
|
777
|
+
})(CornerType = Drawing.CornerType || (Drawing.CornerType = {}));
|
|
725
778
|
let PacemRectElement = PacemRectElement_1 = class PacemRectElement extends Drawing.ShapeElement {
|
|
726
779
|
propertyChangedCallback(name, old, val, first) {
|
|
727
780
|
super.propertyChangedCallback(name, old, val, first);
|
|
728
|
-
if (!first && (name === 'x' || name === 'y' || name === 'w' || name === 'h')) {
|
|
781
|
+
if (!first && (name === 'x' || name === 'y' || name === 'w' || name === 'h' || name === 'r' || name === 'cornerType')) {
|
|
729
782
|
this.recomputeShape();
|
|
730
783
|
}
|
|
731
784
|
}
|
|
732
785
|
getPathData() {
|
|
733
|
-
const x = this.x, y = this.y, w = this.w, h = this.h;
|
|
786
|
+
const x = this.x, y = this.y, w = this.w, h = this.h, r = this.r;
|
|
734
787
|
if (!Pacem.Utils.isNull(x) && !Pacem.Utils.isNull(y) && !Pacem.Utils.isNull(w) && !Pacem.Utils.isNull(h)) {
|
|
735
|
-
return PacemRectElement_1.getPathData(x, y, w, h);
|
|
788
|
+
return PacemRectElement_1.getPathData(x, y, w, h, r);
|
|
736
789
|
}
|
|
737
790
|
return null;
|
|
738
791
|
}
|
|
@@ -742,8 +795,61 @@ var Pacem;
|
|
|
742
795
|
pathData: this.getPathData(), vertices: [{ x, y }, { x: x1, y }, { x: x1, y: y1 }, { x, y: y1 }], boundingRect: { x, y, width: this.w, height: this.h }
|
|
743
796
|
};
|
|
744
797
|
}
|
|
745
|
-
static getPathData(x = NaN, y = NaN, w = NaN, h = NaN) {
|
|
746
|
-
|
|
798
|
+
static getPathData(x = NaN, y = NaN, w = NaN, h = NaN, r = null) {
|
|
799
|
+
if (Pacem.Utils.isNullOrEmpty(r)) {
|
|
800
|
+
return `M ${x} ${y} h ${w} v ${h} h ${-w} z`;
|
|
801
|
+
}
|
|
802
|
+
if (!Pacem.Utils.isArray(r)) {
|
|
803
|
+
r = [r, r, r, r];
|
|
804
|
+
}
|
|
805
|
+
const tl = r[0], tr = r[1], br = r[2], bl = r[3];
|
|
806
|
+
const vx = (rx) => rx.unit === 'pct' ? rx.value * .01 * w : rx.value;
|
|
807
|
+
const vy = (ry) => ry.unit === 'pct' ? ry.value * .01 * h : ry.value;
|
|
808
|
+
const tlX = vx(tl.rx), tlY = vy(tl.ry);
|
|
809
|
+
const trX = vx(tr.rx), trY = vy(tr.ry);
|
|
810
|
+
const brX = vx(br.rx), brY = vy(br.ry);
|
|
811
|
+
const blX = vx(bl.rx), blY = vy(bl.ry);
|
|
812
|
+
let retval = `M ${x + tlX},${y + tlY}`;
|
|
813
|
+
// top-left
|
|
814
|
+
switch (tl.type) {
|
|
815
|
+
case 'cut':
|
|
816
|
+
retval += ` l ${tlX},${-tlY}`;
|
|
817
|
+
break;
|
|
818
|
+
default:
|
|
819
|
+
retval += ` a ${tlX} ${tlY} 0 0 1 ${tlX} ${-tlY}`;
|
|
820
|
+
break;
|
|
821
|
+
}
|
|
822
|
+
retval += ` h ${w - tlX - trX}`;
|
|
823
|
+
// top-right
|
|
824
|
+
switch (tr.type) {
|
|
825
|
+
case 'cut':
|
|
826
|
+
retval += ` l ${trX},${trY}`;
|
|
827
|
+
break;
|
|
828
|
+
default:
|
|
829
|
+
retval += ` a ${trX} ${trY} 0 0 1 ${trX} ${trY}`;
|
|
830
|
+
break;
|
|
831
|
+
}
|
|
832
|
+
retval += ` v ${h - trY - brY}`;
|
|
833
|
+
// bottom-right
|
|
834
|
+
switch (br.type) {
|
|
835
|
+
case 'cut':
|
|
836
|
+
retval += ` l ${-brX},${brY}`;
|
|
837
|
+
break;
|
|
838
|
+
default:
|
|
839
|
+
retval += ` a ${brX} ${brY} 0 0 1 ${-brX} ${brY}`;
|
|
840
|
+
break;
|
|
841
|
+
}
|
|
842
|
+
retval += ` h ${-(w - brX - blX)}`;
|
|
843
|
+
// bottom-left
|
|
844
|
+
switch (bl.type) {
|
|
845
|
+
case 'cut':
|
|
846
|
+
retval += ` l ${-blX},${-blY}`;
|
|
847
|
+
break;
|
|
848
|
+
default:
|
|
849
|
+
retval += ` a ${blX} ${blY} 0 0 1 ${-blX} ${-blY}`;
|
|
850
|
+
break;
|
|
851
|
+
}
|
|
852
|
+
return retval + ' z';
|
|
747
853
|
}
|
|
748
854
|
};
|
|
749
855
|
__decorate([
|
|
@@ -758,6 +864,17 @@ var Pacem;
|
|
|
758
864
|
__decorate([
|
|
759
865
|
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Number })
|
|
760
866
|
], PacemRectElement.prototype, "h", void 0);
|
|
867
|
+
__decorate([
|
|
868
|
+
Pacem.Watch({
|
|
869
|
+
emit: false, converter: {
|
|
870
|
+
convert: attr => parseCornerRadii(attr),
|
|
871
|
+
convertBack: (radii) => stringifyCornerRadii(radii)
|
|
872
|
+
}
|
|
873
|
+
})
|
|
874
|
+
], PacemRectElement.prototype, "r", void 0);
|
|
875
|
+
__decorate([
|
|
876
|
+
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
|
|
877
|
+
], PacemRectElement.prototype, "cornerType", void 0);
|
|
761
878
|
PacemRectElement = PacemRectElement_1 = __decorate([
|
|
762
879
|
Pacem.CustomElement({ tagName: Pacem.P + '-' + Drawing.TAG_MIDDLE_NAME + '-rect' })
|
|
763
880
|
], PacemRectElement);
|
package/dist/js/pacem-2d.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.30.0-
|
|
2
|
+
* pacem v0.30.0-ainos (https://js.pacem.it)
|
|
3
3
|
* Copyright 2022 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
6
|
-
var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var a,s=arguments.length,n=s<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(a=t[o])&&(n=(s<3?a(n):s>3?a(e,i,n):a(e,i))||n);return s>3&&n&&Object.defineProperty(e,i,n),n},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(t,e,i,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!a:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(t,i):a?a.value=i:e.set(t,i),i},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)};!function(t){!function(e){var i;function r(e){return!t.Utils.isNull(e)&&"stage"in e}function a(t){return r(t)}e.isDrawable=r,e.isUiObject=a;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 a(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 a(t)&&"pathData"in t},e.isGroup=function(e){return a(e)&&"childDrawables"in e&&!t.Utils.isNullOrEmpty(e.childDrawables)},e.isText=function(t){return a(t)&&"text"in t&&"string"==typeof t.text},e.isImage=function(t){return a(t)&&"src"in t&&"string"==typeof t.src};class UI2DEvent extends t.CustomUIEvent{constructor(t,e,r,a){super(t,e,r),i.set(this,void 0),__classPrivateFieldSet(this,i,a,"f")}get transformMatrix(){return __classPrivateFieldGet(this,i,"f")}project(e={x:this.screenX,y:this.screenY}){return t.Matrix2D.multiply(e,__classPrivateFieldGet(this,i,"f"))}}i=new WeakMap,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){var r,a,s;i.TAG_MIDDLE_NAME="2d",i.TWO_PI=2*Math.PI;const n=Math.PI/180;class Pacem2DAdapterElement extends e.PacemEventTarget{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}}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{constructor(){super(...arguments),r.set(this,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=n*(this.rotate??0),e=Math.cos(t),i=Math.sin(t),a=(this.scaleX??1)*e,s=-i,o=i,l=(this.scaleY??1)*e,c=this.translateX??0,h=this.translateY??0;__classPrivateFieldSet(this,r,{a:a,b:s,c:o,d:l,e:c,f:h},"f")}get transformMatrix(){const t=__classPrivateFieldGet(this,r,"f");return{a:t.a,b:t.b,c:t.c,d:t.d,e:t.e,f:t.f}}}r=new WeakMap,__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{constructor(){super(...arguments),a.set(this,void 0),s.set(this,void 0)}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();__classPrivateFieldSet(this,s,e,"f"),__classPrivateFieldSet(this,a,i,"f"),this.data=t}get pathData(){return this.data}get boundingRect(){return __classPrivateFieldGet(this,a,"f")}get vertices(){return __classPrivateFieldGet(this,s,"f")}}a=new WeakMap,s=new WeakMap,__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){var i;let r=class PacemGroupElement extends e.PresentationElement{constructor(){super(...arguments),i.set(this,[])}validate(t){return t instanceof e.DrawableElement&&t.parent===this}get childDrawables(){return __classPrivateFieldGet(this,i,"f")}propertyChangedCallback(e,r,a,s){switch(super.propertyChangedCallback(e,r,a,s),e){case"items":case"datasource":__classPrivateFieldSet(this,i,a||[],"f");const e=this.stage;t.Utils.isNull(e)||e.draw(this,!0)}}};i=new WeakMap,__decorate([t.Watch({emit:!1})],r.prototype,"datasource",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-group"})],r),e.PacemGroupElement=r}(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,s=i.x,n=i.y,o={x:Math.min(r,s),y:Math.min(a,n),width:Math.abs(r-s),height:Math.abs(a-n)};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&&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,r;let a=r=class PacemPolygonElement extends e.ShapeElement{constructor(){super(...arguments),i.set(this,[])}propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"radius":case"starIndent":case"sides":this.data=this.getPathData()}}get vertices(){return __classPrivateFieldGet(this,i,"f")}getPathData(){const e=this.sides,i=this.radius,a=this.center;return t.Utils.isNull(e)||t.Utils.isNull(i)?null:r.getPathData(a,i,e,this.starIndent)}getShapeGeometry(){const e=this.center??{x:0,y:0},i=this.radius??0,a=this.sides??3,s=this.starIndent;return a<3?t.Drawing.Shape.empty():r.getShapeGeometry(e,i,a,s)}static getShapeGeometry(t,e,i,r=0){const a={x:t.x,y:t.y-e};let s=`M ${a.x} ${a.y}`;const n=[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;s+=` L ${o} ${c} L ${d} ${m}`,n.push({x:o,y:c})}else s+=` L ${d} ${m}`;n.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;s+=` L ${a} ${o}`,n.push({x:a,y:o})}n.push(a);const d=2*e;return{pathData:s+" Z",vertices:n,boundingRect:{x:a.x-e,y:a.y,width:d,height:d}}}static getPathData(t,e,i,a=0){const{pathData:s}=r.getShapeGeometry(t,e,i,a);return s}};i=new WeakMap,__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],a.prototype,"sides",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],a.prototype,"radius",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],a.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],a.prototype,"starIndent",void 0),a=r=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-polygon"})],a),e.PacemPolygonElement=a}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){var i;let r=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||this.recomputeShape()}getPathData(){const e=this.x,r=this.y,a=this.w,s=this.h;return t.Utils.isNull(e)||t.Utils.isNull(r)||t.Utils.isNull(a)||t.Utils.isNull(s)?null:i.getPathData(e,r,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(t=NaN,e=NaN,i=NaN,r=NaN){return`M ${t} ${e} h ${i} v ${r} h ${-i} z`}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"x",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"y",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"w",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],r.prototype,"h",void 0),r=i=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-rect"})],r),e.PacemRectElement=r}(e.Drawing||(e.Drawing={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){var r,a;const s=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,n={convert:t=>{const e=s.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"}`},o={panControl:!0,zoomControl:!0,panModifiers:[t.EventKeyModifier.AltKey],zoomModifiers:[t.EventKeyModifier.AltKey]};let l=class Pacem2DElement extends e.PacemItemsContainerElement{constructor(){super(...arguments),r.set(this,void 0),a.set(this,t.Matrix2D.identity),this._options=o,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,s=i.box,n=i.point;this.viewbox={x:s.x-a*(r.x-n.x),y:s.y-a*(r.y-n.y),width:s.width,height:s.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 s=this._getActualAspectRatio(),n=r.width/i.width,o=r.height/i.height,l=s.slice?Math.min(n,o):Math.max(n,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){const i=this.adapter;return t.Utils.isNull(i)?Promise.resolve(null):i.snapshot(this,e)}get transformMatrix(){return __classPrivateFieldGet(this,a,"f")}_transformMatrixScale(){const e=t.Utils.extend(this._size||t.Utils.offsetRect(this._stage),{x:0,y:0});var i=__classPrivateFieldGet(this,r,"f")||{x:0,y:0,width:e.width,height:e.height};const a=this.viewbox||i,s=this.aspectRatio||"none",n="none"===s?"stretch":s.slice?"cover":"contain";return t.Rect.findTransform(a,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 a=t.Utils.extend(i,{x:0,y:0}),s=__classPrivateFieldGet(this,r,"f")||{x:0,y:0,width:i.width,height:i.height},n=this.viewbox||s,o=this.aspectRatio||"none",l="none"===o?"stretch":o.slice?"cover":"contain",c=t.Rect.findTransform(n,a,l),h=t.Rect.findTransform(s,a,l),d=c.a/(h.a*e);this._zoom(d)}_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,s=this.viewbox||{x:0,y:0,width:a.width,height:a.height},n=Math.min(s.width,s.height),o=n*e,l=n*e;if(o>0&&l>0){const t=this._getActualAspectRatio(),e=t.x,a=t.y,n=t.slice,c=s.width/s.height,h=n?Math.max(i.width,i.height):Math.min(i.width,i.height);let d,m;switch(e){case"mid":d=(o-s.width)*(r.x-i.x-.5*(i.width-h))/(h*c);break;case"max":d=(o-s.width)*(r.x-i.x-(i.width-h))/(h*c);break;default:d=(o-s.width)*(r.x-i.x)/(h*c)}switch(a){case"mid":m=(l-s.height)*(r.y-i.y-.5*(i.height-h))/(h*c);break;case"max":m=(l-s.height)*(r.y-i.y-(i.height-h))/(h*c);break;default:m=(l-s.height)*(r.y-i.y)/(h*c)}const p=s.x-d,u=s.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=__classPrivateFieldGet(this,a,"f");__classPrivateFieldSet(this,a,this.adapter.getTransformMatrix(this),"f"),this.dispatchEvent(new t.PropertyChangeEvent({propertyName:"transformMatrix",currentValue:__classPrivateFieldGet(this,a,"f"),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,a,s){switch(super.propertyChangedCallback(e,i,a,s),e){case"adapter":t.Utils.isNull(i)||i.dispose(this),t.Utils.isNull(a)||(a.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(),__classPrivateFieldSet(this,r,__classPrivateFieldGet(this,r,"f")??(this.viewbox||null),"f");break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":a!==this._transformMatrixScale()&&this._zoomFromValue(a);break;case"options":this._options=t.Utils.extend({},o,a||{});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()}};r=new WeakMap,a=new WeakMap,__decorate([t.Watch({converter:t.PropertyConverters.Element})],l.prototype,"adapter",void 0),__decorate([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Rect})],l.prototype,"viewbox",void 0),__decorate([t.Watch({emit:!1,reflectBack:!0,converter:n})],l.prototype,"aspectRatio",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],l.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],l.prototype,"options",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],l.prototype,"zoom",void 0),__decorate([t.ViewChild("."+t.PCSS+"-2d")],l.prototype,"_stage",void 0),__decorate([t.ViewChild(t.P+"-resize")],l.prototype,"_resize",void 0),__decorate([t.Debounce(!0)],l.prototype,"_drawDebounced",null),l=__decorate([t.CustomElement({tagName:t.P+"-"+i.TAG_MIDDLE_NAME,shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-resize></${t.P}-resize><div class="${t.PCSS}-2d"></div><${t.P}-content></${t.P}-content>`})],l),i.Pacem2DElement=l}(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,s,n;r instanceof Event?s=r:a={item:e,offset:r},"string"==typeof i?n=i:(n=i.type,s=i.originalEvent);const l=e.stage.transformMatrix,c=()=>r instanceof Event?new t.Drawing.DrawableEvent(n,e,s,l):new t.Drawing.DragEvent(n,{detail:a,cancelable:n===t.UI.DragDropEventType.Init||n===t.UI.DragDropEventType.Drag},s,l),h=r instanceof Event?new t.Drawing.DrawableEvent("item"+n,e,s,l):new t.Drawing.DragEvent("item"+n,{detail:a,cancelable:n===t.UI.DragDropEventType.Init||n===t.UI.DragDropEventType.Drag},s,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){var i;const r="pacem:2d-canvas-scene",a="pacem:2d-parent-matrix",s=t.CustomElementUtils.setAttachedPropertyValue,n=t.CustomElementUtils.getAttachedPropertyValue;function o(e){return"none"===e||t.Utils.isNullOrEmpty(e)}function l(e,i){return t.Utils.isNull(e)?i:e}let c=class PacemCanvasAdapterElement extends e.Pacem2DAdapterElement{constructor(){super(...arguments),i.set(this,void 0),this._pointer={page:{x:0,y:0},screen:{x:0,y:0},client:{x:0,y:0}},this._dragInitHandler=i=>{const r=this._hitTarget;if(t.Utils.isNull(r)||!t.Drawing.isUiObject(r)||!r.draggable)return void i.preventDefault();const s=i.detail,o=r,l=r.transformMatrix??t.Matrix2D.identity,c=n(r,a,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,s=r.currentPosition.x-r.origin.x,n=r.currentPosition.y-r.origin.y,o={x:s*a.parentMatrix.a+a.initialTransformMatrix.e,y:n*a.parentMatrix.d+a.initialTransformMatrix.f},l=a.item.stage.transformMatrix;if(!e.AdapterUtils.itemDispatch(a.item,i,{x:s*l.a+l.e,y:n*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=i=>{this._scopeEvent=i,this._pointer=t.CustomEventUtils.getEventCoordinates(i);const a=i.srcElement,s=n(a,r);this._requestDraw(s),this._dragging||t.Utils.isNull(this._hitTarget)||e.AdapterUtils.stageDispatch(s,"move",i)},this._mouseDownUpHandler=i=>{this._scopeEvent=i,this._pointer=t.CustomEventUtils.getEventCoordinates(i);const a=i.target;if(a instanceof HTMLCanvasElement){const s=n(a,r),o=this._hitTarget,l=i.type.replace(/^(mouse|touch)/,""),c="end"===l?"click":l;t.Utils.isNull(o)||o.stage!==s?e.AdapterUtils.stageDispatch(s,c,i):e.AdapterUtils.itemDispatch(this._hitTarget,c,i)}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(e,i){const r=this._scenes;if(r.has(e)){const a=r.get(e).context.canvas;return t.Utils.snapshotElement(a,i)}return Promise.resolve(null)}getCanvas(t){const e=this._scenes;if(e.has(t)){return e.get(t).context.canvas}return null}_getScreenInverseMatrix(e,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),s=a.context;s.canvas.width=i.width,s.canvas.height=i.height;const n=a.offset=t.Utils.offsetRect(s.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 s=t.Rect.findTransform({x:0,y:0,width:c.width,height:c.height},o,e,i,r),h=t.Matrix2D.translate(s,{x:-s.a*c.x,y:-s.a*c.y});a.transformMatrix=h,a.screenInverseMatrix=this._getScreenInverseMatrix(h,n)}}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 i=this._scenes,a=this._dragger;if(i.has(e)){const r=i.get(e).context.canvas;return t.Utils.isNull(a)||a.register(r),r}const n=e.stage;n.innerHTML="";const o=document.createElement("canvas");s(o,r,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),n.appendChild(o),i.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 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((()=>{}))))())}draw(e){const r=this._scenes,a=this._handles;if(!t.Utils.isNull(e)){if(e.adapter!==this)return void(r.has(e)&&(r.delete(e),a.get(e)));if(!r.has(e))return void this.initialize(e);a.has(e)&&cancelAnimationFrame(a.get(e));const s=this._hitTarget,n=e.datasource||[];this._hitTarget=null;const o=r.get(e),l=o.context,c=l.canvas;__classPrivateFieldSet(this,i,getComputedStyle(c),"f"),l.resetTransform(),l.clearRect(0,0,c.width,c.height);const h=o.transformMatrix;l.setTransform(h);const d=this._pointer,m=o.offset,p={x:d.page.x-m.x,y:d.page.y-m.y};for(let t of n)this._draw(e,l,t,{transformMatrix:h},p);const u=this._hitTarget;u!=s&&(t.Utils.isNull(s)||(s instanceof Element&&s.dispatchEvent(new t.Drawing.DrawableEvent("out",s,this._scopeEvent,h)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemout",s,this._scopeEvent,h))),t.Utils.isNull(u)||(u instanceof Element&&u.dispatchEvent(new t.Drawing.DrawableEvent("over",u,this._scopeEvent,h)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemover",u,this._scopeEvent,h))))}}_draw(e,i,r,n,o){if(r.stage??=e,t.Drawing.isDrawable(r)&&r.hide)return;let l;t.Drawing.isUiObject(r)&&r.draggable&&!r.hide&&!r.inert&&s(r,a,i.getTransform().inverse()),t.Drawing.isUiObject(r)&&(l=r.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=n;if(t.Drawing.isPresentationObject(r)&&(c=t.Drawing.PresentationState.combine(r,n,i.getTransform()),this._setPresentationState(i,c)),t.Drawing.isShape(r))this._drawShape(i,r,o);else if(t.Drawing.isText(r))this._drawText(i,r,o);else if(t.Drawing.isImage(r))this._drawImage(i,r,o);else if(t.Drawing.isGroup(r))for(let t of r.childDrawables||[])this._draw(e,i,t,c,o);t.Drawing.isUiObject(r)&&r.draggable&&!r.hide&&!r.inert&&s(r,"pacem:2d-world-matrix",i.getTransform().inverse()),this._setPresentationState(i,n)}_setPresentationState(e,i){e.setTransform(i.transformMatrix),t.Utils.isNullOrEmpty(i.stroke)||o(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,t.Utils.isNullOrEmpty(i.fill)||o(i.fill)?e.fillStyle="transparent":e.fillStyle=i.fill,t.Utils.isNullOrEmpty(i.opacity)?e.globalAlpha=1:e.globalAlpha=i.opacity}_drawImage(e,i,r){const a="pacem:2d-canvas-imagesrc";let o=n(i,a);const c=()=>{let a=o.naturalWidth,s=o.naturalHeight,n=i.width,c=i.height;if(n>0&&c>0||(n>0?c=s*n/a:c>0?n=a*c/s:(n=a,c=s)),!this._dragging&&!i.inert&&!t.Utils.isNull(r)){const t=new Path2D(`M ${i.x} ${i.y} h ${n} v ${c} H ${i.x} Z`);e.isPointInPath(t,r.x,r.y)&&(this._hitTarget=i)}e.globalAlpha=l(i.opacity,1),e.drawImage(o,i.x,i.y,n,c)};t.Utils.isNull(o)?(o=new Image,o.src=i.src,o.onload=()=>{s(i,a,o),c()}):c()}_drawText(e,r,a){const s=this.DefaultShapeValues,n=e.fillStyle=l(r.color,s.stroke),c=(e.getTransform(),r.fontSize>0?`${r.fontSize}px`:__classPrivateFieldGet(this,i,"f").fontSize);e.font=`${c} ${r.fontFamily??__classPrivateFieldGet(this,i,"f").fontFamily}`,e.textAlign="middle"===r.textAnchor?"center":r.textAnchor,e.fillText(r.text,r.anchor.x,r.anchor.y),e.globalAlpha=l(r.opacity,1);const h=!o(n);if(!this._dragging&&!r.inert&&!t.Utils.isNull(a)){const t=e.measureText(r.text),i=t.width,s=t.actualBoundingBoxAscent+t.actualBoundingBoxDescent,n=r.anchor.x-t.actualBoundingBoxLeft,o=r.anchor.y-t.actualBoundingBoxAscent,l=new Path2D(`M ${n} ${o} h ${i} v ${s} H ${n} z`);h&&e.isPointInPath(l,a.x,a.y)&&(this._hitTarget=r)}}_drawShape(e,i,r){if(t.Utils.isNullOrEmpty(i?.pathData))return;e.beginPath();const a="string"!=typeof e.fillStyle||!o(e.fillStyle),s="string"!=typeof e.strokeStyle||!o(e.strokeStyle);var n=new Path2D(i.pathData);this._dragging||i.inert||t.Utils.isNull(r)||(a&&e.isPointInPath(n,r.x,r.y)||s&&e.isPointInStroke(n,r.x,r.y))&&(this._hitTarget=i),s&&e.stroke(n),a&&e.fill(n);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],s=Math.atan2(a.y-r.y,a.x-r.x);this._drawMarker(e,t,a,s)}if(d){const r=i.markerEnd;for(let a=1;a<i.vertices.length-1;a++){e.setTransform(t);const s=i.vertices[a],n=i.vertices[a+1],o=Math.atan2(n.y-s.y,n.x-s.x);this._drawMarker(e,r,n,o)}}if(c){e.setTransform(t);const r=i.markerEnd,a=i.vertices[i.vertices.length-2],s=i.vertices[i.vertices.length-1],n=Math.atan2(s.y-a.y,s.x-a.x);this._drawMarker(e,r,s,n)}}}_drawMarker(e,i,r,a){const s=this.DefaultShapeValues,n=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(-n,-c),e.fillStyle=l(i.fill,s.fill),e.strokeStyle=l(i.stroke,s.stroke);const v=!o(i.fill),g=!o(i.stroke);var _=new Path2D(i.pathData);v&&e.fill(_),g&&e.stroke(_)}};i=new WeakMap,c=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-canvas-adapter"})],c),e.PacemCanvasAdapterElement=c}(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",s=t.CustomElementUtils.getAttachedPropertyValue,n=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,n=a.element,o=s(n,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,s=i.detail,n=(s.currentPosition.x-s.origin.x)*a.stageTransformMatrix.a,o=(s.currentPosition.y-s.origin.y)*a.stageTransformMatrix.d,l=n+a.initialTransformMatrix.e,c=o+a.initialTransformMatrix.f,h={x:n+a.stageTransformMatrix.e,y:o+a.stageTransformMatrix.f};e.AdapterUtils.itemDispatch(a.item,i,h)||(r.style.transform=`matrix(1,0,0,1,${l},${c})`)},this._dragEndHandler=i=>{this._dragging=!1;const r=i.detail,a=r.element,s=r.data,n=t.Utils.deserializeTransform(a.style),o={x:n.e,y:n.f};if(s.item instanceof t.Components.Drawing.UiElement)s.item.translateX=n.e,s.item.translateY=n.f;else{const e=s.initialTransformMatrix,i={a:e.a,b:e.b,c:e.c,d:e.d,e:o.x,f:o.y};t.Utils.extend(s.item,{transformMatrix:i})}a.style.transform="",e.AdapterUtils.itemDispatch(s.item,i,{x:n.e,y:n.f})},this._mousemoveHandler=i=>{var n=t.CustomEventUtils.getEventCoordinates(i).client;if(!this._dragging){var o=null;document.elementsFromPoint(n.x,n.y).find((t=>(o=s(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,n=s(r,a);t.Utils.isNull(n)||e.AdapterUtils.stageDispatch(n,"move",i)}}},this._mouseDownUpHandler=i=>{const r=i.currentTarget;if(r instanceof SVGSVGElement){const n=s(r,a),o=this._hitTarget,l=i.type.replace(/^mouse/,"");t.Utils.isNull(o)||o.stage!==n?e.AdapterUtils.stageDispatch(n,l,i):e.AdapterUtils.itemDispatch(this._hitTarget,l,i)}},this._scenes=new WeakMap,this._markers=new WeakMap,this._items=new WeakMap}snapshot(e,i){if(this._scenes.has(e)){const r=this._scenes.get(e);return t.Utils.snapshotElement(r,i)}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 s=e.viewbox,n=e.aspectRatio;t.Utils.isNullOrEmpty(s)?a.removeAttribute("viewBox"):a.setAttribute("viewBox",`${s.x} ${s.y} ${s.width} ${s.height}`),t.Utils.isNullOrEmpty(n)||"string"==typeof n?a.removeAttribute("preserveAspectRatio"):a.setAttribute("preserveAspectRatio",`xM${n.x.substr(1)}YM${n.y.substr(1)} ${n.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 s=e.stage;s.innerHTML="",this._items=new WeakMap;var o=document.createElementNS(i,"svg");n(o,a,e),s.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,s=this._items;if(!t.Utils.isNull(e))if(e.adapter===this){a.has(e)||this.initialize(e);var n=e.datasource,o=!0,l=a.get(e);t.Utils.isNull(i)||s.has(i)&&(n=[i],l=s.get(i).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(e,l,n||[],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=s(e,r);o(e,r),this._items.delete(i)}}_draw(e,i,a,s,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),n(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)}t.Drawing.isPresentationObject(m)&&(t.Utils.isNullOrEmpty(m.fill)?a.removeAttribute("fill"):a.setAttribute("fill",m.fill),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="",(s||o)&&this._hasItems(m)&&this._draw(e,a,m.childDrawables,!0,o),d++}if(s)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)?document.createElementNS(i,"path"):t.Drawing.isText(e)?document.createElementNS(i,"text"):t.Drawing.isImage(e)?document.createElementNS(i,"image"):document.createElementNS(i,"g")}_ensureMarker(e,r){const a=this._markers;a.has(e)||a.set(e,new WeakMap);const s=a.get(e);if(!s.has(r)){const a=document.createElementNS(i,"marker");s.set(r,a);const n=document.createElementNS(i,"path");a.appendChild(n),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 n=s.get(r),o=n.firstElementChild;return n.setAttribute("orient","auto-start-reverse"),t.Utils.isNullOrEmpty(r.viewbox)?n.removeAttribute("viewBox"):n.setAttribute("viewBox",`${r.viewbox.x} ${r.viewbox.y} ${r.viewbox.width} ${r.viewbox.height}`),t.Utils.isNullOrEmpty(r.ref)?(n.removeAttribute("refX"),n.removeAttribute("refY")):(n.setAttribute("refX",r.ref.x.toString()),n.setAttribute("refY",r.ref.y.toString())),r.height>0?n.setAttribute("markerHeight",r.height.toString()):n.removeAttribute("markerHeight"),r.width>0?n.setAttribute("markerWidth",r.width.toString()):n.removeAttribute("markerWidth"),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),n}};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 a,s=arguments.length,n=s<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(a=t[o])&&(n=(s<3?a(n):s>3?a(e,i,n):a(e,i))||n);return s>3&&n&&Object.defineProperty(e,i,n),n},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(t,e,i,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!a:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(t,i):a?a.value=i:e.set(t,i),i},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)};!function(t){!function(e){var i;function r(e){return!t.Utils.isNull(e)&&"stage"in e}function a(t){return r(t)}e.isDrawable=r,e.isUiObject=a;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 a(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 a(t)&&"pathData"in t},e.isGroup=function(e){return a(e)&&"childDrawables"in e&&!t.Utils.isNullOrEmpty(e.childDrawables)},e.isText=function(t){return a(t)&&"text"in t&&"string"==typeof t.text},e.isImage=function(t){return a(t)&&"src"in t&&"string"==typeof t.src};class UI2DEvent extends t.CustomUIEvent{constructor(t,e,r,a){super(t,e,r),i.set(this,void 0),__classPrivateFieldSet(this,i,a,"f")}get transformMatrix(){return __classPrivateFieldGet(this,i,"f")}project(e={x:this.screenX,y:this.screenY}){return t.Matrix2D.multiply(e,__classPrivateFieldGet(this,i,"f"))}}i=new WeakMap,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){var r,a,s;i.TAG_MIDDLE_NAME="2d",i.TWO_PI=2*Math.PI;const n=Math.PI/180;class Pacem2DAdapterElement extends e.PacemEventTarget{constructor(){super(...arguments),this.DefaultShapeValues={stroke:"#000",lineWidth:1,fill:"#fff"}}}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{constructor(){super(...arguments),r.set(this,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=n*(this.rotate??0),e=Math.cos(t),i=Math.sin(t),a=(this.scaleX??1)*e,s=-i,o=i,l=(this.scaleY??1)*e,c=this.translateX??0,h=this.translateY??0;__classPrivateFieldSet(this,r,{a:a,b:s,c:o,d:l,e:c,f:h},"f")}get transformMatrix(){const t=__classPrivateFieldGet(this,r,"f");return{a:t.a,b:t.b,c:t.c,d:t.d,e:t.e,f:t.f}}}r=new WeakMap,__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{constructor(){super(...arguments),a.set(this,void 0),s.set(this,void 0)}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();__classPrivateFieldSet(this,s,e,"f"),__classPrivateFieldSet(this,a,i,"f"),this.data=t}get pathData(){return this.data}get boundingRect(){return __classPrivateFieldGet(this,a,"f")}get vertices(){return __classPrivateFieldGet(this,s,"f")}}a=new WeakMap,s=new WeakMap,__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){var i;let r=class PacemGroupElement extends e.PresentationElement{constructor(){super(...arguments),i.set(this,[])}validate(t){return t instanceof e.DrawableElement&&t.parent===this}get childDrawables(){return __classPrivateFieldGet(this,i,"f")}propertyChangedCallback(e,r,a,s){switch(super.propertyChangedCallback(e,r,a,s),e){case"items":case"datasource":__classPrivateFieldSet(this,i,a||[],"f");const e=this.stage;t.Utils.isNull(e)||e.draw(this,!0)}}};i=new WeakMap,__decorate([t.Watch({emit:!1})],r.prototype,"datasource",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-group"})],r),e.PacemGroupElement=r}(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,s=i.x,n=i.y,o={x:Math.min(r,s),y:Math.min(a,n),width:Math.abs(r-s),height:Math.abs(a-n)};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&&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,r;let a=r=class PacemPolygonElement extends e.ShapeElement{constructor(){super(...arguments),i.set(this,[])}propertyChangedCallback(t,e,i,r){if(super.propertyChangedCallback(t,e,i,r),!r)switch(t){case"radius":case"starIndent":case"sides":this.data=this.getPathData()}}get vertices(){return __classPrivateFieldGet(this,i,"f")}getPathData(){const e=this.sides,i=this.radius,a=this.center;return t.Utils.isNull(e)||t.Utils.isNull(i)?null:r.getPathData(a,i,e,this.starIndent)}getShapeGeometry(){const e=this.center??{x:0,y:0},i=this.radius??0,a=this.sides??3,s=this.starIndent;return a<3?t.Drawing.Shape.empty():r.getShapeGeometry(e,i,a,s)}static getShapeGeometry(t,e,i,r=0){const a={x:t.x,y:t.y-e};let s=`M ${a.x} ${a.y}`;const n=[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;s+=` L ${o} ${c} L ${d} ${m}`,n.push({x:o,y:c})}else s+=` L ${d} ${m}`;n.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;s+=` L ${a} ${o}`,n.push({x:a,y:o})}n.push(a);const d=2*e;return{pathData:s+" Z",vertices:n,boundingRect:{x:a.x-e,y:a.y,width:d,height:d}}}static getPathData(t,e,i,a=0){const{pathData:s}=r.getShapeGeometry(t,e,i,a);return s}};i=new WeakMap,__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],a.prototype,"sides",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],a.prototype,"radius",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Point})],a.prototype,"center",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],a.prototype,"starIndent",void 0),a=r=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-polygon"})],a),e.PacemPolygonElement=a}(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 s(t){return`${t.value}${"pct"===t.unit?"%":""}`}const n=/(([\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,s=this.h,n=this.r;return t.Utils.isNull(e)||t.Utils.isNull(r)||t.Utils.isNull(a)||t.Utils.isNull(s)?null:i.getPathData(e,r,a,s,n)}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,s=null){if(t.Utils.isNullOrEmpty(s))return`M ${e} ${i} h ${r} v ${a} h ${-r} z`;t.Utils.isArray(s)||(s=[s,s,s,s]);const n=s[0],o=s[1],l=s[2],c=s[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(n.rx),p=d(n.ry),u=h(o.rx),v=d(o.ry),g=h(l.rx),_=d(l.ry),f=h(c.rx),y=d(c.ry);let w=`M ${e+m},${i+p}`;if("cut"===n.type)w+=` l ${m},${-p}`;else w+=` a ${m} ${p} 0 0 1 ${m} ${-p}`;if(w+=" h "+(r-m-u),"cut"===o.type)w+=` l ${u},${v}`;else w+=` a ${u} ${v} 0 0 1 ${u} ${v}`;if(w+=" v "+(a-v-_),"cut"===l.type)w+=` l ${-g},${_}`;else w+=` a ${g} ${_} 0 0 1 ${-g} ${_}`;if(w+=" h "+-(r-g-f),"cut"===c.type)w+=` l ${-f},${-y}`;else w+=` a ${f} ${y} 0 0 1 ${-f} ${-y}`;return w+" 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=n.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`${s(e.rx)},${s(e.ry)} ${s(i.rx)},${s(i.ry)} ${s(r.rx)},${s(r.ry)} ${s(a.rx)},${s(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){var r,a;const s=/^\s*[xX]\s*([Mm](in|ax|id))\s*[yY]\s*([Mm](in|ax|id))(\s+(none|slice|meet))?\s*$/,n={convert:t=>{const e=s.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"}`},o={panControl:!0,zoomControl:!0,panModifiers:[t.EventKeyModifier.AltKey],zoomModifiers:[t.EventKeyModifier.AltKey]};let l=class Pacem2DElement extends e.PacemItemsContainerElement{constructor(){super(...arguments),r.set(this,void 0),a.set(this,t.Matrix2D.identity),this._options=o,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,s=i.box,n=i.point;this.viewbox={x:s.x-a*(r.x-n.x),y:s.y-a*(r.y-n.y),width:s.width,height:s.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 s=this._getActualAspectRatio(),n=r.width/i.width,o=r.height/i.height,l=s.slice?Math.min(n,o):Math.max(n,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){const i=this.adapter;return t.Utils.isNull(i)?Promise.resolve(null):i.snapshot(this,e)}get transformMatrix(){return __classPrivateFieldGet(this,a,"f")}_transformMatrixScale(){const e=t.Utils.extend(this._size||t.Utils.offsetRect(this._stage),{x:0,y:0});var i=__classPrivateFieldGet(this,r,"f")||{x:0,y:0,width:e.width,height:e.height};const a=this.viewbox||i,s=this.aspectRatio||"none",n="none"===s?"stretch":s.slice?"cover":"contain";return t.Rect.findTransform(a,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 a=t.Utils.extend(i,{x:0,y:0}),s=__classPrivateFieldGet(this,r,"f")||{x:0,y:0,width:i.width,height:i.height},n=this.viewbox||s,o=this.aspectRatio||"none",l="none"===o?"stretch":o.slice?"cover":"contain",c=t.Rect.findTransform(n,a,l),h=t.Rect.findTransform(s,a,l),d=c.a/(h.a*e);this._zoom(d)}_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,s=this.viewbox||{x:0,y:0,width:a.width,height:a.height},n=Math.min(s.width,s.height),o=n*e,l=n*e;if(o>0&&l>0){const t=this._getActualAspectRatio(),e=t.x,a=t.y,n=t.slice,c=s.width/s.height,h=n?Math.max(i.width,i.height):Math.min(i.width,i.height);let d,m;switch(e){case"mid":d=(o-s.width)*(r.x-i.x-.5*(i.width-h))/(h*c);break;case"max":d=(o-s.width)*(r.x-i.x-(i.width-h))/(h*c);break;default:d=(o-s.width)*(r.x-i.x)/(h*c)}switch(a){case"mid":m=(l-s.height)*(r.y-i.y-.5*(i.height-h))/(h*c);break;case"max":m=(l-s.height)*(r.y-i.y-(i.height-h))/(h*c);break;default:m=(l-s.height)*(r.y-i.y)/(h*c)}const p=s.x-d,u=s.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=__classPrivateFieldGet(this,a,"f");__classPrivateFieldSet(this,a,this.adapter.getTransformMatrix(this),"f"),this.dispatchEvent(new t.PropertyChangeEvent({propertyName:"transformMatrix",currentValue:__classPrivateFieldGet(this,a,"f"),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,a,s){switch(super.propertyChangedCallback(e,i,a,s),e){case"adapter":t.Utils.isNull(i)||i.dispose(this),t.Utils.isNull(a)||(a.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(),__classPrivateFieldSet(this,r,__classPrivateFieldGet(this,r,"f")??(this.viewbox||null),"f");break;case"items":this._buildUpDatasourceFromDOM();break;case"zoom":a!==this._transformMatrixScale()&&this._zoomFromValue(a);break;case"options":this._options=t.Utils.extend({},o,a||{});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()}};r=new WeakMap,a=new WeakMap,__decorate([t.Watch({converter:t.PropertyConverters.Element})],l.prototype,"adapter",void 0),__decorate([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Rect})],l.prototype,"viewbox",void 0),__decorate([t.Watch({emit:!1,reflectBack:!0,converter:n})],l.prototype,"aspectRatio",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],l.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],l.prototype,"options",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],l.prototype,"zoom",void 0),__decorate([t.ViewChild("."+t.PCSS+"-2d")],l.prototype,"_stage",void 0),__decorate([t.ViewChild(t.P+"-resize")],l.prototype,"_resize",void 0),__decorate([t.Debounce(!0)],l.prototype,"_drawDebounced",null),l=__decorate([t.CustomElement({tagName:t.P+"-"+i.TAG_MIDDLE_NAME,shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-resize></${t.P}-resize><div class="${t.PCSS}-2d"></div><${t.P}-content></${t.P}-content>`})],l),i.Pacem2DElement=l}(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,s,n;r instanceof Event?s=r:a={item:e,offset:r},"string"==typeof i?n=i:(n=i.type,s=i.originalEvent);const l=e.stage.transformMatrix,c=()=>r instanceof Event?new t.Drawing.DrawableEvent(n,e,s,l):new t.Drawing.DragEvent(n,{detail:a,cancelable:n===t.UI.DragDropEventType.Init||n===t.UI.DragDropEventType.Drag},s,l),h=r instanceof Event?new t.Drawing.DrawableEvent("item"+n,e,s,l):new t.Drawing.DragEvent("item"+n,{detail:a,cancelable:n===t.UI.DragDropEventType.Init||n===t.UI.DragDropEventType.Drag},s,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){var i;const r="pacem:2d-canvas-scene",a="pacem:2d-parent-matrix",s=t.CustomElementUtils.setAttachedPropertyValue,n=t.CustomElementUtils.getAttachedPropertyValue;function o(e){return"none"===e||t.Utils.isNullOrEmpty(e)}function l(e,i){return t.Utils.isNull(e)?i:e}let c=class PacemCanvasAdapterElement extends e.Pacem2DAdapterElement{constructor(){super(...arguments),i.set(this,void 0),this._pointer={page:{x:0,y:0},screen:{x:0,y:0},client:{x:0,y:0}},this._dragInitHandler=i=>{const r=this._hitTarget;if(t.Utils.isNull(r)||!t.Drawing.isUiObject(r)||!r.draggable)return void i.preventDefault();const s=i.detail,o=r,l=r.transformMatrix??t.Matrix2D.identity,c=n(r,a,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,s=r.currentPosition.x-r.origin.x,n=r.currentPosition.y-r.origin.y,o={x:s*a.parentMatrix.a+a.initialTransformMatrix.e,y:n*a.parentMatrix.d+a.initialTransformMatrix.f},l=a.item.stage.transformMatrix;if(!e.AdapterUtils.itemDispatch(a.item,i,{x:s*l.a+l.e,y:n*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=i=>{this._scopeEvent=i,this._pointer=t.CustomEventUtils.getEventCoordinates(i);const a=i.srcElement,s=n(a,r);this._requestDraw(s),this._dragging||t.Utils.isNull(this._hitTarget)||e.AdapterUtils.stageDispatch(s,"move",i)},this._mouseDownUpHandler=i=>{this._scopeEvent=i,this._pointer=t.CustomEventUtils.getEventCoordinates(i);const a=i.target;if(a instanceof HTMLCanvasElement){const s=n(a,r),o=this._hitTarget,l=i.type.replace(/^(mouse|touch)/,""),c="end"===l?"click":l;t.Utils.isNull(o)||o.stage!==s?e.AdapterUtils.stageDispatch(s,c,i):e.AdapterUtils.itemDispatch(this._hitTarget,c,i)}},this._scenes=new WeakMap,this._handles=new WeakMap}snapshot(e,i){const r=this._scenes;if(r.has(e)){const a=r.get(e).context.canvas;return t.Utils.snapshotElement(a,i)}return Promise.resolve(null)}getCanvas(t){const e=this._scenes;if(e.has(t)){return e.get(t).context.canvas}return null}_getScreenInverseMatrix(e,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),s=a.context;s.canvas.width=i.width,s.canvas.height=i.height;const n=a.offset=t.Utils.offsetRect(s.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 s=t.Rect.findTransform({x:0,y:0,width:c.width,height:c.height},o,e,i,r),h=t.Matrix2D.translate(s,{x:-s.a*c.x,y:-s.a*c.y});a.transformMatrix=h,a.screenInverseMatrix=this._getScreenInverseMatrix(h,n)}}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 i=this._scenes,a=this._dragger;if(i.has(e)){const r=i.get(e).context.canvas;return t.Utils.isNull(a)||a.register(r),r}const n=e.stage;n.innerHTML="";const o=document.createElement("canvas");s(o,r,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),n.appendChild(o),i.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 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((()=>{}))))())}draw(e){const r=this._scenes,a=this._handles;if(!t.Utils.isNull(e)){if(e.adapter!==this)return void(r.has(e)&&(r.delete(e),a.get(e)));if(!r.has(e))return void this.initialize(e);a.has(e)&&cancelAnimationFrame(a.get(e));const s=this._hitTarget,n=e.datasource||[];this._hitTarget=null;const o=r.get(e),l=o.context,c=l.canvas;__classPrivateFieldSet(this,i,getComputedStyle(c),"f"),l.resetTransform(),l.clearRect(0,0,c.width,c.height);const h=o.transformMatrix;l.setTransform(h);const d=this._pointer,m=o.offset,p={x:d.page.x-m.x,y:d.page.y-m.y};for(let t of n)this._draw(e,l,t,{transformMatrix:h},p);const u=this._hitTarget;u!=s&&(t.Utils.isNull(s)||(s instanceof Element&&s.dispatchEvent(new t.Drawing.DrawableEvent("out",s,this._scopeEvent,h)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemout",s,this._scopeEvent,h))),t.Utils.isNull(u)||(u instanceof Element&&u.dispatchEvent(new t.Drawing.DrawableEvent("over",u,this._scopeEvent,h)),e.dispatchEvent(new t.Drawing.DrawableEvent("itemover",u,this._scopeEvent,h))))}}_draw(e,i,r,n,o){if(r.stage??=e,t.Drawing.isDrawable(r)&&r.hide)return;let l;t.Drawing.isUiObject(r)&&r.draggable&&!r.hide&&!r.inert&&s(r,a,i.getTransform().inverse()),t.Drawing.isUiObject(r)&&(l=r.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=n;if(t.Drawing.isPresentationObject(r)&&(c=t.Drawing.PresentationState.combine(r,n,i.getTransform()),this._setPresentationState(i,c)),t.Drawing.isShape(r))this._drawShape(i,r,o);else if(t.Drawing.isText(r))this._drawText(i,r,o);else if(t.Drawing.isImage(r))this._drawImage(i,r,o);else if(t.Drawing.isGroup(r))for(let t of r.childDrawables||[])this._draw(e,i,t,c,o);t.Drawing.isUiObject(r)&&r.draggable&&!r.hide&&!r.inert&&s(r,"pacem:2d-world-matrix",i.getTransform().inverse()),this._setPresentationState(i,n)}_setPresentationState(e,i){e.setTransform(i.transformMatrix),t.Utils.isNullOrEmpty(i.stroke)||o(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,t.Utils.isNullOrEmpty(i.fill)||o(i.fill)?e.fillStyle="transparent":e.fillStyle=i.fill,t.Utils.isNullOrEmpty(i.opacity)?e.globalAlpha=1:e.globalAlpha=i.opacity}_drawImage(e,i,r){const a="pacem:2d-canvas-imagesrc";let o=n(i,a);const c=()=>{let a=o.naturalWidth,s=o.naturalHeight,n=i.width,c=i.height;if(n>0&&c>0||(n>0?c=s*n/a:c>0?n=a*c/s:(n=a,c=s)),!this._dragging&&!i.inert&&!t.Utils.isNull(r)){const t=new Path2D(`M ${i.x} ${i.y} h ${n} v ${c} H ${i.x} Z`);e.isPointInPath(t,r.x,r.y)&&(this._hitTarget=i)}e.globalAlpha=l(i.opacity,1),e.drawImage(o,i.x,i.y,n,c)};t.Utils.isNull(o)?(o=new Image,o.src=i.src,o.onload=()=>{s(i,a,o),c()}):c()}_drawText(e,r,a){const s=this.DefaultShapeValues,n=e.fillStyle=l(r.color,s.stroke),c=(e.getTransform(),r.fontSize>0?`${r.fontSize}px`:__classPrivateFieldGet(this,i,"f").fontSize);e.font=`${c} ${r.fontFamily??__classPrivateFieldGet(this,i,"f").fontFamily}`,e.textAlign="middle"===r.textAnchor?"center":r.textAnchor,e.fillText(r.text,r.anchor.x,r.anchor.y),e.globalAlpha=l(r.opacity,1);const h=!o(n);if(!this._dragging&&!r.inert&&!t.Utils.isNull(a)){const t=e.measureText(r.text),i=t.width,s=t.actualBoundingBoxAscent+t.actualBoundingBoxDescent,n=r.anchor.x-t.actualBoundingBoxLeft,o=r.anchor.y-t.actualBoundingBoxAscent,l=new Path2D(`M ${n} ${o} h ${i} v ${s} H ${n} z`);h&&e.isPointInPath(l,a.x,a.y)&&(this._hitTarget=r)}}_drawShape(e,i,r){if(t.Utils.isNullOrEmpty(i?.pathData))return;e.beginPath();const a="string"!=typeof e.fillStyle||!o(e.fillStyle),s="string"!=typeof e.strokeStyle||!o(e.strokeStyle);var n=new Path2D(i.pathData);this._dragging||i.inert||t.Utils.isNull(r)||(a&&e.isPointInPath(n,r.x,r.y)||s&&e.isPointInStroke(n,r.x,r.y))&&(this._hitTarget=i),s&&e.stroke(n),a&&e.fill(n);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],s=Math.atan2(a.y-r.y,a.x-r.x);this._drawMarker(e,t,a,s)}if(d){const r=i.markerEnd;for(let a=1;a<i.vertices.length-1;a++){e.setTransform(t);const s=i.vertices[a],n=i.vertices[a+1],o=Math.atan2(n.y-s.y,n.x-s.x);this._drawMarker(e,r,n,o)}}if(c){e.setTransform(t);const r=i.markerEnd,a=i.vertices[i.vertices.length-2],s=i.vertices[i.vertices.length-1],n=Math.atan2(s.y-a.y,s.x-a.x);this._drawMarker(e,r,s,n)}}}_drawMarker(e,i,r,a){const s=this.DefaultShapeValues,n=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(-n,-c),e.fillStyle=l(i.fill,s.fill),e.strokeStyle=l(i.stroke,s.stroke);const v=!o(i.fill),g=!o(i.stroke);var _=new Path2D(i.pathData);v&&e.fill(_),g&&e.stroke(_)}};i=new WeakMap,c=__decorate([t.CustomElement({tagName:t.P+"-"+e.TAG_MIDDLE_NAME+"-canvas-adapter"})],c),e.PacemCanvasAdapterElement=c}(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",s=t.CustomElementUtils.getAttachedPropertyValue,n=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,n=a.element,o=s(n,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,s=i.detail,n=(s.currentPosition.x-s.origin.x)*a.stageTransformMatrix.a,o=(s.currentPosition.y-s.origin.y)*a.stageTransformMatrix.d,l=n+a.initialTransformMatrix.e,c=o+a.initialTransformMatrix.f,h={x:n+a.stageTransformMatrix.e,y:o+a.stageTransformMatrix.f};e.AdapterUtils.itemDispatch(a.item,i,h)||(r.style.transform=`matrix(1,0,0,1,${l},${c})`)},this._dragEndHandler=i=>{this._dragging=!1;const r=i.detail,a=r.element,s=r.data,n=t.Utils.deserializeTransform(a.style),o={x:n.e,y:n.f};if(s.item instanceof t.Components.Drawing.UiElement)s.item.translateX=n.e,s.item.translateY=n.f;else{const e=s.initialTransformMatrix,i={a:e.a,b:e.b,c:e.c,d:e.d,e:o.x,f:o.y};t.Utils.extend(s.item,{transformMatrix:i})}a.style.transform="",e.AdapterUtils.itemDispatch(s.item,i,{x:n.e,y:n.f})},this._mousemoveHandler=i=>{var n=t.CustomEventUtils.getEventCoordinates(i).client;if(!this._dragging){var o=null;document.elementsFromPoint(n.x,n.y).find((t=>(o=s(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,n=s(r,a);t.Utils.isNull(n)||e.AdapterUtils.stageDispatch(n,"move",i)}}},this._mouseDownUpHandler=i=>{const r=i.currentTarget;if(r instanceof SVGSVGElement){const n=s(r,a),o=this._hitTarget,l=i.type.replace(/^mouse/,"");t.Utils.isNull(o)||o.stage!==n?e.AdapterUtils.stageDispatch(n,l,i):e.AdapterUtils.itemDispatch(this._hitTarget,l,i)}},this._scenes=new WeakMap,this._markers=new WeakMap,this._items=new WeakMap}snapshot(e,i){if(this._scenes.has(e)){const r=this._scenes.get(e);return t.Utils.snapshotElement(r,i)}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 s=e.viewbox,n=e.aspectRatio;t.Utils.isNullOrEmpty(s)?a.removeAttribute("viewBox"):a.setAttribute("viewBox",`${s.x} ${s.y} ${s.width} ${s.height}`),t.Utils.isNullOrEmpty(n)||"string"==typeof n?a.removeAttribute("preserveAspectRatio"):a.setAttribute("preserveAspectRatio",`xM${n.x.substr(1)}YM${n.y.substr(1)} ${n.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 s=e.stage;s.innerHTML="",this._items=new WeakMap;var o=document.createElementNS(i,"svg");n(o,a,e),s.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,s=this._items;if(!t.Utils.isNull(e))if(e.adapter===this){a.has(e)||this.initialize(e);var n=e.datasource,o=!0,l=a.get(e);t.Utils.isNull(i)||s.has(i)&&(n=[i],l=s.get(i).parentNode,o=!1),o&&(l.innerHTML="<defs></defs>",this._markers=new WeakMap),this._draw(e,l,n||[],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=s(e,r);o(e,r),this._items.delete(i)}}_draw(e,i,a,s,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),n(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)}t.Drawing.isPresentationObject(m)&&(t.Utils.isNullOrEmpty(m.fill)?a.removeAttribute("fill"):a.setAttribute("fill",m.fill),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="",(s||o)&&this._hasItems(m)&&this._draw(e,a,m.childDrawables,!0,o),d++}if(s)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)?document.createElementNS(i,"path"):t.Drawing.isText(e)?document.createElementNS(i,"text"):t.Drawing.isImage(e)?document.createElementNS(i,"image"):document.createElementNS(i,"g")}_ensureMarker(e,r){const a=this._markers;a.has(e)||a.set(e,new WeakMap);const s=a.get(e);if(!s.has(r)){const a=document.createElementNS(i,"marker");s.set(r,a);const n=document.createElementNS(i,"path");a.appendChild(n),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 n=s.get(r),o=n.firstElementChild;return n.setAttribute("orient","auto-start-reverse"),t.Utils.isNullOrEmpty(r.viewbox)?n.removeAttribute("viewBox"):n.setAttribute("viewBox",`${r.viewbox.x} ${r.viewbox.y} ${r.viewbox.width} ${r.viewbox.height}`),t.Utils.isNullOrEmpty(r.ref)?(n.removeAttribute("refX"),n.removeAttribute("refY")):(n.setAttribute("refX",r.ref.x.toString()),n.setAttribute("refY",r.ref.y.toString())),r.height>0?n.setAttribute("markerHeight",r.height.toString()):n.removeAttribute("markerHeight"),r.width>0?n.setAttribute("markerWidth",r.width.toString()):n.removeAttribute("markerWidth"),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),n}};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={}));
|
package/dist/js/pacem-3d.d.ts
CHANGED
package/dist/js/pacem-3d.js
CHANGED
package/dist/js/pacem-3d.min.js
CHANGED
package/dist/js/pacem-charts.js
CHANGED
package/dist/js/pacem-cms.d.ts
CHANGED
package/dist/js/pacem-cms.js
CHANGED
package/dist/js/pacem-cms.min.js
CHANGED
package/dist/js/pacem-core.d.ts
CHANGED