@node-projects/web-component-designer 0.1.104 → 0.1.105

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 (101) hide show
  1. package/dist/elements/helper/Helper.d.ts +1 -0
  2. package/dist/elements/helper/Helper.js +13 -0
  3. package/dist/elements/item/DesignItem.d.ts +0 -5
  4. package/dist/elements/item/DesignItem.js +0 -2
  5. package/dist/elements/item/IDesignItem.d.ts +0 -5
  6. package/dist/elements/services/DefaultServiceBootstrap.js +18 -18
  7. package/dist/elements/services/dragDropService/DragDropService.js +1 -1
  8. package/dist/elements/services/selectionService/ISelectionChangedEvent copy.d.ts +6 -0
  9. package/dist/elements/services/selectionService/ISelectionChangedEvent copy.js +1 -0
  10. package/dist/elements/services/selectionService/ISelectionChangedEvent.d.ts +1 -0
  11. package/dist/elements/services/selectionService/ISelectionRefreshEvent.d.ts +5 -0
  12. package/dist/elements/services/selectionService/ISelectionRefreshEvent.js +1 -0
  13. package/dist/elements/services/selectionService/ISelectionService.d.ts +3 -1
  14. package/dist/elements/services/selectionService/SelectionService.d.ts +4 -2
  15. package/dist/elements/services/selectionService/SelectionService.js +10 -4
  16. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +7 -0
  17. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +21 -0
  18. package/dist/elements/widgets/designerView/extensions/AbstractToolbarExtension.d.ts +9 -0
  19. package/dist/elements/widgets/designerView/extensions/AbstractToolbarExtension.js +30 -0
  20. package/dist/elements/widgets/designerView/extensions/ConditionExtensionProvider.d.ts +13 -0
  21. package/dist/elements/widgets/designerView/extensions/ConditionExtensionProvider.js +18 -0
  22. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +1 -0
  23. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +7 -16
  24. package/dist/elements/widgets/designerView/extensions/EditTextExtension.d.ts +18 -0
  25. package/dist/elements/widgets/designerView/extensions/EditTextExtension.js +107 -0
  26. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +9 -3
  27. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +94 -59
  28. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +5 -1
  29. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +4 -0
  30. package/dist/elements/widgets/designerView/extensions/GridToolbarExtension.d.ts +12 -0
  31. package/dist/elements/widgets/designerView/extensions/GridToolbarExtension.js +58 -0
  32. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +3 -3
  33. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +6 -2
  34. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtension.d.ts +12 -0
  35. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtension.js +35 -0
  36. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.d.ts +9 -0
  37. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js +12 -0
  38. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtension.d.ts +12 -0
  39. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtension.js +34 -0
  40. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtensionProvider.d.ts +9 -0
  41. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtensionProvider.js +12 -0
  42. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu.d.ts +11 -0
  43. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu.js +14 -0
  44. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +3 -3
  45. package/dist/elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js +1 -1
  46. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +1 -1
  47. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +1 -1
  48. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +1 -1
  49. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js +1 -1
  50. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +1 -1
  51. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +1 -1
  52. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js +1 -1
  53. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtension.d.ts +12 -0
  54. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtension.js +35 -0
  55. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.d.ts +9 -0
  56. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.js +12 -0
  57. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtension.d.ts +12 -0
  58. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtension.js +66 -0
  59. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtensionProvider.d.ts +10 -0
  60. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtensionProvider.js +17 -0
  61. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +1 -0
  62. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +12 -8
  63. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.d.ts +27 -0
  64. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.js +259 -0
  65. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.d.ts +10 -0
  66. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js +16 -0
  67. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.d.ts +12 -0
  68. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.js +66 -0
  69. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.d.ts +10 -0
  70. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js +17 -0
  71. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension copy.d.ts +12 -0
  72. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension copy.js +66 -0
  73. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension.d.ts +12 -0
  74. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension.js +67 -0
  75. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider copy.d.ts +10 -0
  76. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider copy.js +17 -0
  77. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider.d.ts +9 -0
  78. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider.js +12 -0
  79. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtension.d.ts +28 -0
  80. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtension.js +355 -0
  81. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtensionProvider.d.ts +12 -0
  82. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtensionProvider.js +20 -0
  83. package/dist/elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.d.ts +13 -0
  84. package/dist/elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js +18 -0
  85. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js +8 -6
  86. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.d.ts +2 -2
  87. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js +18 -15
  88. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider copy.d.ts +9 -0
  89. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider copy.js +14 -0
  90. package/dist/elements/widgets/designerView/extensions/svg/SvgBaseExtension.d.ts +30 -0
  91. package/dist/elements/widgets/designerView/extensions/svg/SvgBaseExtension.js +181 -0
  92. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.d.ts +26 -0
  93. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.js +144 -0
  94. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.d.ts +9 -0
  95. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js +16 -0
  96. package/dist/elements/widgets/designerView/overlayLayerView.js +4 -1
  97. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +1 -1
  98. package/dist/elements/widgets/designerView/tools/PointerTool.js +9 -9
  99. package/dist/index.d.ts +15 -0
  100. package/dist/index.js +14 -0
  101. package/package.json +1 -1
@@ -0,0 +1,181 @@
1
+ import { EventNames } from '../../../../../enums/EventNames.js';
2
+ import { AbstractExtension } from '../AbstractExtension.js';
3
+ export class RectExtension extends AbstractExtension {
4
+ constructor(extensionManager, designerView, extendedItem) {
5
+ super(extensionManager, designerView, extendedItem);
6
+ }
7
+ extend() {
8
+ this.refresh();
9
+ }
10
+ refresh() {
11
+ }
12
+ pointerEvent(event, circle, r, index) {
13
+ event.stopPropagation();
14
+ const cursorPos = this.designerCanvas.getNormalizedEventCoordinates(event);
15
+ switch (event.type) {
16
+ case EventNames.PointerDown:
17
+ event.target.setPointerCapture(event.pointerId);
18
+ this._startPos = cursorPos;
19
+ this._circlePos = { x: parseFloat(circle.getAttribute("cx")), y: parseFloat(circle.getAttribute("cy")) };
20
+ this._originalPoint = { x: this._x, y: this._y };
21
+ this._parentCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement.parentElement);
22
+ break;
23
+ case EventNames.PointerMove:
24
+ if (this._startPos && event.buttons > 0) {
25
+ this._deltaScrollOffset = {
26
+ x: this._startScrollOffset.x - this.designerCanvas.canvasOffset.x,
27
+ y: this._startScrollOffset.y - this.designerCanvas.canvasOffset.y
28
+ };
29
+ this._lastPos = { x: this._startPos.x, y: this._startPos.y };
30
+ const cx = cursorPos.x - this._lastPos.x + this._circlePos.x;
31
+ const cy = cursorPos.y - this._lastPos.y + this._circlePos.y;
32
+ let dx = cx - this._circlePos.x;
33
+ let dy = cy - this._circlePos.y;
34
+ if (dx != 0 || dy != 0)
35
+ this._circleMoved = true;
36
+ if (event.shiftKey) {
37
+ if (Math.abs(dx) < Math.abs(dy)) {
38
+ dx = 0;
39
+ }
40
+ else {
41
+ dy = 0;
42
+ }
43
+ }
44
+ switch (index) {
45
+ case 0:
46
+ this._rect = this._calculateRect(this._originalPoint.x + dx, this._originalPoint.y + dy, this._w - dx, this._h - dy);
47
+ break;
48
+ case 1:
49
+ this._rect = this._calculateRect(this._originalPoint.x, this._originalPoint.y + dy, this._w + dx, this._h - dy);
50
+ break;
51
+ case 2:
52
+ this._rect = this._calculateRect(this._originalPoint.x, this._originalPoint.y, this._w + dx, this._h + dy);
53
+ break;
54
+ case 3:
55
+ this._rect = this._calculateRect(this._originalPoint.x + dx, this._originalPoint.y, this._w - dx, this._h + dy);
56
+ break;
57
+ }
58
+ r.setAttribute("x", this._rect.x.toString());
59
+ r.setAttribute("y", this._rect.y.toString());
60
+ r.setAttribute("width", this._rect.w.toString());
61
+ r.setAttribute("height", this._rect.h.toString());
62
+ circle.setAttribute("cx", (this._circlePos.x + dx).toString());
63
+ circle.setAttribute("cy", (this._circlePos.y + dy).toString());
64
+ this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem], this);
65
+ this._redrawPathCircle(this._rect.x, this._rect.y, this._circle1);
66
+ this._redrawPathCircle(this._rect.x + this._rect.w, this._rect.y, this._circle2);
67
+ this._redrawPathCircle(this._rect.x + this._rect.w, this._rect.y + this._rect.h, this._circle3);
68
+ this._redrawPathCircle(this._rect.x, this._rect.y + this._rect.h, this._circle4);
69
+ }
70
+ break;
71
+ case EventNames.PointerUp:
72
+ event.target.releasePointerCapture(event.pointerId);
73
+ this._startPos = null;
74
+ this._circlePos = null;
75
+ this._originalPoint = null;
76
+ if (this._circleMoved) {
77
+ this.extendedItem.setAttribute("x", this._rect.x.toString());
78
+ this.extendedItem.setAttribute("y", this._rect.y.toString());
79
+ this.extendedItem.setAttribute("width", this._rect.w.toString());
80
+ this.extendedItem.setAttribute("height", this._rect.h.toString());
81
+ }
82
+ if (getComputedStyle(this._rectElement.parentElement).position == "absolute") {
83
+ let group = this.extendedItem.openGroup('rearrangeSvg');
84
+ let newRectCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement);
85
+ let newRectCoordinatesCloud = this._getPointsFromRect(newRectCoordinates);
86
+ let newRectExtrema = this._getMinMaxValues(newRectCoordinatesCloud);
87
+ this._rearrangeSvgParent(newRectExtrema);
88
+ this._rearrangePointsFromElement(this._parentCoordinates);
89
+ group.commit();
90
+ }
91
+ break;
92
+ }
93
+ }
94
+ _drawPathCircle(point, changedCallback) {
95
+ let newCircle = this._drawCircle((this._parentRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + point.x, (this._parentRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + point.y, 5 / this.designerCanvas.scaleFactor, 'svg-path', circle);
96
+ newCircle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
97
+ /*if (!circle) {
98
+ newCircle.addEventListener(EventNames.PointerDown, event => this.pointerEvent(event, newCircle, r, index));
99
+ newCircle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event, newCircle, r, index));
100
+ newCircle.addEventListener(EventNames.PointerUp, event => this.pointerEvent(event, newCircle, r, index));
101
+ }
102
+ return newCircle;*/
103
+ }
104
+ _redrawPathCircle(x, y, oldCircle) {
105
+ let circle = this._drawCircle((this._parentRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + x - this._deltaScrollOffset.x, (this._parentRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + y - this._deltaScrollOffset.y, 5 / this.designerCanvas.scaleFactor, 'svg-path', oldCircle);
106
+ circle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
107
+ return circle;
108
+ }
109
+ _calculateRect(x, y, w, h) {
110
+ let rect = { x: 0, y: 0, w: 0, h: 0 };
111
+ if (w >= 0) {
112
+ rect.x = x;
113
+ rect.w = w;
114
+ }
115
+ else {
116
+ rect.x = x + w;
117
+ rect.w = -w;
118
+ }
119
+ if (h >= 0) {
120
+ rect.y = y;
121
+ rect.h = h;
122
+ }
123
+ else {
124
+ rect.y = y + h;
125
+ rect.h = -h;
126
+ }
127
+ return rect;
128
+ }
129
+ _getPointsFromRect(elementCoords) {
130
+ let Coords = [];
131
+ Coords.push(elementCoords.x);
132
+ Coords.push(elementCoords.x + elementCoords.width);
133
+ Coords.push(elementCoords.x);
134
+ Coords.push(elementCoords.x + elementCoords.width);
135
+ Coords.push(elementCoords.y);
136
+ Coords.push(elementCoords.y);
137
+ Coords.push(elementCoords.y + elementCoords.height);
138
+ Coords.push(elementCoords.y + elementCoords.height);
139
+ Coords.push(elementCoords.height);
140
+ Coords.push(elementCoords.width);
141
+ return Coords;
142
+ }
143
+ _getMinMaxValues(coords) {
144
+ let extrema = { xMin: 0.0, xMax: 0.0, yMin: 0.0, yMax: 0.0 };
145
+ for (let i = 0; i < coords.length - 2; i++) {
146
+ if (coords[i] < coords[i + 1] && i <= 3) {
147
+ extrema.xMin = coords[i];
148
+ }
149
+ else if (coords[i] < coords[i + 1] && i > 3 && i <= 7) {
150
+ extrema.yMin = coords[i];
151
+ }
152
+ if (coords[i] > coords[i + 1] && i <= 3) {
153
+ extrema.xMax = coords[i];
154
+ }
155
+ else if (coords[i] > coords[i + 1] && i > 3 && i <= 8) {
156
+ extrema.yMax = coords[i];
157
+ }
158
+ }
159
+ return extrema;
160
+ }
161
+ _rearrangeSvgParent(newRectExtrema) {
162
+ let parentLeft = newRectExtrema.xMin - this._offsetSvg;
163
+ let parentTop = newRectExtrema.yMin - this._offsetSvg;
164
+ let widthRectElement = newRectExtrema.xMax - newRectExtrema.xMin + (2 * this._offsetSvg);
165
+ let heightRectElement = newRectExtrema.yMax - newRectExtrema.yMin + (2 * this._offsetSvg);
166
+ this.extendedItem.parent.setStyle("left", parentLeft.toString() + "px");
167
+ this.extendedItem.parent.setStyle("top", parentTop.toString() + "px");
168
+ this.extendedItem.parent.setStyle("height", Math.round(heightRectElement).toString() + "px");
169
+ this.extendedItem.parent.setStyle("width", Math.round(widthRectElement).toString() + "px");
170
+ }
171
+ _rearrangePointsFromElement(oldParentCoords) {
172
+ let newParentCoords = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement.parentElement);
173
+ let diffX = oldParentCoords.x - newParentCoords.x;
174
+ let diffY = oldParentCoords.y - newParentCoords.y;
175
+ this.extendedItem.setAttribute('x', (this._rectElement.x.baseVal.value + diffX).toString());
176
+ this.extendedItem.setAttribute('y', (this._rectElement.y.baseVal.value + diffY).toString());
177
+ }
178
+ dispose() {
179
+ this._removeAllOverlays();
180
+ }
181
+ }
@@ -0,0 +1,26 @@
1
+ import { IPoint } from '../../../../../interfaces/IPoint.js';
2
+ import { IDesignItem } from '../../../../item/IDesignItem.js';
3
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
4
+ import { AbstractExtension } from '../AbstractExtension.js';
5
+ import { IExtensionManager } from '../IExtensionManger.js';
6
+ export declare class SvgElementExtension extends AbstractExtension {
7
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
8
+ private _parentRect;
9
+ private _svgElement;
10
+ private _circles;
11
+ private _points;
12
+ private _startPoint;
13
+ private _startPos;
14
+ extend(): void;
15
+ refresh(): void;
16
+ dispose(): void;
17
+ _drawPathCircle(index: number, circle: SVGCircleElement): SVGCircleElement;
18
+ pointerEvent(event: PointerEvent, index: number, circle: SVGCircleElement, changed?: ({}: {}) => void): void;
19
+ modifyElementPoint(element: SVGElement, index: number, newPoint: IPoint): void;
20
+ _getMinMaxValues(coords: any): {
21
+ xMin: number;
22
+ xMax: number;
23
+ yMin: number;
24
+ yMax: number;
25
+ };
26
+ }
@@ -0,0 +1,144 @@
1
+ import { EventNames } from '../../../../../enums/EventNames.js';
2
+ import { AbstractExtension } from '../AbstractExtension.js';
3
+ import { OverlayLayer } from '../OverlayLayer.js';
4
+ function getSvgElementPoints(element) {
5
+ if (element instanceof SVGRectElement) {
6
+ return [
7
+ { x: element.x.baseVal.value, y: element.y.baseVal.value },
8
+ { x: element.x.baseVal.value + element.width.baseVal.value, y: element.y.baseVal.value },
9
+ { x: element.x.baseVal.value + element.width.baseVal.value, y: element.y.baseVal.value + element.height.baseVal.value },
10
+ { x: element.x.baseVal.value, y: element.y.baseVal.value + element.height.baseVal.value },
11
+ ];
12
+ }
13
+ else if (element instanceof SVGLineElement) {
14
+ return [
15
+ { x: element.x1.baseVal.value, y: element.y1.baseVal.value },
16
+ { x: element.x2.baseVal.value, y: element.y2.baseVal.value }
17
+ ];
18
+ }
19
+ return null;
20
+ }
21
+ export class SvgElementExtension extends AbstractExtension {
22
+ constructor(extensionManager, designerView, extendedItem) {
23
+ super(extensionManager, designerView, extendedItem);
24
+ }
25
+ _parentRect;
26
+ _svgElement;
27
+ //private _startScrollOffset: IPoint;
28
+ _circles = [];
29
+ _points;
30
+ _startPoint;
31
+ _startPos;
32
+ extend() {
33
+ this._parentRect = this.extendedItem.element.parentElement.getBoundingClientRect();
34
+ this._svgElement = this.extendedItem.node;
35
+ //this._startScrollOffset = this.designerCanvas.canvasOffset;
36
+ this.refresh();
37
+ }
38
+ refresh() {
39
+ let points = getSvgElementPoints(this._svgElement);
40
+ if (this._valuesHaveChanges(this.designerCanvas.scaleFactor, ...points.map(x => x.x), ...points.map(x => x.y))) {
41
+ this._points = points;
42
+ for (let i = 0; i < this._points.length; i++) {
43
+ this._circles[i] = this._drawPathCircle(i, this._circles[i]);
44
+ }
45
+ }
46
+ }
47
+ dispose() {
48
+ this._removeAllOverlays();
49
+ }
50
+ _drawPathCircle(index, circle) {
51
+ let newCircle = this._drawCircle((this._parentRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + this._points[index].x, (this._parentRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + this._points[index].y, 5 / this.designerCanvas.scaleFactor, 'svg-path', circle, OverlayLayer.Foreground);
52
+ newCircle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
53
+ if (!circle) {
54
+ newCircle.addEventListener(EventNames.PointerDown, event => this.pointerEvent(event, index, newCircle));
55
+ newCircle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event, index, newCircle));
56
+ newCircle.addEventListener(EventNames.PointerUp, event => this.pointerEvent(event, index, newCircle));
57
+ }
58
+ return newCircle;
59
+ }
60
+ pointerEvent(event, index, circle, changed) {
61
+ event.stopPropagation();
62
+ event.preventDefault();
63
+ const cursorPos = this.designerCanvas.getNormalizedEventCoordinates(event);
64
+ const point = this._points[index];
65
+ switch (event.type) {
66
+ case EventNames.PointerDown:
67
+ event.target.setPointerCapture(event.pointerId);
68
+ this._startPos = cursorPos;
69
+ this._startPoint = { ...point };
70
+ break;
71
+ case EventNames.PointerMove:
72
+ if (this._startPos && event.buttons > 0) {
73
+ let diffX = this._startPos.x - cursorPos.x;
74
+ let diffY = this._startPos.y - cursorPos.y;
75
+ if (event.shiftKey) {
76
+ if (Math.abs(diffX) < Math.abs(diffY)) {
77
+ diffX = 0;
78
+ }
79
+ else {
80
+ diffY = 0;
81
+ }
82
+ }
83
+ point.x = this._startPoint.x - diffX;
84
+ point.y = this._startPoint.y - diffY;
85
+ this.modifyElementPoint(this._svgElement, index, point);
86
+ this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem], this);
87
+ }
88
+ break;
89
+ case EventNames.PointerUp:
90
+ event.target.releasePointerCapture(event.pointerId);
91
+ this._startPos = null;
92
+ /*if (getComputedStyle(this._rectElement.parentElement).position == "absolute") {
93
+ let group = this.extendedItem.openGroup('rearrangeSvg');
94
+ let newRectCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement);
95
+ let newRectCoordinatesCloud = this._getPointsFromRect(newRectCoordinates);
96
+ let newRectExtrema = this._getMinMaxValues(newRectCoordinatesCloud);
97
+ this._rearrangeSvgParent(newRectExtrema);
98
+ this._rearrangePointsFromElement(this._parentCoordinates);
99
+ group.commit();
100
+ }*/
101
+ break;
102
+ }
103
+ }
104
+ modifyElementPoint(element, index, newPoint) {
105
+ if (element instanceof SVGRectElement) {
106
+ if (index == 1) {
107
+ this._points[0].y = newPoint.y;
108
+ this._points[2].x = newPoint.x;
109
+ }
110
+ else if (index == 3) {
111
+ this._points[2].y = newPoint.y;
112
+ this._points[0].x = newPoint.x;
113
+ }
114
+ element.x.baseVal.value = this._points[0].x;
115
+ element.y.baseVal.value = this._points[0].y;
116
+ element.width.baseVal.value = this._points[2].x - this._points[0].x;
117
+ element.height.baseVal.value = this._points[2].y - this._points[0].y;
118
+ }
119
+ else if (element instanceof SVGLineElement) {
120
+ element.x1.baseVal.value = this._points[0].x;
121
+ element.y1.baseVal.value = this._points[0].y;
122
+ element.x2.baseVal.value = this._points[1].x;
123
+ element.y2.baseVal.value = this._points[1].y;
124
+ }
125
+ }
126
+ _getMinMaxValues(coords) {
127
+ let extrema = { xMin: 0.0, xMax: 0.0, yMin: 0.0, yMax: 0.0 };
128
+ for (let i = 0; i < coords.length - 2; i++) {
129
+ if (coords[i] < coords[i + 1] && i <= 3) {
130
+ extrema.xMin = coords[i];
131
+ }
132
+ else if (coords[i] < coords[i + 1] && i > 3 && i <= 7) {
133
+ extrema.yMin = coords[i];
134
+ }
135
+ if (coords[i] > coords[i + 1] && i <= 3) {
136
+ extrema.xMax = coords[i];
137
+ }
138
+ else if (coords[i] > coords[i + 1] && i > 3 && i <= 8) {
139
+ extrema.yMax = coords[i];
140
+ }
141
+ }
142
+ return extrema;
143
+ }
144
+ }
@@ -0,0 +1,9 @@
1
+ import { IDesignerExtensionProvider } from '../IDesignerExtensionProvider.js';
2
+ import { IDesignItem } from '../../../../item/IDesignItem.js';
3
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
4
+ import { IDesignerExtension } from '../IDesignerExtension.js';
5
+ import { IExtensionManager } from '../IExtensionManger.js';
6
+ export declare class SvgElementExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ }
@@ -0,0 +1,16 @@
1
+ import { isVisualSvgElement } from '../../../../helper/SvgHelper.js';
2
+ import { SvgElementExtension } from './SvgElementExtension.js';
3
+ export class SvgElementExtensionProvider {
4
+ shouldExtend(extensionManager, designerView, designItem) {
5
+ if (designItem.node instanceof SVGRectElement ||
6
+ designItem.node instanceof SVGLineElement ||
7
+ designItem.node instanceof SVGCircleElement ||
8
+ designItem.node instanceof SVGPathElement) {
9
+ return isVisualSvgElement(designItem.node);
10
+ }
11
+ return false;
12
+ }
13
+ getExtension(extensionManager, designerView, designItem) {
14
+ return new SvgElementExtension(extensionManager, designerView, designItem);
15
+ }
16
+ }
@@ -21,7 +21,10 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
21
21
  .svg-position { stroke: black; stroke-dasharray: 2; }
22
22
  .svg-path { stroke: #3899ec; fill: orange; pointer-events: all }
23
23
  .svg-path-line { stroke: #3899ec; stroke-dasharray: 2; }
24
- .svg-draw-new-element { stroke: black; fill: transparent; stroke-width: 1; }`;
24
+ .svg-draw-new-element { stroke: black; fill: transparent; stroke-width: 1; }
25
+ .svg-toolbar-container { overflow: visible }
26
+ .svg-toolbar-container div { padding: 5px; display: flex; gap: 2px; background: white; border-radius: 4px; box-shadow: 0 2px 10px 0 rgba(19,23,32,.2); align-items: center; }
27
+ `;
25
28
  static is = 'node-projects-overlay-layer-view';
26
29
  _serviceContainer;
27
30
  _svg;
@@ -75,7 +75,7 @@ export class DrawElementTool {
75
75
  async _onPointerUp(designerView, event) {
76
76
  if (this.sizeOverlapThreshold) {
77
77
  this._changeGroup.commit();
78
- designerView.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem]);
78
+ designerView.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem], event);
79
79
  }
80
80
  else {
81
81
  this._changeGroup.abort();
@@ -41,7 +41,7 @@ export class PointerTool {
41
41
  let newEl = designerCanvas.serviceContainer.elementAtPointService.getElementAtPoint(designerCanvas, { x: event.x, y: event.y });
42
42
  const designItem = DesignItem.GetOrCreateDesignItem(newEl, newEl, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
43
43
  if (!designerCanvas.instanceServiceContainer.selectionService.isSelected(designItem)) {
44
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
44
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem], event);
45
45
  }
46
46
  designerCanvas.showDesignItemContextMenu(designItem, event);
47
47
  }
@@ -111,7 +111,7 @@ export class PointerTool {
111
111
  }
112
112
  else if (currentElement === designerCanvas || currentElement === designerCanvas.rootDesignItem.element || currentElement == null) {
113
113
  if (!event.ctrlKey && !event.shiftKey)
114
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(null);
114
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(null, event);
115
115
  this._actionType = PointerActionType.DrawSelection;
116
116
  }
117
117
  else {
@@ -134,7 +134,7 @@ export class PointerTool {
134
134
  designerCanvas.snapLines.clearSnaplines();
135
135
  if (this._actionType == PointerActionType.DrawSelection) {
136
136
  if (currentDesignItem !== designerCanvas.rootDesignItem)
137
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
137
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem], event);
138
138
  }
139
139
  this._resetTool();
140
140
  }
@@ -192,9 +192,9 @@ export class PointerTool {
192
192
  if (this._firstTimeInMove) {
193
193
  if (!currentDesignItem.instanceServiceContainer.selectionService.selectedElements.includes(currentDesignItem)) {
194
194
  if (event.ctrlKey || event.shiftKey)
195
- currentDesignItem.instanceServiceContainer.selectionService.setSelectedElements([...currentDesignItem.instanceServiceContainer.selectionService.selectedElements, currentDesignItem]);
195
+ currentDesignItem.instanceServiceContainer.selectionService.setSelectedElements([...currentDesignItem.instanceServiceContainer.selectionService.selectedElements, currentDesignItem], event);
196
196
  else
197
- currentDesignItem.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
197
+ currentDesignItem.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem], event);
198
198
  this._actionStartedDesignItems = [...designerCanvas.instanceServiceContainer.selectionService.selectedElements];
199
199
  if (designerCanvas.alignOnSnap)
200
200
  designerCanvas.snapLines.calculateSnaplines(designerCanvas.instanceServiceContainer.selectionService.selectedElements);
@@ -314,7 +314,7 @@ export class PointerTool {
314
314
  this._started = false;
315
315
  if (!this._movedSinceStartedAction || this._actionType == PointerActionType.DragOrSelect) {
316
316
  if (this._previousEventName == EventNames.PointerDown && !event.shiftKey && !event.ctrlKey) {
317
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedDesignItem]);
317
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedDesignItem], event);
318
318
  }
319
319
  else {
320
320
  this.checkSelectElement(event, designerCanvas, currentDesignItem);
@@ -370,17 +370,17 @@ export class PointerTool {
370
370
  if (index >= 0) {
371
371
  let newSelectedList = designerCanvas.instanceServiceContainer.selectionService.selectedElements.slice(0);
372
372
  newSelectedList.splice(index, 1);
373
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(newSelectedList);
373
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(newSelectedList, event);
374
374
  }
375
375
  else {
376
376
  let newSelectedList = designerCanvas.instanceServiceContainer.selectionService.selectedElements.slice(0);
377
377
  newSelectedList.push(currentDesignItem);
378
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(newSelectedList);
378
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(newSelectedList, event);
379
379
  }
380
380
  }
381
381
  else {
382
382
  if (designerCanvas.instanceServiceContainer.selectionService.selectedElements.indexOf(currentDesignItem) < 0)
383
- designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
383
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem], event);
384
384
  }
385
385
  }
386
386
  static FindPossibleContainer(designItem, designItems, event) {
package/dist/index.d.ts CHANGED
@@ -131,6 +131,7 @@ export * from "./elements/services/refactorService/TextRefactorService.js";
131
131
  export type { IRefactorService } from "./elements/services/refactorService/IRefactorService.js";
132
132
  export type { IRefactoring } from "./elements/services/refactorService/IRefactoring.js";
133
133
  export type { ISelectionChangedEvent } from "./elements/services/selectionService/ISelectionChangedEvent.js";
134
+ export type { ISelectionRefreshEvent } from "./elements/services/selectionService/ISelectionRefreshEvent.js";
134
135
  export type { ISelectionService } from "./elements/services/selectionService/ISelectionService.js";
135
136
  export * from "./elements/services/selectionService/SelectionService.js";
136
137
  export type { IStyleRule, IStyleDeclaration, IStylesheet, IStylesheetService, IDocumentStylesheet } from "./elements/services/stylesheetService/IStylesheetService.js";
@@ -202,6 +203,7 @@ export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExt
202
203
  export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js";
203
204
  export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
204
205
  export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
206
+ export * from "./elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js";
205
207
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
206
208
  export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
207
209
  export * from "./elements/widgets/designerView/extensions/FlexboxExtensionProvider.js";
@@ -213,6 +215,8 @@ export * from "./elements/widgets/designerView/extensions/InvisibleElementExtens
213
215
  export * from "./elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js";
214
216
  export * from "./elements/widgets/designerView/extensions/HighlightElementExtension.js";
215
217
  export * from "./elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js";
218
+ export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtension.js";
219
+ export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js";
216
220
  export * from "./elements/widgets/designerView/extensions/svg/PathExtension.js";
217
221
  export * from "./elements/widgets/designerView/extensions/svg/PathExtensionProvider.js";
218
222
  export * from "./elements/widgets/designerView/extensions/PositionExtension.js";
@@ -227,10 +231,20 @@ export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtens
227
231
  export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js";
228
232
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtension.js";
229
233
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js";
234
+ export * from "./elements/widgets/designerView/extensions/block/BlockToolbarExtension.js";
235
+ export * from "./elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js";
236
+ export * from "./elements/widgets/designerView/extensions/flex/FlexToolbarExtension.js";
237
+ export * from "./elements/widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.js";
230
238
  export * from "./elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js";
231
239
  export * from "./elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js";
232
240
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtension.js";
233
241
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js";
242
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildResizeExtension.js";
243
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js";
244
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.js";
245
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js";
246
+ export * from "./elements/widgets/designerView/extensions/grid/GridToolbarExtension.js";
247
+ export * from "./elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider.js";
234
248
  export * from "./elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js";
235
249
  export * from "./elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.js";
236
250
  export * from "./elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.js";
@@ -242,6 +256,7 @@ export type { IDesignViewConfigButtonsProvider } from './elements/widgets/design
242
256
  export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtension.js";
243
257
  export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js";
244
258
  export type { IContextMenuExtension, ContextmenuInitiator } from "./elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js";
259
+ export * from "./elements/widgets/designerView/extensions/contextMenu/ChildContextMenu.js";
245
260
  export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
246
261
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
247
262
  export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
package/dist/index.js CHANGED
@@ -144,6 +144,7 @@ export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExt
144
144
  export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js";
145
145
  export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
146
146
  export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
147
+ export * from "./elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js";
147
148
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
148
149
  export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
149
150
  export * from "./elements/widgets/designerView/extensions/FlexboxExtensionProvider.js";
@@ -155,6 +156,8 @@ export * from "./elements/widgets/designerView/extensions/InvisibleElementExtens
155
156
  export * from "./elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js";
156
157
  export * from "./elements/widgets/designerView/extensions/HighlightElementExtension.js";
157
158
  export * from "./elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js";
159
+ export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtension.js";
160
+ export * from "./elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js";
158
161
  export * from "./elements/widgets/designerView/extensions/svg/PathExtension.js";
159
162
  export * from "./elements/widgets/designerView/extensions/svg/PathExtensionProvider.js";
160
163
  export * from "./elements/widgets/designerView/extensions/PositionExtension.js";
@@ -169,10 +172,20 @@ export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtens
169
172
  export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js";
170
173
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtension.js";
171
174
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js";
175
+ export * from "./elements/widgets/designerView/extensions/block/BlockToolbarExtension.js";
176
+ export * from "./elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js";
177
+ export * from "./elements/widgets/designerView/extensions/flex/FlexToolbarExtension.js";
178
+ export * from "./elements/widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.js";
172
179
  export * from "./elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js";
173
180
  export * from "./elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js";
174
181
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtension.js";
175
182
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js";
183
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildResizeExtension.js";
184
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js";
185
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.js";
186
+ export * from "./elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js";
187
+ export * from "./elements/widgets/designerView/extensions/grid/GridToolbarExtension.js";
188
+ export * from "./elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider.js";
176
189
  export * from "./elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js";
177
190
  export * from "./elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.js";
178
191
  export * from "./elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.js";
@@ -182,6 +195,7 @@ export * from "./elements/widgets/designerView/extensions/buttons/ButtonSeperato
182
195
  export * from "./elements/widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.js";
183
196
  export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtension.js";
184
197
  export * from "./elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js";
198
+ export * from "./elements/widgets/designerView/extensions/contextMenu/ChildContextMenu.js";
185
199
  export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
186
200
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
187
201
  export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.1.104",
4
+ "version": "0.1.105",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",