@node-projects/web-component-designer 0.0.38 → 0.0.44
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/commandHandling/CommandType.d.ts +3 -3
- package/dist/commandHandling/CommandType.js +3 -3
- package/dist/elements/controls/NumericInput.d.ts +0 -0
- package/dist/elements/controls/NumericInput.js +1 -0
- package/dist/elements/controls/NumericPopup.d.ts +6 -0
- package/dist/elements/controls/NumericPopup.js +39 -0
- package/dist/elements/controls/NumericStyleInput.d.ts +16 -0
- package/dist/elements/controls/NumericStyleInput.js +56 -0
- package/dist/elements/controls/ThicknessEditor copy.d.ts +33 -0
- package/dist/elements/controls/ThicknessEditor copy.js +145 -0
- package/dist/elements/controls/ThicknessEditor.js +1 -1
- package/dist/elements/helper/LayoutHelper.d.ts +0 -0
- package/dist/elements/helper/LayoutHelper.js +4 -0
- package/dist/elements/services/BaseServiceContainer.js +0 -2
- package/dist/elements/services/DefaultServiceBootstrap.js +2 -0
- package/dist/elements/services/ServiceContainer.d.ts +5 -0
- package/dist/elements/services/ServiceContainer.js +4 -0
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js +2 -2
- package/dist/elements/services/modelCommandService/DefaultInstanceService.d.ts +8 -0
- package/dist/elements/services/modelCommandService/DefaultInstanceService.js +14 -0
- package/dist/elements/services/modelCommandService/DefaultModelCommandService.d.ts +7 -0
- package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +68 -0
- package/dist/elements/services/modelCommandService/IInstanceService.d.ts +8 -0
- package/dist/elements/services/modelCommandService/IInstanceService.js +1 -0
- package/dist/elements/services/modelCommandService/IModelCommandService.d.ts +7 -0
- package/dist/elements/services/modelCommandService/IModelCommandService.js +1 -0
- package/dist/elements/services/placementService/DefaultPlacementService.js +2 -2
- package/dist/elements/services/undoService/UndoService.d.ts +3 -0
- package/dist/elements/services/undoService/UndoService.js +7 -0
- package/dist/elements/widgets/designerView/DomConverter.js +2 -2
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -2
- package/dist/elements/widgets/designerView/designerCanvas.js +24 -20
- package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.d.ts +22 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.js +52 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +2 -12
- package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +3 -73
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +16 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +50 -0
- package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/CanvasExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +4 -4
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +14 -0
- package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +0 -3
- package/dist/elements/widgets/designerView/extensions/ExtensionType.js +0 -3
- package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +5 -5
- package/dist/elements/widgets/designerView/extensions/GridExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +1 -1
- package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/PathExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/PositionExtension.js +6 -6
- package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.js +4 -0
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +21 -21
- package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +4 -0
- package/dist/elements/widgets/designerView/extensions/RotateExtension.js +3 -3
- package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +1 -1
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +6 -6
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.d.ts +3 -14
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js +4 -75
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.d.ts +13 -0
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.js +27 -0
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.d.ts +13 -0
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js +26 -0
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.d.ts +7 -0
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js +10 -0
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.d.ts +7 -1
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.js +15 -8
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +1 -4
- package/dist/elements/widgets/designerView/overlayLayerView.d.ts +4 -0
- package/dist/elements/widgets/designerView/overlayLayerView.js +55 -2
- package/dist/index.d.ts +5 -0
- package/dist/index.js +3 -0
- package/package.json +1 -1
|
@@ -13,8 +13,8 @@ export class PositionExtension extends AbstractExtension {
|
|
|
13
13
|
refresh() {
|
|
14
14
|
const computedStyle = getComputedStyle(this.extendedItem.element);
|
|
15
15
|
let itemRect = this.extendedItem.element.getBoundingClientRect();
|
|
16
|
-
const xOffset = itemRect.x - this.
|
|
17
|
-
const yOffset = itemRect.y - this.
|
|
16
|
+
const xOffset = itemRect.x - this.designerCanvas.containerBoundingRect.x;
|
|
17
|
+
const yOffset = itemRect.y - this.designerCanvas.containerBoundingRect.y;
|
|
18
18
|
let left = Number.parseFloat(computedStyle.left.replace('px', ''));
|
|
19
19
|
if (isNaN(left))
|
|
20
20
|
left = 0;
|
|
@@ -34,10 +34,10 @@ export class PositionExtension extends AbstractExtension {
|
|
|
34
34
|
tx = Number.parseFloat(transforms[4]);
|
|
35
35
|
ty = Number.parseFloat(transforms[5].replace(')', ''));
|
|
36
36
|
}
|
|
37
|
-
this._line1 = this.
|
|
38
|
-
this._line2 = this.
|
|
39
|
-
this._line3 = this.
|
|
40
|
-
this._line4 = this.
|
|
37
|
+
this._line1 = this._drawLine(xOffset - left - tx, yOffset + itemRect.height / 2, xOffset, yOffset + itemRect.height / 2, 'svg-position', this._line1);
|
|
38
|
+
this._line2 = this._drawLine(xOffset + itemRect.width / 2, yOffset - top - ty, xOffset + itemRect.width / 2, yOffset, 'svg-position', this._line2);
|
|
39
|
+
this._line3 = this._drawLine(xOffset + itemRect.width, yOffset + itemRect.height / 2, xOffset + itemRect.width + right + -1 * tx, yOffset + itemRect.height / 2, 'svg-position', this._line3);
|
|
40
|
+
this._line4 = this._drawLine(xOffset + itemRect.width / 2, yOffset + itemRect.height, xOffset + itemRect.width / 2, yOffset + itemRect.height + bottom + -1 * ty, 'svg-position', this._line4);
|
|
41
41
|
}
|
|
42
42
|
dispose() {
|
|
43
43
|
this._removeAllOverlays();
|
|
@@ -12,8 +12,8 @@ export class PrimarySelectionDefaultExtension extends AbstractExtension {
|
|
|
12
12
|
}
|
|
13
13
|
refresh() {
|
|
14
14
|
const boundRect = this.extendedItem.element.getBoundingClientRect();
|
|
15
|
-
this._rect = this._drawRect(boundRect.x - this.
|
|
16
|
-
this._text = this._drawText(this.extendedItem.name.substring(0, 10) + '…', boundRect.x - this.
|
|
15
|
+
this._rect = this._drawRect(boundRect.x - this.designerCanvas.containerBoundingRect.x, boundRect.y - this.designerCanvas.containerBoundingRect.y - 16, 60, 15, 'svg-primary-selection-move', this._rect);
|
|
16
|
+
this._text = this._drawText(this.extendedItem.name.substring(0, 10) + '…', boundRect.x - this.designerCanvas.containerBoundingRect.x, boundRect.y - this.designerCanvas.containerBoundingRect.y - 5, 'svg-text-primary', this._text);
|
|
17
17
|
}
|
|
18
18
|
dispose() {
|
|
19
19
|
this._removeAllOverlays();
|
package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ import { IExtensionManager } from "./IExtensionManger";
|
|
|
6
6
|
export declare class PrimarySelectionDefaultExtensionProvider implements IDesignerExtensionProvider {
|
|
7
7
|
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
8
|
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
+
readonly style: CSSStyleSheet;
|
|
9
10
|
}
|
package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PrimarySelectionDefaultExtension } from "./PrimarySelectionDefaultExtension";
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
2
3
|
export class PrimarySelectionDefaultExtensionProvider {
|
|
3
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
4
5
|
return true;
|
|
@@ -6,4 +7,7 @@ export class PrimarySelectionDefaultExtensionProvider {
|
|
|
6
7
|
getExtension(extensionManager, designerView, designItem) {
|
|
7
8
|
return new PrimarySelectionDefaultExtension(extensionManager, designerView, designItem);
|
|
8
9
|
}
|
|
10
|
+
style = css `
|
|
11
|
+
.svg-text-primary { stroke: none; fill: white; stroke-width: 1; font-size: 10px; font-family: monospace; }
|
|
12
|
+
`;
|
|
9
13
|
}
|
|
@@ -21,14 +21,14 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
21
21
|
}
|
|
22
22
|
refresh() {
|
|
23
23
|
const rect = this.extendedItem.element.getBoundingClientRect();
|
|
24
|
-
this._circle1 = this._drawResizerOverlay(rect.x - this.
|
|
25
|
-
this._circle2 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.
|
|
26
|
-
this._circle3 = this._drawResizerOverlay(rect.x + rect.width - this.
|
|
27
|
-
this._circle4 = this._drawResizerOverlay(rect.x - this.
|
|
28
|
-
this._circle5 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.
|
|
29
|
-
this._circle6 = this._drawResizerOverlay(rect.x + rect.width - this.
|
|
30
|
-
this._circle7 = this._drawResizerOverlay(rect.x - this.
|
|
31
|
-
this._circle8 = this._drawResizerOverlay(rect.x + rect.width - this.
|
|
24
|
+
this._circle1 = this._drawResizerOverlay(rect.x - this.designerCanvas.containerBoundingRect.x, rect.y - this.designerCanvas.containerBoundingRect.y, 'nw-resize', this._circle1);
|
|
25
|
+
this._circle2 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.designerCanvas.containerBoundingRect.x, rect.y - this.designerCanvas.containerBoundingRect.y, 'n-resize', this._circle2);
|
|
26
|
+
this._circle3 = this._drawResizerOverlay(rect.x + rect.width - this.designerCanvas.containerBoundingRect.x, rect.y - this.designerCanvas.containerBoundingRect.y, 'ne-resize', this._circle3);
|
|
27
|
+
this._circle4 = this._drawResizerOverlay(rect.x - this.designerCanvas.containerBoundingRect.x, rect.y + rect.height - this.designerCanvas.containerBoundingRect.y, 'sw-resize', this._circle4);
|
|
28
|
+
this._circle5 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.designerCanvas.containerBoundingRect.x, rect.y + rect.height - this.designerCanvas.containerBoundingRect.y, 's-resize', this._circle5);
|
|
29
|
+
this._circle6 = this._drawResizerOverlay(rect.x + rect.width - this.designerCanvas.containerBoundingRect.x, rect.y + rect.height - this.designerCanvas.containerBoundingRect.y, 'se-resize', this._circle6);
|
|
30
|
+
this._circle7 = this._drawResizerOverlay(rect.x - this.designerCanvas.containerBoundingRect.x, rect.y + (rect.height / 2) - this.designerCanvas.containerBoundingRect.y, 'w-resize', this._circle7);
|
|
31
|
+
this._circle8 = this._drawResizerOverlay(rect.x + rect.width - this.designerCanvas.containerBoundingRect.x, rect.y + (rect.height / 2) - this.designerCanvas.containerBoundingRect.y, 'e-resize', this._circle8);
|
|
32
32
|
if (rect.width < 12) {
|
|
33
33
|
this._circle2.style.display = 'none';
|
|
34
34
|
this._circle5.style.display = 'none';
|
|
@@ -47,7 +47,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
_drawResizerOverlay(x, y, cursor, oldCircle) {
|
|
50
|
-
let circle = this.
|
|
50
|
+
let circle = this._drawCircle(x, y, 3, 'svg-primary-resizer', oldCircle);
|
|
51
51
|
if (!oldCircle) {
|
|
52
52
|
circle.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, cursor));
|
|
53
53
|
circle.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeResize(event, cursor));
|
|
@@ -58,24 +58,24 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
58
58
|
}
|
|
59
59
|
_pointerActionTypeResize(event, actionMode = 'se-resize') {
|
|
60
60
|
event.stopPropagation();
|
|
61
|
-
const currentPoint = this.
|
|
61
|
+
const currentPoint = this.designerCanvas.getNormalizedEventCoordinates(event); //, this.extendedItem.element, event.type === 'pointerdown' ? null : this._initialPoint);
|
|
62
62
|
switch (event.type) {
|
|
63
63
|
case EventNames.PointerDown:
|
|
64
64
|
event.target.setPointerCapture(event.pointerId);
|
|
65
65
|
this._initialPoint = currentPoint;
|
|
66
66
|
this._initialSizes = [];
|
|
67
67
|
this._actionModeStarted = actionMode;
|
|
68
|
-
for (const designItem of this.
|
|
68
|
+
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
69
69
|
let rect = designItem.element.getBoundingClientRect();
|
|
70
70
|
this._initialSizes.push({ width: rect.width, height: rect.height });
|
|
71
71
|
}
|
|
72
|
-
if (this.
|
|
73
|
-
this.
|
|
72
|
+
if (this.designerCanvas.alignOnSnap)
|
|
73
|
+
this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
74
74
|
break;
|
|
75
75
|
case EventNames.PointerMove:
|
|
76
76
|
if (this._initialPoint) {
|
|
77
|
-
const containerService = this.
|
|
78
|
-
const diff = containerService.placePoint(event, this.
|
|
77
|
+
const containerService = this.designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.extendedItem.parent));
|
|
78
|
+
const diff = containerService.placePoint(event, this.designerCanvas, this.extendedItem.parent, this._initialPoint, { x: 0, y: 0 }, currentPoint, this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
79
79
|
let trackX = diff.x - this._initialPoint.x;
|
|
80
80
|
let trackY = diff.y - this._initialPoint.y;
|
|
81
81
|
let i = 0;
|
|
@@ -84,7 +84,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
84
84
|
this.extendedItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
|
|
85
85
|
this.extendedItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
|
|
86
86
|
if (this.resizeAllSelected) {
|
|
87
|
-
for (const designItem of this.
|
|
87
|
+
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
88
88
|
if (designItem !== this.extendedItem) {
|
|
89
89
|
designItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
|
|
90
90
|
designItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
|
|
@@ -95,7 +95,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
95
95
|
case 's-resize':
|
|
96
96
|
this.extendedItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
|
|
97
97
|
if (this.resizeAllSelected) {
|
|
98
|
-
for (const designItem of this.
|
|
98
|
+
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
99
99
|
if (designItem !== this.extendedItem) {
|
|
100
100
|
designItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
|
|
101
101
|
}
|
|
@@ -105,7 +105,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
105
105
|
case 'e-resize':
|
|
106
106
|
this.extendedItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
|
|
107
107
|
if (this.resizeAllSelected) {
|
|
108
|
-
for (const designItem of this.
|
|
108
|
+
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
109
109
|
if (designItem !== this.extendedItem) {
|
|
110
110
|
designItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
|
|
111
111
|
}
|
|
@@ -114,16 +114,16 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
114
114
|
break;
|
|
115
115
|
//for other resize modes we need a replacement
|
|
116
116
|
}
|
|
117
|
-
this.extensionManager.refreshExtensions(this.
|
|
117
|
+
this.extensionManager.refreshExtensions(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
118
118
|
}
|
|
119
119
|
break;
|
|
120
120
|
case EventNames.PointerUp:
|
|
121
121
|
event.target.releasePointerCapture(event.pointerId);
|
|
122
|
-
let cg = this.extendedItem.openGroup("Resize Elements", this.
|
|
122
|
+
let cg = this.extendedItem.openGroup("Resize Elements", this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
123
123
|
this.extendedItem.setStyle('width', this.extendedItem.element.style.width);
|
|
124
124
|
this.extendedItem.setStyle('height', this.extendedItem.element.style.height);
|
|
125
125
|
if (this.resizeAllSelected) {
|
|
126
|
-
for (const designItem of this.
|
|
126
|
+
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
127
127
|
if (designItem !== this.extendedItem) {
|
|
128
128
|
designItem.setStyle('width', designItem.element.style.width);
|
|
129
129
|
designItem.setStyle('height', designItem.element.style.height);
|
|
@@ -8,4 +8,5 @@ export declare class ResizeExtensionProvider implements IDesignerExtensionProvid
|
|
|
8
8
|
constructor(resizeAllSelected?: boolean);
|
|
9
9
|
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
10
10
|
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
11
|
+
readonly style: CSSStyleSheet;
|
|
11
12
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ResizeExtension } from "./ResizeExtension";
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
2
3
|
export class ResizeExtensionProvider {
|
|
3
4
|
resizeAllSelected;
|
|
4
5
|
constructor(resizeAllSelected = false) {
|
|
@@ -10,4 +11,7 @@ export class ResizeExtensionProvider {
|
|
|
10
11
|
getExtension(extensionManager, designerView, designItem) {
|
|
11
12
|
return new ResizeExtension(extensionManager, designerView, designItem, this.resizeAllSelected);
|
|
12
13
|
}
|
|
14
|
+
style = css `
|
|
15
|
+
.svg-primary-resizer { stroke: #3899ec; fill: white; pointer-events: all }
|
|
16
|
+
`;
|
|
13
17
|
}
|
|
@@ -26,7 +26,7 @@ export class RotateExtension extends AbstractExtension {
|
|
|
26
26
|
g.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeRotate(event));
|
|
27
27
|
g.addEventListener(EventNames.PointerUp, event => this._pointerActionTypeRotate(event));
|
|
28
28
|
g.setAttribute('class', 'svg-primary-rotate');
|
|
29
|
-
g.setAttribute('transform', 'translate(' + (itemRect.x - this.
|
|
29
|
+
g.setAttribute('transform', 'translate(' + (itemRect.x - this.designerCanvas.containerBoundingRect.x - 13) + ',' + (itemRect.y - this.designerCanvas.containerBoundingRect.y - 8.5) + ')');
|
|
30
30
|
this.overlayLayerView.addOverlay(g);
|
|
31
31
|
this.overlays.push(g);
|
|
32
32
|
}
|
|
@@ -48,10 +48,10 @@ export class RotateExtension extends AbstractExtension {
|
|
|
48
48
|
var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
|
|
49
49
|
var degree = (radians * (180 / Math.PI) * -1) + 90;
|
|
50
50
|
img.css('-moz-transform', 'rotate(' + degree + 'deg)');*/
|
|
51
|
-
this.extensionManager.refreshExtensions(this.
|
|
51
|
+
this.extensionManager.refreshExtensions(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
52
52
|
break;
|
|
53
53
|
case EventNames.PointerUp:
|
|
54
|
-
let cg = this.extendedItem.openGroup("Rotate Elements", this.
|
|
54
|
+
let cg = this.extendedItem.openGroup("Rotate Elements", this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
55
55
|
/*for (const designItem of this.instanceServiceContainer.selectionService.selectedElements) {
|
|
56
56
|
designItem.setStyle('width', (<HTMLElement>designItem.element).style.width);
|
|
57
57
|
designItem.setStyle('height', (<HTMLElement>designItem.element).style.height);
|
|
@@ -14,7 +14,7 @@ export class SelectionDefaultExtension extends AbstractExtension {
|
|
|
14
14
|
const top = Number.parseFloat(computedStyle.marginTop.replace('px', ''));
|
|
15
15
|
const right = Number.parseFloat(computedStyle.marginRight.replace('px', ''));
|
|
16
16
|
const bottom = Number.parseFloat(computedStyle.marginBottom.replace('px', ''));
|
|
17
|
-
this._rect = this._drawRect(itemRect.x - this.
|
|
17
|
+
this._rect = this._drawRect(itemRect.x - this.designerCanvas.containerBoundingRect.x - left, itemRect.y - this.designerCanvas.containerBoundingRect.y - top, left + itemRect.width + right, top + itemRect.height + bottom, 'svg-selection', this._rect);
|
|
18
18
|
}
|
|
19
19
|
dispose() {
|
|
20
20
|
this._removeAllOverlays();
|
|
@@ -11,9 +11,9 @@ export class TransformOriginExtension extends AbstractExtension {
|
|
|
11
11
|
const rect = this.extendedItem.element.getBoundingClientRect();
|
|
12
12
|
const computed = getComputedStyle(this.extendedItem.element);
|
|
13
13
|
const to = computed.transformOrigin.split(' ');
|
|
14
|
-
this._circle = this.
|
|
14
|
+
this._circle = this._drawCircle(rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')), rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')), 5, 'svg-transform-origin');
|
|
15
15
|
this._circle.setAttribute('style', 'cursor: pointer');
|
|
16
|
-
this._circle2 = this.
|
|
16
|
+
this._circle2 = this._drawCircle(rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')), rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')), 1, 'svg-transform-origin');
|
|
17
17
|
this._circle2.setAttribute('style', 'pointer-events: none');
|
|
18
18
|
this._circle.addEventListener(EventNames.PointerDown, event => this.pointerEvent(event));
|
|
19
19
|
this._circle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event));
|
|
@@ -33,10 +33,10 @@ export class TransformOriginExtension extends AbstractExtension {
|
|
|
33
33
|
if (this._startPos && event.buttons > 0) {
|
|
34
34
|
const dx = event.x - this._startPos.x;
|
|
35
35
|
const dy = event.y - this._startPos.y;
|
|
36
|
-
this._circle.setAttribute('cx', (rect.x - this.
|
|
37
|
-
this._circle.setAttribute('cy', (rect.y - this.
|
|
38
|
-
this._circle2.setAttribute('cx', (rect.x - this.
|
|
39
|
-
this._circle2.setAttribute('cy', (rect.y - this.
|
|
36
|
+
this._circle.setAttribute('cx', (rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')) + dx));
|
|
37
|
+
this._circle.setAttribute('cy', (rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')) + dy));
|
|
38
|
+
this._circle2.setAttribute('cx', (rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')) + dx));
|
|
39
|
+
this._circle2.setAttribute('cy', (rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')) + dy));
|
|
40
40
|
}
|
|
41
41
|
break;
|
|
42
42
|
case EventNames.PointerUp:
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
import { IDesignItem } from "../../../../item/IDesignItem.js";
|
|
2
2
|
import { IDesignerCanvas } from "../../IDesignerCanvas.js";
|
|
3
|
-
import { OverlayLayerView } from "../../overlayLayerView.js";
|
|
4
3
|
import { IExtensionManager } from "../IExtensionManger.js";
|
|
5
|
-
import { OverlayLayer } from "../OverlayLayer.js";
|
|
6
4
|
import { IDesignerPointerExtension } from "./IDesignerPointerExtension.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
protected overlayLayerView: OverlayLayerView;
|
|
10
|
-
protected extensionManager: IExtensionManager;
|
|
11
|
-
protected designerView: IDesignerCanvas;
|
|
5
|
+
import { AbstractExtensionBase } from '../AbstractExtensionBase';
|
|
6
|
+
export declare abstract class AbstractDesignerPointerExtension extends AbstractExtensionBase implements IDesignerPointerExtension {
|
|
12
7
|
protected extendedItem: IDesignItem;
|
|
13
|
-
constructor(extensionManager: IExtensionManager,
|
|
14
|
-
abstract extend(event: PointerEvent): any;
|
|
8
|
+
constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas);
|
|
15
9
|
abstract refresh(event: PointerEvent): any;
|
|
16
10
|
abstract dispose(): any;
|
|
17
|
-
protected _removeAllOverlays(): void;
|
|
18
|
-
_drawLineOverlay(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
|
|
19
|
-
_drawCircleOverlay(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
|
|
20
|
-
_drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
|
|
21
|
-
_drawText(text: string, x: number, y: number, className?: string, textEl?: SVGTextElement, overlayLayer?: OverlayLayer): SVGTextElement;
|
|
22
11
|
}
|
|
@@ -1,82 +1,11 @@
|
|
|
1
|
+
import { AbstractExtensionBase } from '../AbstractExtensionBase';
|
|
1
2
|
//todo:
|
|
2
3
|
//move draw functions to overlay layer
|
|
3
4
|
//implement designerpointerextension
|
|
4
5
|
//create ruler
|
|
5
|
-
export class AbstractDesignerPointerExtension {
|
|
6
|
-
overlays = [];
|
|
7
|
-
overlayLayerView;
|
|
8
|
-
extensionManager;
|
|
9
|
-
designerView;
|
|
6
|
+
export class AbstractDesignerPointerExtension extends AbstractExtensionBase {
|
|
10
7
|
extendedItem;
|
|
11
|
-
constructor(extensionManager,
|
|
12
|
-
|
|
13
|
-
this.designerView = designerView;
|
|
14
|
-
this.extendedItem = extendedItem;
|
|
15
|
-
this.overlayLayerView = designerView.overlayLayer;
|
|
16
|
-
}
|
|
17
|
-
_removeAllOverlays() {
|
|
18
|
-
for (let o of this.overlays) {
|
|
19
|
-
try {
|
|
20
|
-
this.overlayLayerView.removeOverlay(o);
|
|
21
|
-
}
|
|
22
|
-
catch (err) {
|
|
23
|
-
console.error(err);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
this.overlays = [];
|
|
27
|
-
}
|
|
28
|
-
_drawLineOverlay(x1, y1, x2, y2, className, line, overlayLayer) {
|
|
29
|
-
if (!line) {
|
|
30
|
-
line = document.createElementNS("http://www.w3.org/2000/svg", "line");
|
|
31
|
-
this.overlayLayerView.addOverlay(line, overlayLayer);
|
|
32
|
-
this.overlays.push(line);
|
|
33
|
-
}
|
|
34
|
-
line.setAttribute('x1', x1);
|
|
35
|
-
line.setAttribute('y1', y1);
|
|
36
|
-
line.setAttribute('x2', x2);
|
|
37
|
-
line.setAttribute('y2', y2);
|
|
38
|
-
if (className)
|
|
39
|
-
line.setAttribute('class', className);
|
|
40
|
-
return line;
|
|
41
|
-
}
|
|
42
|
-
_drawCircleOverlay(x, y, radius, className, circle, overlayLayer) {
|
|
43
|
-
if (!circle) {
|
|
44
|
-
circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
|
45
|
-
this.overlayLayerView.addOverlay(circle, overlayLayer);
|
|
46
|
-
this.overlays.push(circle);
|
|
47
|
-
}
|
|
48
|
-
circle.setAttribute('cx', x);
|
|
49
|
-
circle.setAttribute('cy', y);
|
|
50
|
-
circle.setAttribute('r', radius);
|
|
51
|
-
if (className)
|
|
52
|
-
circle.setAttribute('class', className);
|
|
53
|
-
return circle;
|
|
54
|
-
}
|
|
55
|
-
_drawRect(x, y, w, h, className, rect, overlayLayer) {
|
|
56
|
-
if (!rect) {
|
|
57
|
-
rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
58
|
-
this.overlayLayerView.addOverlay(rect, overlayLayer);
|
|
59
|
-
this.overlays.push(rect);
|
|
60
|
-
}
|
|
61
|
-
rect.setAttribute('x', x);
|
|
62
|
-
rect.setAttribute('y', y);
|
|
63
|
-
rect.setAttribute('width', w);
|
|
64
|
-
rect.setAttribute('height', h);
|
|
65
|
-
if (className)
|
|
66
|
-
rect.setAttribute('class', className);
|
|
67
|
-
return rect;
|
|
68
|
-
}
|
|
69
|
-
_drawText(text, x, y, className, textEl, overlayLayer) {
|
|
70
|
-
if (!textEl) {
|
|
71
|
-
textEl = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
72
|
-
this.overlayLayerView.addOverlay(textEl, overlayLayer);
|
|
73
|
-
this.overlays.push(textEl);
|
|
74
|
-
}
|
|
75
|
-
textEl.setAttribute('x', x);
|
|
76
|
-
textEl.setAttribute('y', y);
|
|
77
|
-
textEl.textContent = text;
|
|
78
|
-
if (className)
|
|
79
|
-
textEl.setAttribute('class', className);
|
|
80
|
-
return textEl;
|
|
8
|
+
constructor(extensionManager, designerCanvas) {
|
|
9
|
+
super(extensionManager, designerCanvas);
|
|
81
10
|
}
|
|
82
11
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
|
|
2
|
+
export declare class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
|
|
3
|
+
private _lineOffset;
|
|
4
|
+
private _lineLength;
|
|
5
|
+
private _line1;
|
|
6
|
+
private _line2;
|
|
7
|
+
private _line3;
|
|
8
|
+
private _line4;
|
|
9
|
+
extend(event: PointerEvent): void;
|
|
10
|
+
refresh(event: PointerEvent): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
style: CSSStyleSheet;
|
|
13
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { css } from '@node-projects/base-custom-webcomponent';
|
|
2
|
+
import { OverlayLayer } from '../OverlayLayer.js';
|
|
3
|
+
import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
|
|
4
|
+
export class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
|
|
5
|
+
_lineOffset = 5;
|
|
6
|
+
_lineLength = 10;
|
|
7
|
+
_line1;
|
|
8
|
+
_line2;
|
|
9
|
+
_line3;
|
|
10
|
+
_line4;
|
|
11
|
+
extend(event) {
|
|
12
|
+
this.refresh(event);
|
|
13
|
+
}
|
|
14
|
+
refresh(event) {
|
|
15
|
+
let mp = this.designerView.getNormalizedEventCoordinates(event);
|
|
16
|
+
this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
|
|
17
|
+
this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
|
|
18
|
+
this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
|
|
19
|
+
this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
|
|
20
|
+
}
|
|
21
|
+
dispose() {
|
|
22
|
+
super._removeAllOverlays();
|
|
23
|
+
}
|
|
24
|
+
style = css `
|
|
25
|
+
.svg-cursor-line { stroke: black; pointer-events: none }
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
|
|
2
|
+
export declare class CursorLinePointerExtension extends AbstractDesignerPointerExtension {
|
|
3
|
+
private _lineOffset;
|
|
4
|
+
private _lineLength;
|
|
5
|
+
private _circle;
|
|
6
|
+
private _line1;
|
|
7
|
+
private _line2;
|
|
8
|
+
private _line3;
|
|
9
|
+
private _line4;
|
|
10
|
+
refresh(event: PointerEvent): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
style: CSSStyleSheet;
|
|
13
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { css } from '@node-projects/base-custom-webcomponent';
|
|
2
|
+
import { OverlayLayer } from '../OverlayLayer.js';
|
|
3
|
+
import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
|
|
4
|
+
export class CursorLinePointerExtension extends AbstractDesignerPointerExtension {
|
|
5
|
+
_lineOffset = 5;
|
|
6
|
+
_lineLength = 10;
|
|
7
|
+
_circle;
|
|
8
|
+
_line1;
|
|
9
|
+
_line2;
|
|
10
|
+
_line3;
|
|
11
|
+
_line4;
|
|
12
|
+
refresh(event) {
|
|
13
|
+
let mp = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
14
|
+
this._circle = this._drawCircle(mp.x, mp.y, 1, 'svg-cursor-line', this._circle, OverlayLayer.Foregorund);
|
|
15
|
+
this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
|
|
16
|
+
this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
|
|
17
|
+
this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
|
|
18
|
+
this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
|
|
19
|
+
}
|
|
20
|
+
dispose() {
|
|
21
|
+
super._removeAllOverlays();
|
|
22
|
+
}
|
|
23
|
+
style = css `
|
|
24
|
+
.svg-cursor-line { stroke: black; pointer-events: none }
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
2
|
+
import { IDesignerPointerExtension } from './IDesignerPointerExtension.js';
|
|
3
|
+
import { IDesignerPointerExtensionProvider } from './IDesignerPointerExtensionProvider.js';
|
|
4
|
+
export declare class CursorLinePointerExtensionProvider implements IDesignerPointerExtensionProvider {
|
|
5
|
+
getExtension(designerCanvas: IDesignerCanvas): IDesignerPointerExtension;
|
|
6
|
+
style: CSSStyleSheet;
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { css } from '@node-projects/base-custom-webcomponent';
|
|
2
|
+
import { CursorLinePointerExtension } from './CursorLinePointerExtension.js';
|
|
3
|
+
export class CursorLinePointerExtensionProvider {
|
|
4
|
+
getExtension(designerCanvas) {
|
|
5
|
+
return new CursorLinePointerExtension(designerCanvas.extensionManager, designerCanvas);
|
|
6
|
+
}
|
|
7
|
+
style = css `
|
|
8
|
+
.svg-cursor-line { stroke: black; pointer-events: none }
|
|
9
|
+
`;
|
|
10
|
+
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
|
|
2
2
|
export declare class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
|
|
3
|
-
private
|
|
3
|
+
private _lineOffset;
|
|
4
|
+
private _lineLength;
|
|
5
|
+
private _line1;
|
|
6
|
+
private _line2;
|
|
7
|
+
private _line3;
|
|
8
|
+
private _line4;
|
|
4
9
|
extend(event: PointerEvent): void;
|
|
5
10
|
refresh(event: PointerEvent): void;
|
|
6
11
|
dispose(): void;
|
|
12
|
+
style: CSSStyleSheet;
|
|
7
13
|
}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
|
+
import { css } from '@node-projects/base-custom-webcomponent';
|
|
1
2
|
import { OverlayLayer } from '../OverlayLayer.js';
|
|
2
3
|
import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
|
|
3
4
|
export class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
|
|
4
|
-
|
|
5
|
+
_lineOffset = 5;
|
|
6
|
+
_lineLength = 10;
|
|
7
|
+
_line1;
|
|
8
|
+
_line2;
|
|
9
|
+
_line3;
|
|
10
|
+
_line4;
|
|
5
11
|
extend(event) {
|
|
6
|
-
this.
|
|
7
|
-
this.overlayLayerView.addOverlay(this._rect, OverlayLayer.Foregorund);
|
|
12
|
+
this.refresh(event);
|
|
8
13
|
}
|
|
9
14
|
refresh(event) {
|
|
10
15
|
let mp = this.designerView.getNormalizedEventCoordinates(event);
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this._rect.setAttribute('height', (10));
|
|
16
|
+
this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
|
|
17
|
+
this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
|
|
18
|
+
this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
|
|
19
|
+
this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
|
|
16
20
|
}
|
|
17
21
|
dispose() {
|
|
18
22
|
super._removeAllOverlays();
|
|
19
23
|
}
|
|
24
|
+
style = css `
|
|
25
|
+
.svg-cursor-line { stroke: black; pointer-events: none }
|
|
26
|
+
`;
|
|
20
27
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { IDesignItem } from "../../../../item/IDesignItem.js";
|
|
2
1
|
import { IDesignerCanvas } from "../../IDesignerCanvas.js";
|
|
3
|
-
import { IExtensionManager } from "../IExtensionManger.js";
|
|
4
2
|
import { IDesignerPointerExtension } from "./IDesignerPointerExtension.js";
|
|
5
3
|
export interface IDesignerPointerExtensionProvider {
|
|
6
|
-
|
|
7
|
-
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerPointerExtension;
|
|
4
|
+
getExtension(designerView: IDesignerCanvas): IDesignerPointerExtension;
|
|
8
5
|
style?: CSSStyleSheet;
|
|
9
6
|
}
|
|
@@ -17,4 +17,8 @@ export declare class OverlayLayerView extends BaseCustomWebComponentConstructorA
|
|
|
17
17
|
removeAllNodesWithClass(className: string): void;
|
|
18
18
|
createPoint(): DOMPointInit;
|
|
19
19
|
elementFromPoint(x: number, y: number): Element;
|
|
20
|
+
drawLine(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
|
|
21
|
+
drawCircle(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
|
|
22
|
+
drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
|
|
23
|
+
drawText(text: string, x: number, y: number, className?: string, textEl?: SVGTextElement, overlayLayer?: OverlayLayer): SVGTextElement;
|
|
20
24
|
}
|