@node-projects/web-component-designer 0.0.93 → 0.0.94
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 +2 -0
- package/dist/commandHandling/CommandType.js +2 -0
- package/dist/elements/documentContainer.js +2 -2
- package/dist/elements/services/DefaultServiceBootstrap.js +3 -0
- package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +50 -0
- package/dist/elements/services/placementService/DefaultPlacementService.js +2 -2
- package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.d.ts +0 -1
- package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.js +1 -2
- package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +5 -2
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +14 -6
- package/dist/elements/widgets/designerView/designerCanvas.js +82 -126
- package/dist/elements/widgets/designerView/designerView.js +8 -3
- package/dist/elements/widgets/designerView/extensions/PathExtension.js +0 -1
- package/dist/elements/widgets/designerView/extensions/PathExtensionProvider.js +2 -1
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +0 -1
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +0 -1
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +4 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +1 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.d.ts +8 -0
- package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js +12 -0
- package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +2 -1
- package/dist/elements/widgets/designerView/tools/DrawLineTool.js +2 -1
- package/dist/elements/widgets/designerView/tools/DrawPathTool.js +5 -2
- package/dist/elements/widgets/designerView/tools/DrawRectTool.js +2 -1
- package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +2 -1
- package/dist/elements/widgets/designerView/tools/PanTool.js +2 -1
- package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -2
- package/dist/elements/widgets/designerView/tools/PointerTool.js +58 -122
- package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +2 -1
- package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.js +1 -0
- package/dist/elements/widgets/paletteView/paletteTreeView.d.ts +0 -1
- package/dist/elements/widgets/paletteView/paletteTreeView.js +1 -2
- package/dist/elements/widgets/paletteView/paletteView.js +1 -0
- package/dist/elements/widgets/propertyGrid/PropertyGrid.js +1 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +1 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +1 -0
- package/dist/elements/widgets/treeView/treeView.js +1 -0
- package/dist/elements/widgets/treeView/treeViewExtended.js +5 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +4 -4
package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommandType } from "../../../../../commandHandling/CommandType";
|
|
2
|
+
export class RotateLeftAndRight {
|
|
3
|
+
shouldProvideContextmenu(event, designerView, designItem, initiator) {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
provideContextMenuItems(event, designerView, designItem) {
|
|
7
|
+
return [
|
|
8
|
+
{ title: 'rotate right', action: () => { designerView.executeCommand({ type: CommandType.rotateClockwise }); }, shortCut: 'Ctrl + R' },
|
|
9
|
+
{ title: 'rotate left', action: () => { designerView.executeCommand({ type: CommandType.rotateCounterClockwise }); }, shortCut: 'Ctrl + Shift + R' }
|
|
10
|
+
];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -23,6 +23,7 @@ export class DrawEllipsisTool {
|
|
|
23
23
|
case EventNames.PointerDown:
|
|
24
24
|
this._startPoint = currentPoint;
|
|
25
25
|
event.target.setPointerCapture(event.pointerId);
|
|
26
|
+
designerCanvas.captureActiveTool(this);
|
|
26
27
|
this._path = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
|
|
27
28
|
this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
|
|
28
29
|
this._path.setAttribute("fill", designerCanvas.serviceContainer.globalContext.fillBrush);
|
|
@@ -67,7 +68,7 @@ export class DrawEllipsisTool {
|
|
|
67
68
|
break;
|
|
68
69
|
case EventNames.PointerUp:
|
|
69
70
|
event.target.releasePointerCapture(event.pointerId);
|
|
70
|
-
designerCanvas.
|
|
71
|
+
designerCanvas.releaseActiveTool();
|
|
71
72
|
const rect = this._path.getBoundingClientRect();
|
|
72
73
|
designerCanvas.overlayLayer.removeOverlay(this._path);
|
|
73
74
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
@@ -21,6 +21,7 @@ export class DrawLineTool {
|
|
|
21
21
|
case EventNames.PointerDown:
|
|
22
22
|
this._startPoint = currentPoint;
|
|
23
23
|
event.target.setPointerCapture(event.pointerId);
|
|
24
|
+
designerCanvas.captureActiveTool(this);
|
|
24
25
|
this._path = document.createElementNS("http://www.w3.org/2000/svg", "line");
|
|
25
26
|
// this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
|
|
26
27
|
// this._path.setAttribute("d", this._pathD);
|
|
@@ -50,7 +51,7 @@ export class DrawLineTool {
|
|
|
50
51
|
break;
|
|
51
52
|
case EventNames.PointerUp:
|
|
52
53
|
event.target.releasePointerCapture(event.pointerId);
|
|
53
|
-
designerCanvas.
|
|
54
|
+
designerCanvas.releaseActiveTool();
|
|
54
55
|
const rect = this._path.getBoundingClientRect();
|
|
55
56
|
designerCanvas.overlayLayer.removeOverlay(this._path);
|
|
56
57
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
@@ -28,6 +28,7 @@ export class DrawPathTool {
|
|
|
28
28
|
this._eventStarted = true;
|
|
29
29
|
if (!this._p2pMode) {
|
|
30
30
|
event.target.setPointerCapture(event.pointerId);
|
|
31
|
+
designerCanvas.captureActiveTool(this);
|
|
31
32
|
this._path = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
32
33
|
this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
|
|
33
34
|
this._path.setAttribute("d", this._pathD);
|
|
@@ -69,8 +70,6 @@ export class DrawPathTool {
|
|
|
69
70
|
}
|
|
70
71
|
break;
|
|
71
72
|
case EventNames.PointerUp:
|
|
72
|
-
event.target.releasePointerCapture(event.pointerId);
|
|
73
|
-
designerCanvas.removeCurrentPointerEventHandler();
|
|
74
73
|
if (this._eventStarted && !this._pointerMoved) {
|
|
75
74
|
this._p2pMode = true;
|
|
76
75
|
}
|
|
@@ -90,6 +89,8 @@ export class DrawPathTool {
|
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
if (this._samePoint && this._p2pMode || this._dragMode && !this._p2pMode) {
|
|
92
|
+
event.target.releasePointerCapture(event.pointerId);
|
|
93
|
+
designerCanvas.releaseActiveTool();
|
|
93
94
|
this._eventStarted = false;
|
|
94
95
|
this._p2pMode = false;
|
|
95
96
|
this._pointerMoved = false;
|
|
@@ -120,6 +121,8 @@ export class DrawPathTool {
|
|
|
120
121
|
//TODO: Better Path drawing (like in SVGEDIT & Adding via Undo Framework. And adding to correct container)
|
|
121
122
|
break;
|
|
122
123
|
}
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
event.stopPropagation();
|
|
123
126
|
}
|
|
124
127
|
keyboardEventHandler(designerCanvas, event, currentElement) { }
|
|
125
128
|
}
|
|
@@ -26,6 +26,7 @@ export class DrawRectTool {
|
|
|
26
26
|
case EventNames.PointerDown:
|
|
27
27
|
this._startPoint = currentPoint;
|
|
28
28
|
event.target.setPointerCapture(event.pointerId);
|
|
29
|
+
designerCanvas.captureActiveTool(this);
|
|
29
30
|
this._path = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
30
31
|
this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
|
|
31
32
|
this._path.setAttribute("fill", designerCanvas.serviceContainer.globalContext.fillBrush);
|
|
@@ -82,7 +83,7 @@ export class DrawRectTool {
|
|
|
82
83
|
break;
|
|
83
84
|
case EventNames.PointerUp:
|
|
84
85
|
event.target.releasePointerCapture(event.pointerId);
|
|
85
|
-
designerCanvas.
|
|
86
|
+
designerCanvas.releaseActiveTool();
|
|
86
87
|
const rect = this._path.getBoundingClientRect();
|
|
87
88
|
designerCanvas.overlayLayer.removeOverlay(this._path);
|
|
88
89
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
@@ -10,6 +10,7 @@ export class MagicWandSelectorTool {
|
|
|
10
10
|
switch (event.type) {
|
|
11
11
|
case EventNames.PointerDown:
|
|
12
12
|
event.target.setPointerCapture(event.pointerId);
|
|
13
|
+
designerCanvas.captureActiveTool(this);
|
|
13
14
|
this._path = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
14
15
|
this._path.setAttribute('class', 'svg-selector');
|
|
15
16
|
this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
|
|
@@ -24,7 +25,7 @@ export class MagicWandSelectorTool {
|
|
|
24
25
|
break;
|
|
25
26
|
case EventNames.PointerUp:
|
|
26
27
|
event.target.releasePointerCapture(event.pointerId);
|
|
27
|
-
designerCanvas.
|
|
28
|
+
designerCanvas.releaseActiveTool();
|
|
28
29
|
const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
|
|
29
30
|
const inSelectionElements = [];
|
|
30
31
|
let point = designerCanvas.overlayLayer.createPoint();
|
|
@@ -5,6 +5,7 @@ export class PanTool {
|
|
|
5
5
|
switch (event.type) {
|
|
6
6
|
case EventNames.PointerDown:
|
|
7
7
|
event.target.setPointerCapture(event.pointerId);
|
|
8
|
+
designerCanvas.captureActiveTool(this);
|
|
8
9
|
break;
|
|
9
10
|
case EventNames.PointerMove:
|
|
10
11
|
if (event.buttons == 1) {
|
|
@@ -13,7 +14,7 @@ export class PanTool {
|
|
|
13
14
|
break;
|
|
14
15
|
case EventNames.PointerUp:
|
|
15
16
|
event.target.releasePointerCapture(event.pointerId);
|
|
16
|
-
designerCanvas.
|
|
17
|
+
designerCanvas.releaseActiveTool();
|
|
17
18
|
break;
|
|
18
19
|
}
|
|
19
20
|
}
|
|
@@ -8,7 +8,6 @@ export declare class PointerTool implements ITool {
|
|
|
8
8
|
private _actionType?;
|
|
9
9
|
private _actionStartedDesignItem?;
|
|
10
10
|
private _previousEventName;
|
|
11
|
-
private _clickThroughElements;
|
|
12
11
|
private _dragOverExtensionItem;
|
|
13
12
|
private _dragExtensionItem;
|
|
14
13
|
private _moveItemsOffset;
|
|
@@ -18,8 +17,8 @@ export declare class PointerTool implements ITool {
|
|
|
18
17
|
dispose(): void;
|
|
19
18
|
private _showContextMenu;
|
|
20
19
|
pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
|
|
20
|
+
private _resetTool;
|
|
21
21
|
private _pointerActionTypeDrawSelection;
|
|
22
|
-
private _resetPointerEventsForClickThrough;
|
|
23
22
|
private _pointerActionTypeDragOrSelect;
|
|
24
23
|
keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
|
|
25
24
|
}
|
|
@@ -3,7 +3,6 @@ import { PointerActionType } from "../../../../enums/PointerActionType";
|
|
|
3
3
|
import { DesignItem } from "../../../item/DesignItem";
|
|
4
4
|
import { ExtensionType } from "../extensions/ExtensionType";
|
|
5
5
|
import { NamedTools } from './NamedTools';
|
|
6
|
-
import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper';
|
|
7
6
|
export class PointerTool {
|
|
8
7
|
cursor = 'default';
|
|
9
8
|
_movedSinceStartedAction = false;
|
|
@@ -11,7 +10,6 @@ export class PointerTool {
|
|
|
11
10
|
_actionType;
|
|
12
11
|
_actionStartedDesignItem;
|
|
13
12
|
_previousEventName;
|
|
14
|
-
_clickThroughElements = [];
|
|
15
13
|
_dragOverExtensionItem;
|
|
16
14
|
_dragExtensionItem;
|
|
17
15
|
_moveItemsOffset = { x: 0, y: 0 };
|
|
@@ -25,16 +23,18 @@ export class PointerTool {
|
|
|
25
23
|
_showContextMenu(event, designerCanvas) {
|
|
26
24
|
event.preventDefault();
|
|
27
25
|
if (!event.shiftKey) {
|
|
28
|
-
let items = designerCanvas.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (!designerCanvas.instanceServiceContainer.selectionService.isSelected(designItem)) {
|
|
34
|
-
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
|
|
26
|
+
let items = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
27
|
+
for (let e of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
28
|
+
if (items.indexOf(e.element) >= 0) {
|
|
29
|
+
designerCanvas.showDesignItemContextMenu(designerCanvas.instanceServiceContainer.selectionService.primarySelection, event);
|
|
30
|
+
return;
|
|
35
31
|
}
|
|
36
|
-
designerCanvas.showDesignItemContextMenu(designItem, event);
|
|
37
32
|
}
|
|
33
|
+
const designItem = DesignItem.GetOrCreateDesignItem(event.target, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
34
|
+
if (!designerCanvas.instanceServiceContainer.selectionService.isSelected(designItem)) {
|
|
35
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
|
|
36
|
+
}
|
|
37
|
+
designerCanvas.showDesignItemContextMenu(designItem, event);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
pointerEventHandler(designerCanvas, event, currentElement) {
|
|
@@ -52,15 +52,14 @@ export class PointerTool {
|
|
|
52
52
|
switch (event.type) {
|
|
53
53
|
case EventNames.PointerDown:
|
|
54
54
|
event.target.setPointerCapture(event.pointerId);
|
|
55
|
+
designerCanvas.captureActiveTool(this);
|
|
55
56
|
this._movedSinceStartedAction = false;
|
|
56
57
|
break;
|
|
57
58
|
case EventNames.PointerUp:
|
|
58
59
|
event.target.releasePointerCapture(event.pointerId);
|
|
59
|
-
designerCanvas.
|
|
60
|
+
designerCanvas.releaseActiveTool();
|
|
60
61
|
break;
|
|
61
62
|
}
|
|
62
|
-
if (!event.altKey)
|
|
63
|
-
this._resetPointerEventsForClickThrough();
|
|
64
63
|
if (!currentElement)
|
|
65
64
|
return;
|
|
66
65
|
const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
|
|
@@ -100,39 +99,38 @@ export class PointerTool {
|
|
|
100
99
|
if (currentDesignItem !== designerCanvas.rootDesignItem)
|
|
101
100
|
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([currentDesignItem]);
|
|
102
101
|
}
|
|
103
|
-
this.
|
|
104
|
-
this._actionStartedDesignItem = null;
|
|
105
|
-
this._movedSinceStartedAction = false;
|
|
106
|
-
this._initialPoint = null;
|
|
102
|
+
this._resetTool();
|
|
107
103
|
}
|
|
108
104
|
this._previousEventName = event.type;
|
|
109
105
|
}
|
|
106
|
+
_resetTool() {
|
|
107
|
+
this._actionType = null;
|
|
108
|
+
this._actionStartedDesignItem = null;
|
|
109
|
+
this._movedSinceStartedAction = false;
|
|
110
|
+
this._initialPoint = null;
|
|
111
|
+
}
|
|
110
112
|
_pointerActionTypeDrawSelection(designerView, event, currentElement) {
|
|
111
113
|
const drawSelectionTool = designerView.serviceContainer.designerTools.get(NamedTools.DrawSelection);
|
|
112
114
|
if (drawSelectionTool) {
|
|
115
|
+
this._resetTool();
|
|
113
116
|
drawSelectionTool.pointerEventHandler(designerView, event, currentElement);
|
|
114
117
|
}
|
|
115
118
|
}
|
|
116
|
-
_resetPointerEventsForClickThrough() {
|
|
117
|
-
if (!this._clickThroughElements.length)
|
|
118
|
-
return;
|
|
119
|
-
for (const e of this._clickThroughElements) {
|
|
120
|
-
e[0].element.style.pointerEvents = e[1];
|
|
121
|
-
}
|
|
122
|
-
this._clickThroughElements = [];
|
|
123
|
-
}
|
|
124
119
|
_pointerActionTypeDragOrSelect(designerCanvas, event, currentDesignItem, currentPoint) {
|
|
125
120
|
if (event.altKey) {
|
|
126
121
|
if (event.type == EventNames.PointerDown) {
|
|
127
|
-
|
|
128
|
-
|
|
122
|
+
const currentSelection = designerCanvas.instanceServiceContainer.selectionService.primarySelection;
|
|
123
|
+
if (currentSelection) {
|
|
124
|
+
const elements = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
125
|
+
let idx = elements.indexOf(currentSelection.element);
|
|
126
|
+
if (idx >= 0) {
|
|
127
|
+
idx++;
|
|
128
|
+
}
|
|
129
|
+
let currentElement = elements[idx];
|
|
130
|
+
if (currentElement)
|
|
131
|
+
currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
132
|
+
}
|
|
129
133
|
}
|
|
130
|
-
let currentElement = designerCanvas.elementFromPoint(event.x, event.y);
|
|
131
|
-
if (DomHelper.getHost(currentElement) !== designerCanvas.overlayLayer)
|
|
132
|
-
currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
this._resetPointerEventsForClickThrough();
|
|
136
134
|
}
|
|
137
135
|
switch (event.type) {
|
|
138
136
|
case EventNames.PointerDown:
|
|
@@ -183,103 +181,41 @@ export class PointerTool {
|
|
|
183
181
|
let newContainerElementDesignItem = null;
|
|
184
182
|
let newContainerService = null;
|
|
185
183
|
if (canLeave) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
184
|
+
const elementsFromPoint = designerCanvas.elementsFromPoint(event.x, event.y);
|
|
185
|
+
for (let e of elementsFromPoint) {
|
|
186
|
+
if (e == this._actionStartedDesignItem.element) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
else if (e == this._actionStartedDesignItem.parent.element) {
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
else if (e == designerCanvas.rootDesignItem.element) {
|
|
193
|
+
newContainerElementDesignItem = designerCanvas.rootDesignItem;
|
|
194
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
195
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
else if (false) {
|
|
199
|
+
//check we don't try to move a item over one of its children..
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
203
|
+
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
204
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
205
|
+
if (newContainerService) {
|
|
206
|
+
if (newContainerService.canEnter(newContainerElementDesignItem, [this._actionStartedDesignItem])) {
|
|
209
207
|
break;
|
|
210
208
|
}
|
|
211
|
-
|
|
212
|
-
else if (newContainerElement == this._actionStartedDesignItem.element || newContainerElement == currentDesignItem.element) {
|
|
213
|
-
backupPEventsMap.set(newContainerElement, newContainerElement.style.pointerEvents);
|
|
214
|
-
newContainerElement.style.pointerEvents = 'none';
|
|
215
|
-
const old = newContainerElement;
|
|
216
|
-
newContainerElement = designerCanvas.elementFromPoint(event.x, event.y);
|
|
217
|
-
if (old === newContainerElement) {
|
|
209
|
+
else {
|
|
218
210
|
newContainerElementDesignItem = null;
|
|
219
211
|
newContainerService = null;
|
|
220
|
-
|
|
221
|
-
break;
|
|
212
|
+
continue;
|
|
222
213
|
}
|
|
223
214
|
}
|
|
224
|
-
else {
|
|
225
|
-
//check we don't try to move a item over one of its children...
|
|
226
|
-
let par = newContainerElement.parentElement;
|
|
227
|
-
while (par) {
|
|
228
|
-
if (par == this._actionStartedDesignItem.element) {
|
|
229
|
-
backupPEventsMap.set(newContainerElement, newContainerElement.style.pointerEvents);
|
|
230
|
-
newContainerElement.style.pointerEvents = 'none';
|
|
231
|
-
const old = newContainerElement;
|
|
232
|
-
newContainerElement = designerCanvas.elementFromPoint(event.x, event.y);
|
|
233
|
-
if (old === newContainerElement)
|
|
234
|
-
break;
|
|
235
|
-
continue checkAgain;
|
|
236
|
-
}
|
|
237
|
-
par = par.parentElement;
|
|
238
|
-
}
|
|
239
|
-
//end check
|
|
240
|
-
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(newContainerElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
241
|
-
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
242
|
-
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
243
|
-
if (newContainerService) {
|
|
244
|
-
if (newContainerService.canEnter(newContainerElementDesignItem, [this._actionStartedDesignItem])) {
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
newContainerElementDesignItem = null;
|
|
249
|
-
newContainerService = null;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
backupPEventsMap.set(newContainerElement, newContainerElement.style.pointerEvents);
|
|
253
|
-
newContainerElement.style.pointerEvents = 'none';
|
|
254
|
-
const newC = designerCanvas.elementFromPoint(event.x, event.y);
|
|
255
|
-
if (newContainerElement === newC) {
|
|
256
|
-
newContainerElement = null;
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
newContainerElement = newC;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
finally {
|
|
264
|
-
for (let e of backupPEventsMap.entries()) {
|
|
265
|
-
e[0].style.pointerEvents = e[1];
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
if (newContainerElement != null) { //Check if container is in designer canvas....
|
|
269
|
-
let p = newContainerElement;
|
|
270
|
-
while (p != null) {
|
|
271
|
-
if (p === designerCanvas.rootDesignItem.element)
|
|
272
|
-
break;
|
|
273
|
-
p = p.parentElement;
|
|
274
|
-
}
|
|
275
|
-
if (p == null) {
|
|
276
|
-
newContainerService = null;
|
|
277
|
-
newContainerElement = null;
|
|
278
215
|
}
|
|
279
216
|
}
|
|
280
217
|
//if we found a new enterable container create extensions
|
|
281
|
-
if (
|
|
282
|
-
const newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(newContainerElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
218
|
+
if (newContainerElementDesignItem != null) {
|
|
283
219
|
if (this._dragOverExtensionItem != newContainerElementDesignItem) {
|
|
284
220
|
designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
|
|
285
221
|
designerCanvas.extensionManager.applyExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver);
|
|
@@ -320,7 +256,7 @@ export class PointerTool {
|
|
|
320
256
|
{
|
|
321
257
|
if (!this._movedSinceStartedAction || this._actionType == PointerActionType.DragOrSelect) {
|
|
322
258
|
if (this._previousEventName == EventNames.PointerDown && !event.shiftKey && !event.ctrlKey)
|
|
323
|
-
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([
|
|
259
|
+
designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedDesignItem]);
|
|
324
260
|
return;
|
|
325
261
|
}
|
|
326
262
|
if (this._movedSinceStartedAction) {
|
|
@@ -12,6 +12,7 @@ export class RectangleSelectorTool {
|
|
|
12
12
|
switch (event.type) {
|
|
13
13
|
case EventNames.PointerDown:
|
|
14
14
|
event.target.setPointerCapture(event.pointerId);
|
|
15
|
+
designerCanvas.captureActiveTool(this);
|
|
15
16
|
this._initialPoint = currentPoint;
|
|
16
17
|
if (!this._rect)
|
|
17
18
|
this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
@@ -46,7 +47,7 @@ export class RectangleSelectorTool {
|
|
|
46
47
|
break;
|
|
47
48
|
case EventNames.PointerUp:
|
|
48
49
|
event.target.releasePointerCapture(event.pointerId);
|
|
49
|
-
designerCanvas.
|
|
50
|
+
designerCanvas.releaseActiveTool();
|
|
50
51
|
const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
|
|
51
52
|
const inSelectionElements = [];
|
|
52
53
|
let point = designerCanvas.overlayLayer.createPoint();
|
|
@@ -8,6 +8,5 @@ export declare class PaletteTreeView extends BaseCustomWebComponentConstructorAp
|
|
|
8
8
|
static readonly style: CSSStyleSheet;
|
|
9
9
|
static readonly template: HTMLTemplateElement;
|
|
10
10
|
constructor();
|
|
11
|
-
ready(): Promise<void>;
|
|
12
11
|
loadControls(serviceContainer: ServiceContainer, elementsServices: IElementsService[]): Promise<void>;
|
|
13
12
|
}
|
|
@@ -55,6 +55,7 @@ export class PaletteTreeView extends BaseCustomWebComponentConstructorAppend {
|
|
|
55
55
|
</div>`;
|
|
56
56
|
constructor() {
|
|
57
57
|
super();
|
|
58
|
+
this._restoreCachedInititalValues();
|
|
58
59
|
//@ts-ignore
|
|
59
60
|
import("jquery.fancytree/dist/skin-win8/ui.fancytree.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
|
|
60
61
|
this._filter = this._getDomElement('input');
|
|
@@ -65,8 +66,6 @@ export class PaletteTreeView extends BaseCustomWebComponentConstructorAppend {
|
|
|
65
66
|
});
|
|
66
67
|
};
|
|
67
68
|
this._treeDiv = this._getDomElement('treetable');
|
|
68
|
-
}
|
|
69
|
-
async ready() {
|
|
70
69
|
$(this._treeDiv).fancytree({
|
|
71
70
|
icon: true,
|
|
72
71
|
extensions: ['childcounter', 'dnd5', 'filter'],
|
|
@@ -14,6 +14,7 @@ export class PaletteView extends BaseCustomWebComponentLazyAppend {
|
|
|
14
14
|
}`;
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
|
+
this._restoreCachedInititalValues();
|
|
17
18
|
this._designerTabControl = new DesignerTabControl();
|
|
18
19
|
this._designerTabControl.selectedIndex = 0;
|
|
19
20
|
this.shadowRoot.appendChild(this._designerTabControl);
|
|
@@ -28,6 +28,7 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
28
28
|
`;
|
|
29
29
|
constructor() {
|
|
30
30
|
super();
|
|
31
|
+
this._restoreCachedInititalValues();
|
|
31
32
|
this._designerTabControl = new DesignerTabControl();
|
|
32
33
|
this.shadowRoot.appendChild(this._designerTabControl);
|
|
33
34
|
this.addEventListener('contextmenu', (e) => {
|
|
@@ -78,6 +78,7 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
78
78
|
}
|
|
79
79
|
constructor(serviceContainer) {
|
|
80
80
|
super();
|
|
81
|
+
this._restoreCachedInititalValues();
|
|
81
82
|
this._serviceContainer = serviceContainer;
|
|
82
83
|
this._div = document.createElement("div");
|
|
83
84
|
this._div.className = "content-wrapper";
|
|
@@ -53,6 +53,7 @@ export class PropertyGridWithHeader extends BaseCustomWebComponentLazyAppend {
|
|
|
53
53
|
_instanceServiceContainer;
|
|
54
54
|
constructor() {
|
|
55
55
|
super();
|
|
56
|
+
this._restoreCachedInititalValues();
|
|
56
57
|
this._type = this._getDomElement('type');
|
|
57
58
|
this._id = this._getDomElement('id');
|
|
58
59
|
this._pg = this._getDomElement('pg');
|
|
@@ -108,6 +108,7 @@ export class TreeView extends BaseCustomWebComponentLazyAppend {
|
|
|
108
108
|
`;
|
|
109
109
|
constructor() {
|
|
110
110
|
super();
|
|
111
|
+
this._restoreCachedInititalValues();
|
|
111
112
|
this._treeDiv = document.createElement('div');
|
|
112
113
|
this._treeDiv.style.userSelect = 'none';
|
|
113
114
|
this.shadowRoot.appendChild(this._treeDiv);
|
|
@@ -94,6 +94,7 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
94
94
|
</div>`;
|
|
95
95
|
constructor() {
|
|
96
96
|
super();
|
|
97
|
+
this._restoreCachedInititalValues();
|
|
97
98
|
//@ts-ignore
|
|
98
99
|
import("jquery.fancytree/dist/skin-win8/ui.fancytree.css", { assert: { type: 'css' } }).then(x => this.shadowRoot.adoptedStyleSheets = [x.default, this.constructor.style]);
|
|
99
100
|
this._filter = this._getDomElement('input');
|
|
@@ -178,6 +179,8 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
178
179
|
let designItem = node.data.ref;
|
|
179
180
|
if (designItem && designItem.nodeType === NodeType.Element && designItem !== designItem.instanceServiceContainer.contentService.rootDesignItem) {
|
|
180
181
|
node.tr.oncontextmenu = (e) => this.showDesignItemContextMenu(designItem, e);
|
|
182
|
+
node.tr.onmouseenter = (e) => designItem.instanceServiceContainer.designerCanvas.showHoverExtension(designItem.element);
|
|
183
|
+
node.tr.onmouseleave = (e) => designItem.instanceServiceContainer.designerCanvas.showHoverExtension(null);
|
|
181
184
|
let d = document.createElement("div");
|
|
182
185
|
d.className = "cmd";
|
|
183
186
|
let imgL = document.createElement('img');
|
|
@@ -375,10 +378,12 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
375
378
|
this._tree.visit((node) => {
|
|
376
379
|
if (activeElements && activeElements.indexOf(node.data.ref) >= 0) {
|
|
377
380
|
node.setSelected(true);
|
|
381
|
+
node.setActive(true);
|
|
378
382
|
node.makeVisible({ scrollIntoView: true });
|
|
379
383
|
}
|
|
380
384
|
else {
|
|
381
385
|
node.setSelected(false);
|
|
386
|
+
node.setActive(false);
|
|
382
387
|
}
|
|
383
388
|
});
|
|
384
389
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -160,6 +160,7 @@ export * from "./elements/widgets/designerView/extensions/contextMenu/PathContex
|
|
|
160
160
|
export * from "./elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js";
|
|
161
161
|
export * from "./elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js";
|
|
162
162
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js";
|
|
163
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js";
|
|
163
164
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js";
|
|
164
165
|
export type { IDesignerPointerExtension } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js";
|
|
165
166
|
export type { IDesignerPointerExtensionProvider } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js";
|
package/dist/index.js
CHANGED
|
@@ -120,6 +120,7 @@ export * from "./elements/widgets/designerView/extensions/contextMenu/PathContex
|
|
|
120
120
|
export * from "./elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js";
|
|
121
121
|
export * from "./elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js";
|
|
122
122
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js";
|
|
123
|
+
export * from "./elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js";
|
|
123
124
|
export * from "./elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js";
|
|
124
125
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
|
|
125
126
|
export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.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.0.
|
|
4
|
+
"version": "0.0.94",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"author": "",
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"prepublishOnly": "npm run build"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@node-projects/base-custom-webcomponent": "^0.
|
|
16
|
+
"@node-projects/base-custom-webcomponent": "^0.9.0",
|
|
17
17
|
"construct-style-sheets-polyfill": "^3.1.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@node-projects/lean-he-esm": "^3.3.0",
|
|
21
21
|
"@node-projects/node-html-parser-esm": "^2.4.1",
|
|
22
|
-
"@papyrs/stylo": "^0.0.
|
|
22
|
+
"@papyrs/stylo": "^0.0.9",
|
|
23
23
|
"@types/codemirror": "^5.60.5",
|
|
24
24
|
"@types/jquery": "^3.5.14",
|
|
25
25
|
"@types/jquery.fancytree": "0.0.7",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"jquery.fancytree": "^2.38.1",
|
|
33
33
|
"monaco-editor": "^0.32.1",
|
|
34
34
|
"ts-jest": "^27.1.3",
|
|
35
|
-
"typescript": "^4.
|
|
35
|
+
"typescript": "^4.6.2",
|
|
36
36
|
"typescript-lit-html-plugin": "^0.9.0"
|
|
37
37
|
},
|
|
38
38
|
"repository": {
|