@node-projects/web-component-designer 0.0.87 → 0.0.90
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/elements/controls/PlainScrollbar.js +122 -116
- package/dist/elements/controls/SimpleSplitView.js +1 -1
- package/dist/elements/documentContainer.js +2 -0
- package/dist/elements/helper/ArrangeHelper.d.ts +7 -0
- package/dist/elements/helper/ArrangeHelper.js +79 -0
- package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +17 -13
- package/dist/elements/services/undoService/UndoService.js +2 -2
- package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +8 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +13 -3
- package/dist/elements/widgets/designerView/designerCanvas.js +93 -36
- package/dist/elements/widgets/designerView/designerCanvas.ts.BASE.d.ts +92 -0
- package/dist/elements/widgets/designerView/designerCanvas.ts.BASE.js +734 -0
- package/dist/elements/widgets/designerView/designerCanvas.ts.LOCAL.d.ts +95 -0
- package/dist/elements/widgets/designerView/designerCanvas.ts.LOCAL.js +768 -0
- package/dist/elements/widgets/designerView/designerCanvas.ts.REMOTE.d.ts +94 -0
- package/dist/elements/widgets/designerView/designerCanvas.ts.REMOTE.js +745 -0
- package/dist/elements/widgets/designerView/designerView.js +19 -15
- package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/PathExtension.js +1 -0
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +2 -1
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +1 -0
- package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/DrawLineTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/DrawPathTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/DrawRectTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +10 -9
- package/dist/elements/widgets/designerView/tools/PanTool.js +1 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
- package/dist/elements/widgets/designerView/tools/PointerTool.js +23 -2
- package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +10 -9
- package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +8 -1
- package/dist/elements/widgets/designerView/tools/ZoomTool.js +69 -0
- package/dist/elements/widgets/paletteView/paletteTreeView.js +5 -0
- package/dist/elements/widgets/treeView/treeViewExtended.js +10 -13
- package/dist/enums/Orientation.d.ts +8 -0
- package/dist/enums/Orientation.js +9 -0
- package/package.json +1 -1
|
@@ -41,6 +41,8 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
41
41
|
height: 16px;
|
|
42
42
|
background: #787f82;
|
|
43
43
|
display: flex;
|
|
44
|
+
bottom: 0;
|
|
45
|
+
position: absolute;
|
|
44
46
|
}
|
|
45
47
|
input {
|
|
46
48
|
width: 40px;
|
|
@@ -75,8 +77,8 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
75
77
|
height: 100%;
|
|
76
78
|
}
|
|
77
79
|
#canvas {
|
|
78
|
-
width: 100
|
|
79
|
-
height: 100
|
|
80
|
+
width: calc(100% - 16px);
|
|
81
|
+
height: calc(100% - 32px);
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
.zoom-in {
|
|
@@ -141,15 +143,21 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
141
143
|
this._designerCanvas.id = "canvas";
|
|
142
144
|
this._designerCanvas.appendChild(document.createElement("slot"));
|
|
143
145
|
outer.insertAdjacentElement('afterbegin', this._designerCanvas);
|
|
146
|
+
this._designerCanvas.onZoomFactorChanged.on(() => {
|
|
147
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
148
|
+
const pos = this.designerCanvas.canvasOffset;
|
|
149
|
+
const w = this.designerCanvas.designerOffsetWidth > this.designerCanvas.offsetWidth ? this.designerCanvas.designerOffsetWidth : this.designerCanvas.offsetWidth;
|
|
150
|
+
const h = this.designerCanvas.designerOffsetHeight > this.designerCanvas.offsetHeight ? this.designerCanvas.designerOffsetHeight : this.designerCanvas.offsetHeight;
|
|
151
|
+
this._sHor.value = (pos.x / (-2 * w)) + 0.5;
|
|
152
|
+
this._sVert.value = (pos.y / (-2 * h)) + 0.5;
|
|
153
|
+
});
|
|
144
154
|
this._zoomInput = this._getDomElement('zoomInput');
|
|
145
155
|
this._zoomInput.onkeydown = (e) => {
|
|
146
156
|
if (e.key == 'Enter')
|
|
147
157
|
this._designerCanvas.zoomFactor = parseFloat(this._zoomInput.value) / 100;
|
|
148
|
-
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
149
158
|
};
|
|
150
159
|
this._zoomInput.onblur = () => {
|
|
151
160
|
this._designerCanvas.zoomFactor = parseFloat(this._zoomInput.value) / 100;
|
|
152
|
-
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
153
161
|
};
|
|
154
162
|
this._zoomInput.onclick = this._zoomInput.select;
|
|
155
163
|
let zoomIncrease = this._getDomElement('zoomIncrease');
|
|
@@ -158,7 +166,6 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
158
166
|
this._designerCanvas.zoomFactor += 0.1;
|
|
159
167
|
else
|
|
160
168
|
this._designerCanvas.zoomFactor += 0.01;
|
|
161
|
-
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
162
169
|
};
|
|
163
170
|
let zoomDecrease = this._getDomElement('zoomDecrease');
|
|
164
171
|
zoomDecrease.onclick = () => {
|
|
@@ -197,6 +204,11 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
197
204
|
maxY -= cvRect.y;
|
|
198
205
|
let scaleX = cvRect.width / (maxX / this._designerCanvas.zoomFactor);
|
|
199
206
|
let scaleY = cvRect.height / (maxY / this._designerCanvas.zoomFactor);
|
|
207
|
+
const dimensions = this.designerCanvas.getDesignSurfaceDimensions();
|
|
208
|
+
if (dimensions.width)
|
|
209
|
+
scaleX = cvRect.width / dimensions.width;
|
|
210
|
+
if (dimensions.height)
|
|
211
|
+
scaleY = cvRect.height / dimensions.height;
|
|
200
212
|
this._designerCanvas.zoomFactor = scaleX < scaleY ? scaleX : scaleY;
|
|
201
213
|
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
202
214
|
};
|
|
@@ -235,16 +247,8 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
235
247
|
zf += event.deltaY * -0.001; //deltamode = 0
|
|
236
248
|
if (zf < 0.02)
|
|
237
249
|
zf = 0.02;
|
|
238
|
-
this.
|
|
239
|
-
this.
|
|
240
|
-
const rect = this.getBoundingClientRect();
|
|
241
|
-
//const xc = this.designerCanvas.canvasOffset.x;
|
|
242
|
-
//const yc = this.designerCanvas.canvasOffset.y;
|
|
243
|
-
const xp = event.x - rect.x;
|
|
244
|
-
const yp = event.y - rect.y;
|
|
245
|
-
const x = xp / zf * (1 - zf);
|
|
246
|
-
const y = yp / zf * (1 - zf);
|
|
247
|
-
this.designerCanvas.canvasOffset = { x, y };
|
|
250
|
+
const vp = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
251
|
+
this.designerCanvas.zoomTowardsPoint(vp, zf);
|
|
248
252
|
}
|
|
249
253
|
else {
|
|
250
254
|
this._sHor.value += event.deltaX / 1000;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NamedTools } from "../tools/NamedTools.js";
|
|
1
2
|
import { AbstractExtension } from './AbstractExtension';
|
|
2
3
|
export class ElementDragTitleExtension extends AbstractExtension {
|
|
3
4
|
_rect;
|
|
@@ -29,8 +30,7 @@ export class ElementDragTitleExtension extends AbstractExtension {
|
|
|
29
30
|
_pointerEvent(event) {
|
|
30
31
|
event.preventDefault();
|
|
31
32
|
event.stopPropagation();
|
|
32
|
-
|
|
33
|
-
this.designerCanvas._pointerEventHandlerBound(event, this.extendedItem.element);
|
|
33
|
+
this.designerCanvas.serviceContainer.designerTools.get(NamedTools.Pointer).pointerEventHandler(this.designerCanvas, event, this.extendedItem.element);
|
|
34
34
|
}
|
|
35
35
|
dispose() {
|
|
36
36
|
this._removeAllOverlays();
|
|
@@ -113,6 +113,7 @@ export class PathExtension extends AbstractExtension {
|
|
|
113
113
|
break;
|
|
114
114
|
case EventNames.PointerUp:
|
|
115
115
|
event.target.releasePointerCapture(event.pointerId);
|
|
116
|
+
this.designerCanvas.removeCurrentPointerEventHandler();
|
|
116
117
|
this._startPos = null;
|
|
117
118
|
this._circlePos = null;
|
|
118
119
|
this._lastPos = null;
|
|
@@ -60,7 +60,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
60
60
|
}
|
|
61
61
|
_pointerActionTypeResize(circle, event, actionMode = 'se-resize') {
|
|
62
62
|
event.stopPropagation();
|
|
63
|
-
const currentPoint = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
63
|
+
const currentPoint = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
64
64
|
switch (event.type) {
|
|
65
65
|
case EventNames.PointerDown:
|
|
66
66
|
const cx = parseFloat(circle.getAttribute('cx'));
|
|
@@ -135,6 +135,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
135
135
|
break;
|
|
136
136
|
case EventNames.PointerUp:
|
|
137
137
|
event.target.releasePointerCapture(event.pointerId);
|
|
138
|
+
this.designerCanvas.removeCurrentPointerEventHandler();
|
|
138
139
|
let cg = this.extendedItem.openGroup("Resize Elements", this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
|
|
139
140
|
this.extendedItem.setStyle('width', this.extendedItem.element.style.width);
|
|
140
141
|
this.extendedItem.setStyle('height', this.extendedItem.element.style.height);
|
|
@@ -43,6 +43,7 @@ export class TransformOriginExtension extends AbstractExtension {
|
|
|
43
43
|
break;
|
|
44
44
|
case EventNames.PointerUp:
|
|
45
45
|
event.target.releasePointerCapture(event.pointerId);
|
|
46
|
+
this.designerCanvas.removeCurrentPointerEventHandler();
|
|
46
47
|
if (this._startPos) {
|
|
47
48
|
const dx = normalized.x - this._startPos.x;
|
|
48
49
|
const dy = normalized.y - this._startPos.y;
|
|
@@ -67,6 +67,7 @@ export class DrawEllipsisTool {
|
|
|
67
67
|
break;
|
|
68
68
|
case EventNames.PointerUp:
|
|
69
69
|
event.target.releasePointerCapture(event.pointerId);
|
|
70
|
+
designerCanvas.removeCurrentPointerEventHandler();
|
|
70
71
|
const rect = this._path.getBoundingClientRect();
|
|
71
72
|
designerCanvas.overlayLayer.removeOverlay(this._path);
|
|
72
73
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
@@ -50,6 +50,7 @@ export class DrawLineTool {
|
|
|
50
50
|
break;
|
|
51
51
|
case EventNames.PointerUp:
|
|
52
52
|
event.target.releasePointerCapture(event.pointerId);
|
|
53
|
+
designerCanvas.removeCurrentPointerEventHandler();
|
|
53
54
|
const rect = this._path.getBoundingClientRect();
|
|
54
55
|
designerCanvas.overlayLayer.removeOverlay(this._path);
|
|
55
56
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
@@ -82,6 +82,7 @@ export class DrawRectTool {
|
|
|
82
82
|
break;
|
|
83
83
|
case EventNames.PointerUp:
|
|
84
84
|
event.target.releasePointerCapture(event.pointerId);
|
|
85
|
+
designerCanvas.removeCurrentPointerEventHandler();
|
|
85
86
|
const rect = this._path.getBoundingClientRect();
|
|
86
87
|
designerCanvas.overlayLayer.removeOverlay(this._path);
|
|
87
88
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
@@ -24,22 +24,23 @@ export class MagicWandSelectorTool {
|
|
|
24
24
|
break;
|
|
25
25
|
case EventNames.PointerUp:
|
|
26
26
|
event.target.releasePointerCapture(event.pointerId);
|
|
27
|
+
designerCanvas.removeCurrentPointerEventHandler();
|
|
27
28
|
const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
|
|
28
29
|
const inSelectionElements = [];
|
|
29
30
|
let point = designerCanvas.overlayLayer.createPoint();
|
|
30
31
|
for (let e of elements) {
|
|
31
|
-
let elementRect =
|
|
32
|
-
point.x = elementRect.
|
|
33
|
-
point.y = elementRect.
|
|
32
|
+
let elementRect = designerCanvas.getNormalizedElementCoordinates(e);
|
|
33
|
+
point.x = elementRect.x;
|
|
34
|
+
point.y = elementRect.y;
|
|
34
35
|
const p1 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
|
|
35
|
-
point.x = elementRect.
|
|
36
|
-
point.y = elementRect.
|
|
36
|
+
point.x = elementRect.x + elementRect.width;
|
|
37
|
+
point.y = elementRect.y;
|
|
37
38
|
const p2 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
|
|
38
|
-
point.x = elementRect.
|
|
39
|
-
point.y = elementRect.
|
|
39
|
+
point.x = elementRect.x;
|
|
40
|
+
point.y = elementRect.y + elementRect.height;
|
|
40
41
|
const p3 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
|
|
41
|
-
point.x = elementRect.
|
|
42
|
-
point.y = elementRect.
|
|
42
|
+
point.x = elementRect.x + elementRect.width;
|
|
43
|
+
point.y = elementRect.y + elementRect.height;
|
|
43
44
|
const p4 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
|
|
44
45
|
if (p1 && p2 && p3 && p4) {
|
|
45
46
|
const desItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
@@ -16,6 +16,7 @@ export declare class PointerTool implements ITool {
|
|
|
16
16
|
constructor();
|
|
17
17
|
activated(serviceContainer: ServiceContainer): void;
|
|
18
18
|
dispose(): void;
|
|
19
|
+
private _showContextMenu;
|
|
19
20
|
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
20
21
|
private _pointerActionTypeDrawSelection;
|
|
21
22
|
private _resetPointerEventsForClickThrough;
|
|
@@ -22,7 +22,26 @@ export class PointerTool {
|
|
|
22
22
|
}
|
|
23
23
|
dispose() {
|
|
24
24
|
}
|
|
25
|
+
_showContextMenu(event, designerCanvas) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
if (!event.shiftKey) {
|
|
28
|
+
let items = designerCanvas.getItemsBelowMouse(event);
|
|
29
|
+
if (items.indexOf(designerCanvas.instanceServiceContainer.selectionService.primarySelection?.element) >= 0)
|
|
30
|
+
designerCanvas.showDesignItemContextMenu(designerCanvas.instanceServiceContainer.selectionService.primarySelection, event);
|
|
31
|
+
else {
|
|
32
|
+
const designItem = DesignItem.GetOrCreateDesignItem(event.target, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
33
|
+
if (!designerCanvas.instanceServiceContainer.selectionService.isSelected(designItem)) {
|
|
34
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
|
|
35
|
+
}
|
|
36
|
+
designerCanvas.showDesignItemContextMenu(designItem, event);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
25
40
|
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
41
|
+
if (event.button == 2) {
|
|
42
|
+
this._showContextMenu(event, designerCanvas);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
26
45
|
if (((event.ctrlKey || event.metaKey) && event.shiftKey) || event.buttons == 4) {
|
|
27
46
|
const panTool = designerCanvas.serviceContainer.designerTools.get(NamedTools.Pan);
|
|
28
47
|
if (panTool) {
|
|
@@ -37,6 +56,7 @@ export class PointerTool {
|
|
|
37
56
|
break;
|
|
38
57
|
case EventNames.PointerUp:
|
|
39
58
|
event.target.releasePointerCapture(event.pointerId);
|
|
59
|
+
designerCanvas.removeCurrentPointerEventHandler();
|
|
40
60
|
break;
|
|
41
61
|
}
|
|
42
62
|
if (!event.altKey)
|
|
@@ -189,7 +209,7 @@ export class PointerTool {
|
|
|
189
209
|
break;
|
|
190
210
|
}
|
|
191
211
|
}
|
|
192
|
-
else if (newContainerElement == this._actionStartedDesignItem.element) {
|
|
212
|
+
else if (newContainerElement == this._actionStartedDesignItem.element || newContainerElement == currentDesignItem.element) {
|
|
193
213
|
backupPEventsMap.set(newContainerElement, newContainerElement.style.pointerEvents);
|
|
194
214
|
newContainerElement.style.pointerEvents = 'none';
|
|
195
215
|
const old = newContainerElement;
|
|
@@ -197,6 +217,7 @@ export class PointerTool {
|
|
|
197
217
|
if (old === newContainerElement) {
|
|
198
218
|
newContainerElementDesignItem = null;
|
|
199
219
|
newContainerService = null;
|
|
220
|
+
newContainerElement = null;
|
|
200
221
|
break;
|
|
201
222
|
}
|
|
202
223
|
}
|
|
@@ -297,7 +318,7 @@ export class PointerTool {
|
|
|
297
318
|
}
|
|
298
319
|
case EventNames.PointerUp:
|
|
299
320
|
{
|
|
300
|
-
if (this._actionType == PointerActionType.DragOrSelect) {
|
|
321
|
+
if (!this._movedSinceStartedAction || this._actionType == PointerActionType.DragOrSelect) {
|
|
301
322
|
if (this._previousEventName == EventNames.PointerDown && !event.shiftKey && !event.ctrlKey)
|
|
302
323
|
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
|
|
303
324
|
return;
|
|
@@ -46,22 +46,23 @@ export class RectangleSelectorTool {
|
|
|
46
46
|
break;
|
|
47
47
|
case EventNames.PointerUp:
|
|
48
48
|
event.target.releasePointerCapture(event.pointerId);
|
|
49
|
+
designerCanvas.removeCurrentPointerEventHandler();
|
|
49
50
|
const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
|
|
50
51
|
const inSelectionElements = [];
|
|
51
52
|
let point = designerCanvas.overlayLayer.createPoint();
|
|
52
53
|
for (let e of elements) {
|
|
53
|
-
let elementRect =
|
|
54
|
-
point.x = elementRect.
|
|
55
|
-
point.y = elementRect.
|
|
54
|
+
let elementRect = designerCanvas.getNormalizedElementCoordinates(e);
|
|
55
|
+
point.x = elementRect.x;
|
|
56
|
+
point.y = elementRect.y;
|
|
56
57
|
const p1 = this._rect.isPointInFill(point);
|
|
57
|
-
point.x = elementRect.
|
|
58
|
-
point.y = elementRect.
|
|
58
|
+
point.x = elementRect.x + elementRect.width;
|
|
59
|
+
point.y = elementRect.y;
|
|
59
60
|
const p2 = p1 && this._rect.isPointInFill(point);
|
|
60
|
-
point.x = elementRect.
|
|
61
|
-
point.y = elementRect.
|
|
61
|
+
point.x = elementRect.x;
|
|
62
|
+
point.y = elementRect.y + elementRect.height;
|
|
62
63
|
const p3 = p2 && this._rect.isPointInFill(point);
|
|
63
|
-
point.x = elementRect.
|
|
64
|
-
point.y = elementRect.
|
|
64
|
+
point.x = elementRect.x + elementRect.width;
|
|
65
|
+
point.y = elementRect.y + elementRect.height;
|
|
65
66
|
const p4 = p3 && this._rect.isPointInFill(point);
|
|
66
67
|
if (p4) {
|
|
67
68
|
const desItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
@@ -2,9 +2,16 @@ import { ServiceContainer } from '../../../services/ServiceContainer.js';
|
|
|
2
2
|
import { IDesignerCanvas } from '../IDesignerCanvas';
|
|
3
3
|
import { ITool } from './ITool';
|
|
4
4
|
export declare class ZoomTool implements ITool {
|
|
5
|
-
|
|
5
|
+
cursor: string;
|
|
6
|
+
private _rect;
|
|
7
|
+
private _startPoint;
|
|
8
|
+
private _endPoint;
|
|
9
|
+
private _pointerMovementTolerance;
|
|
10
|
+
private _zoomStepSize;
|
|
6
11
|
activated(serviceContainer: ServiceContainer): void;
|
|
7
12
|
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
13
|
+
private _zoomOnto;
|
|
14
|
+
private _isPositionEqual;
|
|
8
15
|
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
9
16
|
dispose(): void;
|
|
10
17
|
}
|
|
@@ -1,8 +1,77 @@
|
|
|
1
|
+
import { EventNames, OverlayLayer } from '../../../../index.js';
|
|
1
2
|
export class ZoomTool {
|
|
2
3
|
cursor = 'zoom-in';
|
|
4
|
+
_rect;
|
|
5
|
+
_startPoint;
|
|
6
|
+
_endPoint;
|
|
7
|
+
_pointerMovementTolerance = 5;
|
|
8
|
+
_zoomStepSize = 0.2; //number x 100 = Scale in percent
|
|
3
9
|
activated(serviceContainer) {
|
|
4
10
|
}
|
|
5
11
|
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
12
|
+
const eventPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
13
|
+
switch (event.type) {
|
|
14
|
+
case EventNames.PointerDown:
|
|
15
|
+
this._startPoint = eventPoint;
|
|
16
|
+
if (!this._rect)
|
|
17
|
+
this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
18
|
+
this._rect.setAttribute('class', 'svg-selector');
|
|
19
|
+
this._rect.setAttribute('x', (this._startPoint.x * designerCanvas.zoomFactor));
|
|
20
|
+
this._rect.setAttribute('y', (this._startPoint.y * designerCanvas.zoomFactor));
|
|
21
|
+
this._rect.setAttribute('width', 0);
|
|
22
|
+
this._rect.setAttribute('height', 0);
|
|
23
|
+
designerCanvas.overlayLayer.addOverlay(this._rect, OverlayLayer.Foregorund);
|
|
24
|
+
break;
|
|
25
|
+
case EventNames.PointerMove:
|
|
26
|
+
if (this._startPoint) {
|
|
27
|
+
let width = eventPoint.x - this._startPoint.x;
|
|
28
|
+
let height = eventPoint.y - this._startPoint.y;
|
|
29
|
+
if (width >= 0) {
|
|
30
|
+
this._rect.setAttribute('x', this._startPoint.x);
|
|
31
|
+
this._rect.setAttribute('width', width);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this._rect.setAttribute('x', eventPoint.x);
|
|
35
|
+
this._rect.setAttribute('width', (-1 * width));
|
|
36
|
+
}
|
|
37
|
+
if (height >= 0) {
|
|
38
|
+
this._rect.setAttribute('y', this._startPoint.y);
|
|
39
|
+
this._rect.setAttribute('height', height);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this._rect.setAttribute('y', eventPoint.y);
|
|
43
|
+
this._rect.setAttribute('height', (-1 * height));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
case EventNames.PointerUp:
|
|
48
|
+
this._endPoint = eventPoint;
|
|
49
|
+
let isLeftClick = event.button == 0;
|
|
50
|
+
switch (event.button) {
|
|
51
|
+
case 0: //Left-Click
|
|
52
|
+
case 2: //Right-Click
|
|
53
|
+
this._zoomOnto(isLeftClick, this._startPoint, this._endPoint, designerCanvas);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
designerCanvas.overlayLayer.removeOverlay(this._rect);
|
|
57
|
+
this._rect = null;
|
|
58
|
+
this._startPoint = null;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_zoomOnto(isZoomInto, startPoint, endPoint, designerCanvas) {
|
|
63
|
+
if (this._isPositionEqual(startPoint, endPoint)) {
|
|
64
|
+
const oldZoom = designerCanvas.zoomFactor;
|
|
65
|
+
const newZoom = isZoomInto ? oldZoom + this._zoomStepSize : oldZoom - this._zoomStepSize;
|
|
66
|
+
designerCanvas.zoomTowardsPoint(endPoint, newZoom);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
designerCanvas.zoomOntoRectangle(startPoint, endPoint);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
_isPositionEqual(startPoint, endPoint) {
|
|
73
|
+
let tolerance = this._pointerMovementTolerance;
|
|
74
|
+
return Math.abs(startPoint.x - endPoint.x) <= tolerance && Math.abs(startPoint.y - endPoint.y) <= tolerance;
|
|
6
75
|
}
|
|
7
76
|
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
8
77
|
dispose() {
|
|
@@ -72,6 +72,11 @@ export class PaletteTreeView extends BaseCustomWebComponentConstructorAppend {
|
|
|
72
72
|
extensions: ['childcounter', 'dnd5', 'filter'],
|
|
73
73
|
quicksearch: true,
|
|
74
74
|
source: [],
|
|
75
|
+
filter: {
|
|
76
|
+
autoExpand: true,
|
|
77
|
+
mode: 'hide',
|
|
78
|
+
highlight: true
|
|
79
|
+
},
|
|
75
80
|
dnd5: {
|
|
76
81
|
dropMarkerParent: this.shadowRoot,
|
|
77
82
|
preventRecursion: true,
|
|
@@ -294,7 +294,7 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
294
294
|
},
|
|
295
295
|
filter: {
|
|
296
296
|
autoApply: true,
|
|
297
|
-
autoExpand:
|
|
297
|
+
autoExpand: true,
|
|
298
298
|
counter: true,
|
|
299
299
|
fuzzy: true,
|
|
300
300
|
hideExpandedCounter: true,
|
|
@@ -365,18 +365,15 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
_highlight(activeElements) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
}
|
|
368
|
+
this._tree.visit((node) => {
|
|
369
|
+
if (activeElements && activeElements.indexOf(node.data.ref) >= 0) {
|
|
370
|
+
node.setSelected(true);
|
|
371
|
+
node.makeVisible({ scrollIntoView: true });
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
node.setSelected(false);
|
|
375
|
+
}
|
|
376
|
+
});
|
|
380
377
|
}
|
|
381
378
|
}
|
|
382
379
|
customElements.define('node-projects-tree-view-extended', TreeViewExtended);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var Orientation;
|
|
2
|
+
(function (Orientation) {
|
|
3
|
+
Orientation[Orientation["TOP"] = 0] = "TOP";
|
|
4
|
+
Orientation[Orientation["RIGHT"] = 1] = "RIGHT";
|
|
5
|
+
Orientation[Orientation["BOTTOM"] = 2] = "BOTTOM";
|
|
6
|
+
Orientation[Orientation["LEFT"] = 3] = "LEFT";
|
|
7
|
+
Orientation[Orientation["VERTICAL_CENTER"] = 4] = "VERTICAL_CENTER";
|
|
8
|
+
Orientation[Orientation["HORIZONTAL_CENTER"] = 5] = "HORIZONTAL_CENTER";
|
|
9
|
+
})(Orientation || (Orientation = {}));
|