@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.
Files changed (37) hide show
  1. package/dist/elements/controls/PlainScrollbar.js +122 -116
  2. package/dist/elements/controls/SimpleSplitView.js +1 -1
  3. package/dist/elements/documentContainer.js +2 -0
  4. package/dist/elements/helper/ArrangeHelper.d.ts +7 -0
  5. package/dist/elements/helper/ArrangeHelper.js +79 -0
  6. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +17 -13
  7. package/dist/elements/services/undoService/UndoService.js +2 -2
  8. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +8 -0
  9. package/dist/elements/widgets/designerView/designerCanvas.d.ts +13 -3
  10. package/dist/elements/widgets/designerView/designerCanvas.js +93 -36
  11. package/dist/elements/widgets/designerView/designerCanvas.ts.BASE.d.ts +92 -0
  12. package/dist/elements/widgets/designerView/designerCanvas.ts.BASE.js +734 -0
  13. package/dist/elements/widgets/designerView/designerCanvas.ts.LOCAL.d.ts +95 -0
  14. package/dist/elements/widgets/designerView/designerCanvas.ts.LOCAL.js +768 -0
  15. package/dist/elements/widgets/designerView/designerCanvas.ts.REMOTE.d.ts +94 -0
  16. package/dist/elements/widgets/designerView/designerCanvas.ts.REMOTE.js +745 -0
  17. package/dist/elements/widgets/designerView/designerView.js +19 -15
  18. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.js +2 -2
  19. package/dist/elements/widgets/designerView/extensions/PathExtension.js +1 -0
  20. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +2 -1
  21. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +1 -0
  22. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +1 -0
  23. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +1 -0
  24. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +1 -0
  25. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +1 -0
  26. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +10 -9
  27. package/dist/elements/widgets/designerView/tools/PanTool.js +1 -0
  28. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
  29. package/dist/elements/widgets/designerView/tools/PointerTool.js +23 -2
  30. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +10 -9
  31. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +8 -1
  32. package/dist/elements/widgets/designerView/tools/ZoomTool.js +69 -0
  33. package/dist/elements/widgets/paletteView/paletteTreeView.js +5 -0
  34. package/dist/elements/widgets/treeView/treeViewExtended.js +10 -13
  35. package/dist/enums/Orientation.d.ts +8 -0
  36. package/dist/enums/Orientation.js +9 -0
  37. 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._designerCanvas.zoomFactor = zf;
239
- this._zoomInput.value = Math.round(zf * 100) + '%';
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
- //@ts-ignore
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); //, this.extendedItem.element, event.type === 'pointerdown' ? null : this._initialPoint);
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");
@@ -70,6 +70,7 @@ export class DrawPathTool {
70
70
  break;
71
71
  case EventNames.PointerUp:
72
72
  event.target.releasePointerCapture(event.pointerId);
73
+ designerCanvas.removeCurrentPointerEventHandler();
73
74
  if (this._eventStarted && !this._pointerMoved) {
74
75
  this._p2pMode = true;
75
76
  }
@@ -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 = e.getBoundingClientRect();
32
- point.x = elementRect.left - designerCanvas.containerBoundingRect.left;
33
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
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.left - designerCanvas.containerBoundingRect.left + elementRect.width;
36
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
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.left - designerCanvas.containerBoundingRect.left;
39
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
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.left - designerCanvas.containerBoundingRect.left + elementRect.width;
42
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
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);
@@ -13,6 +13,7 @@ export class PanTool {
13
13
  break;
14
14
  case EventNames.PointerUp:
15
15
  event.target.releasePointerCapture(event.pointerId);
16
+ designerCanvas.removeCurrentPointerEventHandler();
16
17
  break;
17
18
  }
18
19
  }
@@ -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 = e.getBoundingClientRect();
54
- point.x = elementRect.left - designerCanvas.containerBoundingRect.left;
55
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
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.left - designerCanvas.containerBoundingRect.left + elementRect.width;
58
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
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.left - designerCanvas.containerBoundingRect.left;
61
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
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.left - designerCanvas.containerBoundingRect.left + elementRect.width;
64
- point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
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
- readonly cursor: string;
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: false,
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
- if (activeElements != null) {
369
- this._tree.visit((node) => {
370
- //@ts-ignore
371
- if (activeElements.indexOf(node.data.ref) >= 0) {
372
- node.setSelected(true);
373
- node.makeVisible({ scrollIntoView: true });
374
- }
375
- else {
376
- node.setSelected(false);
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,8 @@
1
+ export declare enum Orientation {
2
+ TOP = 0,
3
+ RIGHT = 1,
4
+ BOTTOM = 2,
5
+ LEFT = 3,
6
+ VERTICAL_CENTER = 4,
7
+ HORIZONTAL_CENTER = 5
8
+ }
@@ -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 = {}));
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.87",
4
+ "version": "0.0.90",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",