@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.
Files changed (41) hide show
  1. package/dist/commandHandling/CommandType.d.ts +2 -0
  2. package/dist/commandHandling/CommandType.js +2 -0
  3. package/dist/elements/documentContainer.js +2 -2
  4. package/dist/elements/services/DefaultServiceBootstrap.js +3 -0
  5. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +50 -0
  6. package/dist/elements/services/placementService/DefaultPlacementService.js +2 -2
  7. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.d.ts +0 -1
  8. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.js +1 -2
  9. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +5 -2
  10. package/dist/elements/widgets/designerView/designerCanvas.d.ts +14 -6
  11. package/dist/elements/widgets/designerView/designerCanvas.js +82 -126
  12. package/dist/elements/widgets/designerView/designerView.js +8 -3
  13. package/dist/elements/widgets/designerView/extensions/PathExtension.js +0 -1
  14. package/dist/elements/widgets/designerView/extensions/PathExtensionProvider.js +2 -1
  15. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +0 -1
  16. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +0 -1
  17. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +4 -2
  18. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +1 -1
  19. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.d.ts +8 -0
  20. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js +12 -0
  21. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +2 -1
  22. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +2 -1
  23. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +5 -2
  24. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +2 -1
  25. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +2 -1
  26. package/dist/elements/widgets/designerView/tools/PanTool.js +2 -1
  27. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -2
  28. package/dist/elements/widgets/designerView/tools/PointerTool.js +58 -122
  29. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +2 -1
  30. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.js +1 -0
  31. package/dist/elements/widgets/paletteView/paletteTreeView.d.ts +0 -1
  32. package/dist/elements/widgets/paletteView/paletteTreeView.js +1 -2
  33. package/dist/elements/widgets/paletteView/paletteView.js +1 -0
  34. package/dist/elements/widgets/propertyGrid/PropertyGrid.js +1 -0
  35. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +1 -0
  36. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +1 -0
  37. package/dist/elements/widgets/treeView/treeView.js +1 -0
  38. package/dist/elements/widgets/treeView/treeViewExtended.js +5 -0
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.js +1 -0
  41. package/package.json +4 -4
@@ -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.removeCurrentPointerEventHandler();
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.removeCurrentPointerEventHandler();
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.removeCurrentPointerEventHandler();
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.removeCurrentPointerEventHandler();
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.removeCurrentPointerEventHandler();
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.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]);
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.removeCurrentPointerEventHandler();
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._actionType = null;
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
- this._clickThroughElements.push([currentDesignItem, currentDesignItem.element.style.pointerEvents]);
128
- currentDesignItem.element.style.pointerEvents = 'none';
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
- //search for containers below mouse cursor.
187
- //to do this, we need to disable pointer events for each in a loop and search wich element is there
188
- let backupPEventsMap = new Map();
189
- let newContainerElement = designerCanvas.elementFromPoint(event.x, event.y);
190
- try {
191
- checkAgain: while (newContainerElement != null) {
192
- if (newContainerElement == this._actionStartedDesignItem.parent.element) {
193
- newContainerElement = null;
194
- }
195
- else if (newContainerElement == designerCanvas.rootDesignItem.element) {
196
- newContainerElementDesignItem = designerCanvas.rootDesignItem;
197
- const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
198
- newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
199
- break;
200
- }
201
- else if (newContainerElement.getRootNode() !== designerCanvas.shadowRoot || newContainerElement === designerCanvas.overlayLayer || newContainerElement.parentElement === designerCanvas.overlayLayer) {
202
- backupPEventsMap.set(newContainerElement, newContainerElement.style.pointerEvents);
203
- newContainerElement.style.pointerEvents = 'none';
204
- const old = newContainerElement;
205
- newContainerElement = designerCanvas.elementFromPoint(event.x, event.y);
206
- if (old === newContainerElement) {
207
- newContainerElementDesignItem = null;
208
- newContainerService = null;
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
- newContainerElement = null;
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 (newContainerElement != null) {
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([currentDesignItem]);
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.removeCurrentPointerEventHandler();
50
+ designerCanvas.releaseActiveTool();
50
51
  const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
51
52
  const inSelectionElements = [];
52
53
  let point = designerCanvas.overlayLayer.createPoint();
@@ -7,6 +7,7 @@ export class Html2CanvasMiniatureView extends BaseCustomWebComponentLazyAppend {
7
7
  _imgdiv;
8
8
  constructor() {
9
9
  super();
10
+ this._restoreCachedInititalValues();
10
11
  this._imgdiv = this._getDomElement('imgdiv');
11
12
  }
12
13
  reRender(designerView) {
@@ -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.93",
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.6.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.8",
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.5.5",
35
+ "typescript": "^4.6.2",
36
36
  "typescript-lit-html-plugin": "^0.9.0"
37
37
  },
38
38
  "repository": {