@node-projects/web-component-designer 0.1.342 → 0.1.344

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/elements/helper/ElementHelper.d.ts +6 -0
  2. package/dist/elements/helper/ElementHelper.js +105 -0
  3. package/dist/elements/helper/ElementHelper.js.map +1 -1
  4. package/dist/elements/helper/getBoxQuads.js +6 -4
  5. package/dist/elements/helper/getBoxQuads.js.map +1 -1
  6. package/dist/elements/services/designItemService/BaseCustomWebcomponentDesignItemService.d.ts +1 -1
  7. package/dist/elements/services/designItemService/BaseCustomWebcomponentDesignItemService.js +3 -3
  8. package/dist/elements/services/designItemService/BaseCustomWebcomponentDesignItemService.js.map +1 -1
  9. package/dist/elements/services/designItemService/DesignItemService.d.ts +0 -1
  10. package/dist/elements/services/designItemService/DesignItemService.js +0 -17
  11. package/dist/elements/services/designItemService/DesignItemService.js.map +1 -1
  12. package/dist/elements/services/propertiesService/services/AbstractCssPropertiesService.js +1 -1
  13. package/dist/elements/services/propertiesService/services/AbstractCssPropertiesService.js.map +1 -1
  14. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +3 -1
  15. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +28 -1
  16. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js.map +1 -1
  17. package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +1 -1
  18. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +2 -2
  19. package/dist/elements/services/propertiesService/services/ListPropertiesService.js.map +1 -1
  20. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.d.ts +1 -1
  21. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js +2 -2
  22. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js.map +1 -1
  23. package/dist/elements/services/searchService/ISearchService.d.ts +1 -1
  24. package/dist/elements/services/searchService/SearchService.d.ts +1 -1
  25. package/dist/elements/services/searchService/SearchService.js +5 -4
  26. package/dist/elements/services/searchService/SearchService.js.map +1 -1
  27. package/dist/elements/services/undoService/UndoService.d.ts +0 -2
  28. package/dist/elements/services/undoService/UndoService.js +9 -21
  29. package/dist/elements/services/undoService/UndoService.js.map +1 -1
  30. package/dist/elements/widgets/designerView/DomConverter.d.ts +1 -1
  31. package/dist/elements/widgets/designerView/designerCanvas.js +3 -3
  32. package/dist/elements/widgets/designerView/designerCanvas.js.map +1 -1
  33. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.d.ts +56 -0
  34. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js +584 -0
  35. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js.map +1 -0
  36. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.d.ts +12 -0
  37. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.js +27 -0
  38. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtensionProvider.js.map +1 -0
  39. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssClipPathGeometryReader.d.ts +18 -0
  40. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssClipPathGeometryReader.js +161 -0
  41. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssClipPathGeometryReader.js.map +1 -0
  42. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssOffsetPathGeometryReader.d.ts +18 -0
  43. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssOffsetPathGeometryReader.js +150 -0
  44. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssOffsetPathGeometryReader.js.map +1 -0
  45. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssShapeOutsideGeometryReader.d.ts +17 -0
  46. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssShapeOutsideGeometryReader.js +121 -0
  47. package/dist/elements/widgets/designerView/extensions/svg/geometry/CssShapeOutsideGeometryReader.js.map +1 -0
  48. package/dist/elements/widgets/designerView/extensions/svg/geometry/GeometryReaderFactory.d.ts +4 -0
  49. package/dist/elements/widgets/designerView/extensions/svg/geometry/GeometryReaderFactory.js +54 -0
  50. package/dist/elements/widgets/designerView/extensions/svg/geometry/GeometryReaderFactory.js.map +1 -0
  51. package/dist/elements/widgets/designerView/extensions/svg/geometry/IGeometry.d.ts +61 -0
  52. package/dist/elements/widgets/designerView/extensions/svg/geometry/IGeometry.js +17 -0
  53. package/dist/elements/widgets/designerView/extensions/svg/geometry/IGeometry.js.map +1 -0
  54. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgCircleGeometryReader.d.ts +8 -0
  55. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgCircleGeometryReader.js +37 -0
  56. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgCircleGeometryReader.js.map +1 -0
  57. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgEllipseGeometryReader.d.ts +8 -0
  58. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgEllipseGeometryReader.js +42 -0
  59. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgEllipseGeometryReader.js.map +1 -0
  60. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgLineGeometryReader.d.ts +8 -0
  61. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgLineGeometryReader.js +27 -0
  62. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgLineGeometryReader.js.map +1 -0
  63. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPathGeometryReader.d.ts +9 -0
  64. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPathGeometryReader.js +205 -0
  65. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPathGeometryReader.js.map +1 -0
  66. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPolygonGeometryReader.d.ts +8 -0
  67. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPolygonGeometryReader.js +27 -0
  68. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPolygonGeometryReader.js.map +1 -0
  69. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPolylineGeometryReader.d.ts +8 -0
  70. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPolylineGeometryReader.js +24 -0
  71. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgPolylineGeometryReader.js.map +1 -0
  72. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.d.ts +8 -0
  73. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.js +36 -0
  74. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.js.map +1 -0
  75. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +0 -2
  76. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js.map +1 -1
  77. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +0 -2
  78. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js.map +1 -1
  79. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TransformToolButtonProvider.js +0 -2
  80. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TransformToolButtonProvider.js.map +1 -1
  81. package/dist/index-min.js +6 -6
  82. package/dist/index-min.js.map +4 -4
  83. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ import { IPoint } from '../../../../../../interfaces/IPoint.js';
2
+ /**
3
+ * Segment types supported by the geometry model.
4
+ */
5
+ export declare enum SegmentType {
6
+ Move = "M",
7
+ Line = "L",
8
+ CubicBezier = "C",
9
+ QuadraticBezier = "Q",
10
+ Arc = "A",
11
+ Close = "Z",
12
+ HorizontalLine = "H",
13
+ VerticalLine = "V",
14
+ SmoothCubic = "S",
15
+ SmoothQuadratic = "T"
16
+ }
17
+ /**
18
+ * A single segment in the geometry. All coordinates are stored as absolute values for internal editing.
19
+ * The `relative` flag preserves whether the original command was relative.
20
+ */
21
+ export interface IGeometrySegment {
22
+ /** The segment type */
23
+ type: SegmentType;
24
+ /** Whether the original command was relative (lowercase letter in SVG path) */
25
+ relative: boolean;
26
+ /** The endpoint of this segment (absolute coordinates) */
27
+ point: IPoint;
28
+ /** For cubic bezier: first control point (absolute) */
29
+ cp1?: IPoint;
30
+ /** For cubic bezier: second control point (absolute). For quadratic bezier: the single control point. */
31
+ cp2?: IPoint;
32
+ /** For arc segments */
33
+ arc?: {
34
+ rx: number;
35
+ ry: number;
36
+ rotation: number;
37
+ largeArc: boolean;
38
+ sweep: boolean;
39
+ };
40
+ }
41
+ /**
42
+ * Abstraction over any editable geometry (SVG shapes, CSS shapes, etc.)
43
+ */
44
+ export interface IGeometry {
45
+ /** The segments describing this geometry */
46
+ segments: IGeometrySegment[];
47
+ /** Whether this geometry represents a closed shape */
48
+ closed: boolean;
49
+ }
50
+ /**
51
+ * Reads element attributes/properties into an IGeometry
52
+ */
53
+ export interface IGeometryReader {
54
+ /** Read the element's current geometry */
55
+ read(element: Element): IGeometry;
56
+ /** Write the geometry back to the element as attribute string */
57
+ serialize(geometry: IGeometry): {
58
+ attribute: string;
59
+ value: string;
60
+ }[];
61
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Segment types supported by the geometry model.
3
+ */
4
+ export var SegmentType;
5
+ (function (SegmentType) {
6
+ SegmentType["Move"] = "M";
7
+ SegmentType["Line"] = "L";
8
+ SegmentType["CubicBezier"] = "C";
9
+ SegmentType["QuadraticBezier"] = "Q";
10
+ SegmentType["Arc"] = "A";
11
+ SegmentType["Close"] = "Z";
12
+ SegmentType["HorizontalLine"] = "H";
13
+ SegmentType["VerticalLine"] = "V";
14
+ SegmentType["SmoothCubic"] = "S";
15
+ SegmentType["SmoothQuadratic"] = "T";
16
+ })(SegmentType || (SegmentType = {}));
17
+ //# sourceMappingURL=IGeometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IGeometry.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/IGeometry.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,WAWX;AAXD,WAAY,WAAW;IACrB,yBAAU,CAAA;IACV,yBAAU,CAAA;IACV,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,wBAAS,CAAA;IACT,0BAAW,CAAA;IACX,mCAAoB,CAAA;IACpB,iCAAkB,CAAA;IAClB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;AACvB,CAAC,EAXW,WAAW,KAAX,WAAW,QAWtB"}
@@ -0,0 +1,8 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ export declare class SvgCircleGeometryReader implements IGeometryReader {
3
+ read(element: Element): IGeometry;
4
+ serialize(geometry: IGeometry): {
5
+ attribute: string;
6
+ value: string;
7
+ }[];
8
+ }
@@ -0,0 +1,37 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ export class SvgCircleGeometryReader {
3
+ read(element) {
4
+ const el = element;
5
+ const cx = el.cx.baseVal.value;
6
+ const cy = el.cy.baseVal.value;
7
+ const r = el.r.baseVal.value;
8
+ // Same as ellipse but rx == ry == r
9
+ const segments = [
10
+ { type: SegmentType.Move, relative: false, point: { x: cx, y: cy - r } },
11
+ { type: SegmentType.Arc, relative: false, point: { x: cx + r, y: cy }, arc: { rx: r, ry: r, rotation: 0, largeArc: false, sweep: true } },
12
+ { type: SegmentType.Arc, relative: false, point: { x: cx, y: cy + r }, arc: { rx: r, ry: r, rotation: 0, largeArc: false, sweep: true } },
13
+ { type: SegmentType.Arc, relative: false, point: { x: cx - r, y: cy }, arc: { rx: r, ry: r, rotation: 0, largeArc: false, sweep: true } },
14
+ { type: SegmentType.Arc, relative: false, point: { x: cx, y: cy - r }, arc: { rx: r, ry: r, rotation: 0, largeArc: false, sweep: true } },
15
+ { type: SegmentType.Close, relative: false, point: { x: cx, y: cy - r } },
16
+ ];
17
+ return { segments, closed: true };
18
+ }
19
+ serialize(geometry) {
20
+ const pts = geometry.segments.filter(s => s.type !== SegmentType.Close);
21
+ if (pts.length < 4)
22
+ return [];
23
+ const top = pts[0].point;
24
+ const right = pts[1].point;
25
+ const bottom = pts[2].point;
26
+ const left = pts[3].point;
27
+ const cx = (right.x + left.x) / 2;
28
+ const cy = (top.y + bottom.y) / 2;
29
+ const r = Math.max(Math.abs(right.x - left.x) / 2, Math.abs(bottom.y - top.y) / 2);
30
+ return [
31
+ { attribute: 'cx', value: cx.toString() },
32
+ { attribute: 'cy', value: cy.toString() },
33
+ { attribute: 'r', value: r.toString() },
34
+ ];
35
+ }
36
+ }
37
+ //# sourceMappingURL=SvgCircleGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgCircleGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgCircleGeometryReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ export declare class SvgEllipseGeometryReader implements IGeometryReader {
3
+ read(element: Element): IGeometry;
4
+ serialize(geometry: IGeometry): {
5
+ attribute: string;
6
+ value: string;
7
+ }[];
8
+ }
@@ -0,0 +1,42 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ export class SvgEllipseGeometryReader {
3
+ read(element) {
4
+ const el = element;
5
+ const cx = el.cx.baseVal.value;
6
+ const cy = el.cy.baseVal.value;
7
+ const rx = el.rx.baseVal.value;
8
+ const ry = el.ry.baseVal.value;
9
+ // Represent ellipse as 4 cardinal points (top, right, bottom, left)
10
+ const segments = [
11
+ { type: SegmentType.Move, relative: false, point: { x: cx, y: cy - ry } },
12
+ { type: SegmentType.Arc, relative: false, point: { x: cx + rx, y: cy }, arc: { rx, ry, rotation: 0, largeArc: false, sweep: true } },
13
+ { type: SegmentType.Arc, relative: false, point: { x: cx, y: cy + ry }, arc: { rx, ry, rotation: 0, largeArc: false, sweep: true } },
14
+ { type: SegmentType.Arc, relative: false, point: { x: cx - rx, y: cy }, arc: { rx, ry, rotation: 0, largeArc: false, sweep: true } },
15
+ { type: SegmentType.Arc, relative: false, point: { x: cx, y: cy - ry }, arc: { rx, ry, rotation: 0, largeArc: false, sweep: true } },
16
+ { type: SegmentType.Close, relative: false, point: { x: cx, y: cy - ry } },
17
+ ];
18
+ return { segments, closed: true };
19
+ }
20
+ serialize(geometry) {
21
+ // Reconstruct cx, cy, rx, ry from the cardinal points
22
+ const pts = geometry.segments.filter(s => s.type !== SegmentType.Close);
23
+ if (pts.length < 4)
24
+ return [];
25
+ // top=0, right=1, bottom=2, left=3
26
+ const top = pts[0].point;
27
+ const right = pts[1].point;
28
+ const bottom = pts[2].point;
29
+ const left = pts[3].point;
30
+ const cx = (right.x + left.x) / 2;
31
+ const cy = (top.y + bottom.y) / 2;
32
+ const rx = Math.abs(right.x - left.x) / 2;
33
+ const ry = Math.abs(bottom.y - top.y) / 2;
34
+ return [
35
+ { attribute: 'cx', value: cx.toString() },
36
+ { attribute: 'cy', value: cy.toString() },
37
+ { attribute: 'rx', value: rx.toString() },
38
+ { attribute: 'ry', value: ry.toString() },
39
+ ];
40
+ }
41
+ }
42
+ //# sourceMappingURL=SvgEllipseGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgEllipseGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgEllipseGeometryReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ export declare class SvgLineGeometryReader implements IGeometryReader {
3
+ read(element: Element): IGeometry;
4
+ serialize(geometry: IGeometry): {
5
+ attribute: string;
6
+ value: string;
7
+ }[];
8
+ }
@@ -0,0 +1,27 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ export class SvgLineGeometryReader {
3
+ read(element) {
4
+ const line = element;
5
+ const x1 = line.x1.baseVal.value;
6
+ const y1 = line.y1.baseVal.value;
7
+ const x2 = line.x2.baseVal.value;
8
+ const y2 = line.y2.baseVal.value;
9
+ const segments = [
10
+ { type: SegmentType.Move, relative: false, point: { x: x1, y: y1 } },
11
+ { type: SegmentType.Line, relative: false, point: { x: x2, y: y2 } },
12
+ ];
13
+ return { segments, closed: false };
14
+ }
15
+ serialize(geometry) {
16
+ const pts = geometry.segments.filter(s => s.type !== SegmentType.Close);
17
+ if (pts.length < 2)
18
+ return [];
19
+ return [
20
+ { attribute: 'x1', value: pts[0].point.x.toString() },
21
+ { attribute: 'y1', value: pts[0].point.y.toString() },
22
+ { attribute: 'x2', value: pts[1].point.x.toString() },
23
+ { attribute: 'y2', value: pts[1].point.y.toString() },
24
+ ];
25
+ }
26
+ }
27
+ //# sourceMappingURL=SvgLineGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgLineGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgLineGeometryReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE3F,MAAM,OAAO,qBAAqB;IAEhC,IAAI,CAAC,OAAgB;QACnB,MAAM,IAAI,GAAG,OAAyB,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAEjC,MAAM,QAAQ,GAAuB;YACnC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YACpE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;SACrE,CAAC;QAEF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,QAAmB;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO;YACL,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrD,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrD,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrD,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;SACtD,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ import "../../../../../helper/PathDataPolyfill.js";
3
+ export declare class SvgPathGeometryReader implements IGeometryReader {
4
+ read(element: Element): IGeometry;
5
+ serialize(geometry: IGeometry): {
6
+ attribute: string;
7
+ value: string;
8
+ }[];
9
+ }
@@ -0,0 +1,205 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ import "../../../../../helper/PathDataPolyfill.js";
3
+ import { createPathD } from '../../../../../helper/PathDataPolyfill.js';
4
+ export class SvgPathGeometryReader {
5
+ read(element) {
6
+ const pathEl = element;
7
+ const pathData = pathEl.getPathData({ normalize: false });
8
+ const segments = [];
9
+ let lastPos = { x: 0, y: 0 };
10
+ let firstPos = { x: 0, y: 0 };
11
+ let closed = false;
12
+ for (const cmd of pathData) {
13
+ const rel = cmd.type === cmd.type.toLowerCase();
14
+ const t = cmd.type.toUpperCase();
15
+ switch (t) {
16
+ case 'M': {
17
+ const x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
18
+ const y = rel ? lastPos.y + cmd.values[1] : cmd.values[1];
19
+ segments.push({ type: SegmentType.Move, relative: rel, point: { x, y } });
20
+ lastPos = { x, y };
21
+ firstPos = { x, y };
22
+ break;
23
+ }
24
+ case 'L': {
25
+ const x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
26
+ const y = rel ? lastPos.y + cmd.values[1] : cmd.values[1];
27
+ segments.push({ type: SegmentType.Line, relative: rel, point: { x, y } });
28
+ lastPos = { x, y };
29
+ break;
30
+ }
31
+ case 'H': {
32
+ const x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
33
+ segments.push({ type: SegmentType.HorizontalLine, relative: rel, point: { x, y: lastPos.y } });
34
+ lastPos = { x, y: lastPos.y };
35
+ break;
36
+ }
37
+ case 'V': {
38
+ const y = rel ? lastPos.y + cmd.values[0] : cmd.values[0];
39
+ segments.push({ type: SegmentType.VerticalLine, relative: rel, point: { x: lastPos.x, y } });
40
+ lastPos = { x: lastPos.x, y };
41
+ break;
42
+ }
43
+ case 'C': {
44
+ const cp1x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
45
+ const cp1y = rel ? lastPos.y + cmd.values[1] : cmd.values[1];
46
+ const cp2x = rel ? lastPos.x + cmd.values[2] : cmd.values[2];
47
+ const cp2y = rel ? lastPos.y + cmd.values[3] : cmd.values[3];
48
+ const x = rel ? lastPos.x + cmd.values[4] : cmd.values[4];
49
+ const y = rel ? lastPos.y + cmd.values[5] : cmd.values[5];
50
+ segments.push({
51
+ type: SegmentType.CubicBezier, relative: rel,
52
+ point: { x, y }, cp1: { x: cp1x, y: cp1y }, cp2: { x: cp2x, y: cp2y }
53
+ });
54
+ lastPos = { x, y };
55
+ break;
56
+ }
57
+ case 'S': {
58
+ const cp2x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
59
+ const cp2y = rel ? lastPos.y + cmd.values[1] : cmd.values[1];
60
+ const x = rel ? lastPos.x + cmd.values[2] : cmd.values[2];
61
+ const y = rel ? lastPos.y + cmd.values[3] : cmd.values[3];
62
+ segments.push({
63
+ type: SegmentType.SmoothCubic, relative: rel,
64
+ point: { x, y }, cp2: { x: cp2x, y: cp2y }
65
+ });
66
+ lastPos = { x, y };
67
+ break;
68
+ }
69
+ case 'Q': {
70
+ const cp1x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
71
+ const cp1y = rel ? lastPos.y + cmd.values[1] : cmd.values[1];
72
+ const x = rel ? lastPos.x + cmd.values[2] : cmd.values[2];
73
+ const y = rel ? lastPos.y + cmd.values[3] : cmd.values[3];
74
+ segments.push({
75
+ type: SegmentType.QuadraticBezier, relative: rel,
76
+ point: { x, y }, cp1: { x: cp1x, y: cp1y }
77
+ });
78
+ lastPos = { x, y };
79
+ break;
80
+ }
81
+ case 'T': {
82
+ const x = rel ? lastPos.x + cmd.values[0] : cmd.values[0];
83
+ const y = rel ? lastPos.y + cmd.values[1] : cmd.values[1];
84
+ segments.push({ type: SegmentType.SmoothQuadratic, relative: rel, point: { x, y } });
85
+ lastPos = { x, y };
86
+ break;
87
+ }
88
+ case 'A': {
89
+ const x = rel ? lastPos.x + cmd.values[5] : cmd.values[5];
90
+ const y = rel ? lastPos.y + cmd.values[6] : cmd.values[6];
91
+ segments.push({
92
+ type: SegmentType.Arc, relative: rel,
93
+ point: { x, y },
94
+ arc: {
95
+ rx: cmd.values[0], ry: cmd.values[1],
96
+ rotation: cmd.values[2],
97
+ largeArc: cmd.values[3] === 1,
98
+ sweep: cmd.values[4] === 1
99
+ }
100
+ });
101
+ lastPos = { x, y };
102
+ break;
103
+ }
104
+ case 'Z': {
105
+ closed = true;
106
+ segments.push({ type: SegmentType.Close, relative: rel, point: { ...firstPos } });
107
+ lastPos = { ...firstPos };
108
+ break;
109
+ }
110
+ }
111
+ }
112
+ return { segments, closed };
113
+ }
114
+ serialize(geometry) {
115
+ const pathData = [];
116
+ let lastPos = { x: 0, y: 0 };
117
+ for (const seg of geometry.segments) {
118
+ const rel = seg.relative;
119
+ switch (seg.type) {
120
+ case SegmentType.Move: {
121
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
122
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
123
+ pathData.push({ type: rel ? 'm' : 'M', values: [x, y] });
124
+ lastPos = { ...seg.point };
125
+ break;
126
+ }
127
+ case SegmentType.Line: {
128
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
129
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
130
+ pathData.push({ type: rel ? 'l' : 'L', values: [x, y] });
131
+ lastPos = { ...seg.point };
132
+ break;
133
+ }
134
+ case SegmentType.HorizontalLine: {
135
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
136
+ pathData.push({ type: rel ? 'h' : 'H', values: [x] });
137
+ lastPos = { ...seg.point };
138
+ break;
139
+ }
140
+ case SegmentType.VerticalLine: {
141
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
142
+ pathData.push({ type: rel ? 'v' : 'V', values: [y] });
143
+ lastPos = { ...seg.point };
144
+ break;
145
+ }
146
+ case SegmentType.CubicBezier: {
147
+ const cp1x = rel ? seg.cp1.x - lastPos.x : seg.cp1.x;
148
+ const cp1y = rel ? seg.cp1.y - lastPos.y : seg.cp1.y;
149
+ const cp2x = rel ? seg.cp2.x - lastPos.x : seg.cp2.x;
150
+ const cp2y = rel ? seg.cp2.y - lastPos.y : seg.cp2.y;
151
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
152
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
153
+ pathData.push({ type: rel ? 'c' : 'C', values: [cp1x, cp1y, cp2x, cp2y, x, y] });
154
+ lastPos = { ...seg.point };
155
+ break;
156
+ }
157
+ case SegmentType.SmoothCubic: {
158
+ const cp2x = rel ? seg.cp2.x - lastPos.x : seg.cp2.x;
159
+ const cp2y = rel ? seg.cp2.y - lastPos.y : seg.cp2.y;
160
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
161
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
162
+ pathData.push({ type: rel ? 's' : 'S', values: [cp2x, cp2y, x, y] });
163
+ lastPos = { ...seg.point };
164
+ break;
165
+ }
166
+ case SegmentType.QuadraticBezier: {
167
+ const cp1x = rel ? seg.cp1.x - lastPos.x : seg.cp1.x;
168
+ const cp1y = rel ? seg.cp1.y - lastPos.y : seg.cp1.y;
169
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
170
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
171
+ pathData.push({ type: rel ? 'q' : 'Q', values: [cp1x, cp1y, x, y] });
172
+ lastPos = { ...seg.point };
173
+ break;
174
+ }
175
+ case SegmentType.SmoothQuadratic: {
176
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
177
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
178
+ pathData.push({ type: rel ? 't' : 'T', values: [x, y] });
179
+ lastPos = { ...seg.point };
180
+ break;
181
+ }
182
+ case SegmentType.Arc: {
183
+ const x = rel ? seg.point.x - lastPos.x : seg.point.x;
184
+ const y = rel ? seg.point.y - lastPos.y : seg.point.y;
185
+ pathData.push({
186
+ type: rel ? 'a' : 'A',
187
+ values: [
188
+ seg.arc.rx, seg.arc.ry, seg.arc.rotation,
189
+ seg.arc.largeArc ? 1 : 0, seg.arc.sweep ? 1 : 0,
190
+ x, y
191
+ ]
192
+ });
193
+ lastPos = { ...seg.point };
194
+ break;
195
+ }
196
+ case SegmentType.Close: {
197
+ pathData.push({ type: rel ? 'z' : 'Z', values: [] });
198
+ break;
199
+ }
200
+ }
201
+ }
202
+ return [{ attribute: 'd', value: createPathD(pathData) }];
203
+ }
204
+ }
205
+ //# sourceMappingURL=SvgPathGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgPathGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgPathGeometryReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ export declare class SvgPolygonGeometryReader implements IGeometryReader {
3
+ read(element: Element): IGeometry;
4
+ serialize(geometry: IGeometry): {
5
+ attribute: string;
6
+ value: string;
7
+ }[];
8
+ }
@@ -0,0 +1,27 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ export class SvgPolygonGeometryReader {
3
+ read(element) {
4
+ const poly = element;
5
+ const points = poly.points;
6
+ const segments = [];
7
+ for (let i = 0; i < points.numberOfItems; i++) {
8
+ const pt = points.getItem(i);
9
+ if (i === 0) {
10
+ segments.push({ type: SegmentType.Move, relative: false, point: { x: pt.x, y: pt.y } });
11
+ }
12
+ else {
13
+ segments.push({ type: SegmentType.Line, relative: false, point: { x: pt.x, y: pt.y } });
14
+ }
15
+ }
16
+ if (segments.length > 0) {
17
+ segments.push({ type: SegmentType.Close, relative: false, point: { ...segments[0].point } });
18
+ }
19
+ return { segments, closed: true };
20
+ }
21
+ serialize(geometry) {
22
+ const pts = geometry.segments.filter(s => s.type !== SegmentType.Close);
23
+ const pointsStr = pts.map(s => `${s.point.x},${s.point.y}`).join(' ');
24
+ return [{ attribute: 'points', value: pointsStr }];
25
+ }
26
+ }
27
+ //# sourceMappingURL=SvgPolygonGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgPolygonGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgPolygonGeometryReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE3F,MAAM,OAAO,wBAAwB;IAEnC,IAAI,CAAC,OAAgB;QACnB,MAAM,IAAI,GAAG,OAA4B,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/F,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,QAAmB;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ export declare class SvgPolylineGeometryReader implements IGeometryReader {
3
+ read(element: Element): IGeometry;
4
+ serialize(geometry: IGeometry): {
5
+ attribute: string;
6
+ value: string;
7
+ }[];
8
+ }
@@ -0,0 +1,24 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ export class SvgPolylineGeometryReader {
3
+ read(element) {
4
+ const poly = element;
5
+ const points = poly.points;
6
+ const segments = [];
7
+ for (let i = 0; i < points.numberOfItems; i++) {
8
+ const pt = points.getItem(i);
9
+ if (i === 0) {
10
+ segments.push({ type: SegmentType.Move, relative: false, point: { x: pt.x, y: pt.y } });
11
+ }
12
+ else {
13
+ segments.push({ type: SegmentType.Line, relative: false, point: { x: pt.x, y: pt.y } });
14
+ }
15
+ }
16
+ return { segments, closed: false };
17
+ }
18
+ serialize(geometry) {
19
+ const pts = geometry.segments.filter(s => s.type !== SegmentType.Close);
20
+ const pointsStr = pts.map(s => `${s.point.x},${s.point.y}`).join(' ');
21
+ return [{ attribute: 'points', value: pointsStr }];
22
+ }
23
+ }
24
+ //# sourceMappingURL=SvgPolylineGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgPolylineGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgPolylineGeometryReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE3F,MAAM,OAAO,yBAAyB;IAEpC,IAAI,CAAC,OAAgB;QACnB,MAAM,IAAI,GAAG,OAA6B,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,QAAmB;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { IGeometry, IGeometryReader } from './IGeometry.js';
2
+ export declare class SvgRectGeometryReader implements IGeometryReader {
3
+ read(element: Element): IGeometry;
4
+ serialize(geometry: IGeometry): {
5
+ attribute: string;
6
+ value: string;
7
+ }[];
8
+ }
@@ -0,0 +1,36 @@
1
+ import { SegmentType } from './IGeometry.js';
2
+ export class SvgRectGeometryReader {
3
+ read(element) {
4
+ const rect = element;
5
+ const x = rect.x.baseVal.value;
6
+ const y = rect.y.baseVal.value;
7
+ const w = rect.width.baseVal.value;
8
+ const h = rect.height.baseVal.value;
9
+ const segments = [
10
+ { type: SegmentType.Move, relative: false, point: { x, y } },
11
+ { type: SegmentType.Line, relative: false, point: { x: x + w, y } },
12
+ { type: SegmentType.Line, relative: false, point: { x: x + w, y: y + h } },
13
+ { type: SegmentType.Line, relative: false, point: { x, y: y + h } },
14
+ { type: SegmentType.Close, relative: false, point: { x, y } },
15
+ ];
16
+ return { segments, closed: true };
17
+ }
18
+ serialize(geometry) {
19
+ const pts = geometry.segments.filter(s => s.type !== SegmentType.Close);
20
+ if (pts.length < 2)
21
+ return [];
22
+ const xs = pts.map(p => p.point.x);
23
+ const ys = pts.map(p => p.point.y);
24
+ const minX = Math.min(...xs);
25
+ const minY = Math.min(...ys);
26
+ const maxX = Math.max(...xs);
27
+ const maxY = Math.max(...ys);
28
+ return [
29
+ { attribute: 'x', value: minX.toString() },
30
+ { attribute: 'y', value: minY.toString() },
31
+ { attribute: 'width', value: (maxX - minX).toString() },
32
+ { attribute: 'height', value: (maxY - minY).toString() },
33
+ ];
34
+ }
35
+ }
36
+ //# sourceMappingURL=SvgRectGeometryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgRectGeometryReader.js","sourceRoot":"","sources":["../../../../../../../src/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.ts"],"names":[],"mappings":"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"}