@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
@@ -142,7 +142,7 @@ class Widget {
142
142
  if (clippedNewValue == this.value) {
143
143
  return false;
144
144
  }
145
- this.value = clippedNewValue;
145
+ this.value = isNaN(clippedNewValue) ? 0 : clippedNewValue;
146
146
  this.updateThumbPosition();
147
147
  return true;
148
148
  }
@@ -281,10 +281,16 @@ export class PlainScrollbar extends HTMLElement {
281
281
  widget;
282
282
  constructor() {
283
283
  super();
284
- const value = parseFloat(this.getAttribute("value"));
285
284
  this.widget = new Widget(this);
285
+ const value = parseFloat(this.getAttribute("value"));
286
286
  if (!isNaN(value))
287
287
  this.widget.value = value;
288
+ if (this.hasOwnProperty('value')) {
289
+ let value = this.value;
290
+ delete this.value;
291
+ if (!isNaN(value))
292
+ this.widget.value = value;
293
+ }
288
294
  }
289
295
  /* @Override */ connectedCallback() {
290
296
  this.widget.connectedCallback();
@@ -343,121 +349,121 @@ export class PlainScrollbar extends HTMLElement {
343
349
  const EPS = 1E-9;
344
350
  const buttonSize = "var(--plain-scrollbar-button-size, 13px)";
345
351
  const buttonPath = '<path d="M -60 30 h 120 L 0 -30 z" stroke-width="0"/>';
346
- const scrollbarStyle = `
347
- :host {
348
- display: block;
349
- contain: content;
350
- background-color: #f8f8f8;
351
- border-style: solid;
352
- border-width: 1px;
353
- border-color: #dddddd;
354
- }
355
- #root {
356
- touch-action: none;
357
- user-select: none;
358
- box-sizing: border-box;
359
- position: relative;
360
- width: 100%;
361
- height: 100%;
362
- }
363
- #trough {
364
- position: absolute;
365
- }
366
- #root.vertical #trough {
367
- width: 100%;
368
- top: ${buttonSize};
369
- bottom: ${buttonSize};
370
- }
371
- #root.horizontal #trough {
372
- height: 100%;
373
- left: ${buttonSize};
374
- right: ${buttonSize};
375
- }
376
- #thumb {
377
- box-sizing: border-box;
378
- position: absolute;
379
- width: 100%;
380
- height: 100%;
381
- background-color: var(--plain-scrollbar-thumb-background-color, #f0f0f0);
382
- border-style: solid;
383
- border-width: var(--plain-scrollbar-thumb-border-width, 1px);
384
- border-color: var(--plain-scrollbar-thumb-border-color, #b8b8b8);
385
- border-radius: var(--plain-scrollbar-thumb-border-radius, 4px);
386
- transition: background-color 50ms linear;
387
- }
388
- #thumb:hover {
389
- background-color: var(--plain-scrollbar-thumb-background-color-hover, #e0e0e0);
390
- }
391
- #thumb.active {
392
- background-color: var(--plain-scrollbar-thumb-background-color-active, #c0c0c0);
393
- }
394
- #button1,
395
- #button2 {
396
- box-sizing: border-box;
397
- position: absolute;
398
- display: block;
399
- fill: var(--plain-scrollbar-button-color, #606060);
400
- }
401
- #root.vertical #button1 {
402
- top: 0;
403
- width: 100%;
404
- height: ${buttonSize};
405
- }
406
- #root.vertical #button2 {
407
- bottom: 0;
408
- width: 100%;
409
- height: ${buttonSize};
410
- }
411
- #root.horizontal #button1 {
412
- left: 0;
413
- height: 100%;
414
- width: ${buttonSize};
415
- }
416
- #root.horizontal #button2 {
417
- right: 0;
418
- height: 100%;
419
- width: ${buttonSize};
420
- }
421
- #upArrow,
422
- #downArrow,
423
- #leftArrow,
424
- #rightArrow {
425
- display: none;
426
- width: 100%;
427
- height: 100%;
428
- }
429
- #root.vertical #upArrow,
430
- #root.vertical #downArrow {
431
- display: block;
432
- }
433
- #root.horizontal #leftArrow,
434
- #root.horizontal #rightArrow {
435
- display: block;
436
- }
437
- #button1:hover,
438
- #button2:hover {
439
- background-color: var(--plain-scrollbar-button-color-hover, #e0e0e0);
440
- }
441
- #button1.active,
442
- #button2.active {
443
- background-color: var(--plain-scrollbar-button-color-active, #c0c0c0);
444
- }
352
+ const scrollbarStyle = `
353
+ :host {
354
+ display: block;
355
+ contain: content;
356
+ background-color: #f8f8f8;
357
+ border-style: solid;
358
+ border-width: 1px;
359
+ border-color: #dddddd;
360
+ }
361
+ #root {
362
+ touch-action: none;
363
+ user-select: none;
364
+ box-sizing: border-box;
365
+ position: relative;
366
+ width: 100%;
367
+ height: 100%;
368
+ }
369
+ #trough {
370
+ position: absolute;
371
+ }
372
+ #root.vertical #trough {
373
+ width: 100%;
374
+ top: ${buttonSize};
375
+ bottom: ${buttonSize};
376
+ }
377
+ #root.horizontal #trough {
378
+ height: 100%;
379
+ left: ${buttonSize};
380
+ right: ${buttonSize};
381
+ }
382
+ #thumb {
383
+ box-sizing: border-box;
384
+ position: absolute;
385
+ width: 100%;
386
+ height: 100%;
387
+ background-color: var(--plain-scrollbar-thumb-background-color, #f0f0f0);
388
+ border-style: solid;
389
+ border-width: var(--plain-scrollbar-thumb-border-width, 1px);
390
+ border-color: var(--plain-scrollbar-thumb-border-color, #b8b8b8);
391
+ border-radius: var(--plain-scrollbar-thumb-border-radius, 4px);
392
+ transition: background-color 50ms linear;
393
+ }
394
+ #thumb:hover {
395
+ background-color: var(--plain-scrollbar-thumb-background-color-hover, #e0e0e0);
396
+ }
397
+ #thumb.active {
398
+ background-color: var(--plain-scrollbar-thumb-background-color-active, #c0c0c0);
399
+ }
400
+ #button1,
401
+ #button2 {
402
+ box-sizing: border-box;
403
+ position: absolute;
404
+ display: block;
405
+ fill: var(--plain-scrollbar-button-color, #606060);
406
+ }
407
+ #root.vertical #button1 {
408
+ top: 0;
409
+ width: 100%;
410
+ height: ${buttonSize};
411
+ }
412
+ #root.vertical #button2 {
413
+ bottom: 0;
414
+ width: 100%;
415
+ height: ${buttonSize};
416
+ }
417
+ #root.horizontal #button1 {
418
+ left: 0;
419
+ height: 100%;
420
+ width: ${buttonSize};
421
+ }
422
+ #root.horizontal #button2 {
423
+ right: 0;
424
+ height: 100%;
425
+ width: ${buttonSize};
426
+ }
427
+ #upArrow,
428
+ #downArrow,
429
+ #leftArrow,
430
+ #rightArrow {
431
+ display: none;
432
+ width: 100%;
433
+ height: 100%;
434
+ }
435
+ #root.vertical #upArrow,
436
+ #root.vertical #downArrow {
437
+ display: block;
438
+ }
439
+ #root.horizontal #leftArrow,
440
+ #root.horizontal #rightArrow {
441
+ display: block;
442
+ }
443
+ #button1:hover,
444
+ #button2:hover {
445
+ background-color: var(--plain-scrollbar-button-color-hover, #e0e0e0);
446
+ }
447
+ #button1.active,
448
+ #button2.active {
449
+ background-color: var(--plain-scrollbar-button-color-active, #c0c0c0);
450
+ }
445
451
  `;
446
- const scrollbarHtmlTemplate = `
447
- <style>${scrollbarStyle}</style>
448
- <div id="root" part="root">
449
- <div id="button1" part="button button1">
450
- <svg id="upArrow" part="arrow upArrow" viewBox="-100 -100 200 200">${buttonPath}</svg>
451
- <svg id="leftArrow" part="arrow leftArrow" viewBox="-100 -100 200 200"><g transform="rotate(-90)">${buttonPath}</g></svg>
452
- </div>
453
- <div id="trough" part="trough">
454
- <div id="thumb" part="thumb"></div>
455
- </div>
456
- <div id="button2" part="button button2">
457
- <svg id="downArrow" part="arrow downArrow" viewBox="-100 -100 200 200"><g transform="rotate(180)">${buttonPath}</g></svg>
458
- <svg id="rightArrow" part="arrow rightArrow" viewBox="-100 -100 200 200"><g transform="rotate(90)">${buttonPath}</g></svg>
459
- </div>
460
- </div>
452
+ const scrollbarHtmlTemplate = `
453
+ <style>${scrollbarStyle}</style>
454
+ <div id="root" part="root">
455
+ <div id="button1" part="button button1">
456
+ <svg id="upArrow" part="arrow upArrow" viewBox="-100 -100 200 200">${buttonPath}</svg>
457
+ <svg id="leftArrow" part="arrow leftArrow" viewBox="-100 -100 200 200"><g transform="rotate(-90)">${buttonPath}</g></svg>
458
+ </div>
459
+ <div id="trough" part="trough">
460
+ <div id="thumb" part="thumb"></div>
461
+ </div>
462
+ <div id="button2" part="button button2">
463
+ <svg id="downArrow" part="arrow downArrow" viewBox="-100 -100 200 200"><g transform="rotate(180)">${buttonPath}</g></svg>
464
+ <svg id="rightArrow" part="arrow rightArrow" viewBox="-100 -100 200 200"><g transform="rotate(90)">${buttonPath}</g></svg>
465
+ </div>
466
+ </div>
461
467
  `;
462
468
  //------------------------------------------------------------------------------
463
469
  function formatOrientation(b) {
@@ -8,7 +8,7 @@ export class SimpleSplitView extends BaseCustomWebComponentConstructorAppend {
8
8
  position: relative;
9
9
  height: 100%;
10
10
  width: 100%;
11
- grid-template-rows: calc(var(--split) * 1%) 5px calc((100 - var(--split)) * 1%);
11
+ grid-template-rows: calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px);
12
12
  display: grid;
13
13
  align-items: center;
14
14
  }
@@ -62,9 +62,11 @@ export class DocumentContainer extends BaseCustomWebComponentLazyAppend {
62
62
  this.designerView.designerCanvas.onContentChanged.on(() => this.designerContentChanged());
63
63
  this.codeView = new serviceContainer.config.codeViewWidget();
64
64
  this.codeView.slot = 'bottom';
65
+ this.codeView.style.position = 'relative';
65
66
  this._codeDiv = document.createElement("div");
66
67
  this._tabControl.appendChild(this._codeDiv);
67
68
  this._codeDiv.title = 'Code';
69
+ this._codeDiv.style.position = 'relative';
68
70
  this._codeDiv.appendChild(this.codeView);
69
71
  this.codeView.onTextChanged.on(text => {
70
72
  if (!this._disableChangeNotificationDesigner) {
@@ -0,0 +1,7 @@
1
+ import { IDesignerCanvas } from "../..";
2
+ import { Orientation } from "../../enums/Orientation";
3
+ export declare abstract class ArrangeHelper {
4
+ static arrangeElements(orientation: Orientation, designerCanvas: IDesignerCanvas): void;
5
+ private static arrange;
6
+ private static formGroup;
7
+ }
@@ -0,0 +1,79 @@
1
+ import { Orientation } from "../../enums/Orientation";
2
+ export class ArrangeHelper {
3
+ static arrangeElements(orientation, designerCanvas) {
4
+ switch (orientation) {
5
+ case Orientation.TOP: {
6
+ const grp = this.formGroup(ArrangeDirection.TOP, designerCanvas);
7
+ const top = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('top');
8
+ for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
9
+ this.arrange(elem, 'top', top);
10
+ }
11
+ grp.commit();
12
+ break;
13
+ }
14
+ case Orientation.RIGHT: {
15
+ const grp = this.formGroup(ArrangeDirection.RIGHT, designerCanvas);
16
+ const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
17
+ const right = Math.floor(arrElement.x + arrElement.width);
18
+ for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
19
+ this.arrange(elem, 'left', (right - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).width)) + "px");
20
+ }
21
+ grp.commit();
22
+ break;
23
+ }
24
+ case Orientation.BOTTOM:
25
+ const grp = this.formGroup(ArrangeDirection.BOTTOM, designerCanvas);
26
+ const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
27
+ const top = Math.floor(arrElement.y + arrElement.height);
28
+ for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
29
+ this.arrange(elem, 'top', (top - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).height)) + "px");
30
+ }
31
+ grp.commit();
32
+ break;
33
+ case Orientation.LEFT: {
34
+ const grp = this.formGroup(ArrangeDirection.LEFT, designerCanvas);
35
+ const left = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('left');
36
+ for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
37
+ this.arrange(elem, 'left', left);
38
+ }
39
+ grp.commit();
40
+ break;
41
+ }
42
+ case Orientation.VERTICAL_CENTER: {
43
+ const grp = this.formGroup(ArrangeDirection.VERTICAL_CENTER, designerCanvas);
44
+ const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
45
+ const ver_center = arrElement.y + arrElement.height / 2;
46
+ for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
47
+ this.arrange(elem, 'top', (ver_center - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).height) / 2) + "px");
48
+ }
49
+ grp.commit();
50
+ break;
51
+ }
52
+ case Orientation.HORIZONTAL_CENTER: {
53
+ const grp = this.formGroup(ArrangeDirection.HORIZONTAL_CENTER, designerCanvas);
54
+ const arrElement = designerCanvas.getNormalizedElementCoordinates(designerCanvas.instanceServiceContainer.selectionService.primarySelection.element);
55
+ const hor_center = arrElement.x + (arrElement.width / 2);
56
+ for (let elem of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
57
+ this.arrange(elem, 'left', (hor_center - Math.floor(designerCanvas.getNormalizedElementCoordinates(elem.element).width) / 2) + "px");
58
+ }
59
+ grp.commit();
60
+ break;
61
+ }
62
+ }
63
+ }
64
+ static arrange(element, attribut, value) {
65
+ element.setStyle(attribut, value);
66
+ }
67
+ static formGroup(name, designerCanvas) {
68
+ return designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup(name);
69
+ }
70
+ }
71
+ var ArrangeDirection;
72
+ (function (ArrangeDirection) {
73
+ ArrangeDirection["TOP"] = "arrangeTop";
74
+ ArrangeDirection["RIGHT"] = "arrangeRight";
75
+ ArrangeDirection["BOTTOM"] = "arrangeBottom";
76
+ ArrangeDirection["LEFT"] = "arrangeLeft";
77
+ ArrangeDirection["HORIZONTAL_CENTER"] = "arrangeHorizontalCenter";
78
+ ArrangeDirection["VERTICAL_CENTER"] = "arrangeVerticalCenter";
79
+ })(ArrangeDirection || (ArrangeDirection = {}));
@@ -1,4 +1,6 @@
1
1
  import { CommandType } from "../../../commandHandling/CommandType.js";
2
+ import { ArrangeHelper } from "../../helper/ArrangeHelper.js";
3
+ import { Orientation } from "../../../enums/Orientation.js";
2
4
  export class DefaultModelCommandService {
3
5
  canExecuteCommand(designerCanvas, command) {
4
6
  if (command.type == CommandType.moveBackward ||
@@ -33,21 +35,23 @@ export class DefaultModelCommandService {
33
35
  sel.parent.insertChild(sel, 0);
34
36
  else if (command.type == CommandType.moveToFront)
35
37
  sel.parent.insertChild(sel);
38
+ else if (command.type == CommandType.arrangeTop) {
39
+ ArrangeHelper.arrangeElements(Orientation.TOP, designerCanvas);
40
+ }
41
+ else if (command.type == CommandType.arrangeRight) {
42
+ ArrangeHelper.arrangeElements(Orientation.RIGHT, designerCanvas);
43
+ }
36
44
  else if (command.type == CommandType.arrangeLeft) {
37
- const grp = designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup('arrangeLeft');
38
- const left = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('left');
39
- for (let s of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
40
- s.setStyle('left', left);
41
- }
42
- grp.commit();
45
+ ArrangeHelper.arrangeElements(Orientation.LEFT, designerCanvas);
43
46
  }
44
- else if (command.type == CommandType.arrangeTop) {
45
- const grp = designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup('arrangeTop');
46
- const top = designerCanvas.instanceServiceContainer.selectionService.primarySelection.styles.get('top');
47
- for (let s of designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
48
- s.setStyle('top', top);
49
- }
50
- grp.commit();
47
+ else if (command.type == CommandType.arrangeBottom) {
48
+ ArrangeHelper.arrangeElements(Orientation.BOTTOM, designerCanvas);
49
+ }
50
+ else if (command.type == CommandType.arrangeCenter) {
51
+ ArrangeHelper.arrangeElements(Orientation.HORIZONTAL_CENTER, designerCanvas);
52
+ }
53
+ else if (command.type == CommandType.arrangeMiddle) {
54
+ ArrangeHelper.arrangeElements(Orientation.VERTICAL_CENTER, designerCanvas);
51
55
  }
52
56
  else if (command.type == CommandType.unifyHeight) {
53
57
  const grp = designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup('unifyHeight');
@@ -19,7 +19,7 @@ export class UndoService {
19
19
  let itm = this._transactionStack.pop();
20
20
  if (itm !== transactionItem) {
21
21
  this.clear();
22
- throw "UndoService - Commited Transation was not the last";
22
+ throw "UndoService - Commited Transaction was not the last";
23
23
  }
24
24
  if (itm.undoStack.length)
25
25
  this._undoStack.push(itm);
@@ -29,7 +29,7 @@ export class UndoService {
29
29
  let itm = this._transactionStack.pop();
30
30
  if (itm !== transactionItem) {
31
31
  this.clear();
32
- throw "UndoService - Aborted Transation was not the last";
32
+ throw "UndoService - Aborted Transaction was not the last";
33
33
  }
34
34
  itm.undo();
35
35
  }
@@ -9,10 +9,12 @@ import { IPoint } from "../../../interfaces/IPoint";
9
9
  import { OverlayLayerView } from "./overlayLayerView";
10
10
  import { IRect } from "../../../interfaces/IRect.js";
11
11
  import { TypedEvent } from "@node-projects/base-custom-webcomponent";
12
+ import { ISize } from "../../../interfaces/ISize.js";
12
13
  export interface IDesignerCanvas extends IPlacementView, IUiCommandHandler {
13
14
  readonly serviceContainer: ServiceContainer;
14
15
  readonly instanceServiceContainer: InstanceServiceContainer;
15
16
  readonly containerBoundingRect: DOMRect;
17
+ readonly outerRect: DOMRect;
16
18
  readonly rootDesignItem: IDesignItem;
17
19
  readonly overlayLayer: OverlayLayerView;
18
20
  readonly extensionManager: IExtensionManager;
@@ -28,9 +30,15 @@ export interface IDesignerCanvas extends IPlacementView, IUiCommandHandler {
28
30
  eatEvents: Element;
29
31
  initialize(serviceContainer: ServiceContainer): any;
30
32
  getNormalizedEventCoordinates(event: MouseEvent): IPoint;
33
+ getViewportCoordinates(event: MouseEvent): IPoint;
31
34
  getNormalizedElementCoordinates(element: Element): IRect;
35
+ removeCurrentPointerEventHandler(): any;
36
+ getDesignSurfaceDimensions(): ISize;
32
37
  getNormalizedOffsetInElement(event: MouseEvent, element: Element): IPoint;
33
38
  getElementAtPoint(point: IPoint, ignoreElementCallback?: (element: HTMLElement) => boolean): any;
34
39
  elementFromPoint(x: number, y: number): Element;
35
40
  getItemsBelowMouse(event: MouseEvent): Element[];
41
+ zoomTowardsPoint(point: IPoint, scalechange: number): void;
42
+ zoomOntoRectangle(startPoint: IPoint, endPoint: IPoint): void;
43
+ showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): void;
36
44
  }
@@ -13,6 +13,7 @@ import { IPoint } from "../../../interfaces/IPoint";
13
13
  import { OverlayLayer } from "./extensions/OverlayLayer";
14
14
  import { OverlayLayerView } from './overlayLayerView';
15
15
  import { IRect } from "../../../interfaces/IRect.js";
16
+ import { ISize } from "../../../interfaces/ISize.js";
16
17
  export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend implements IDesignerCanvas, IPlacementView, IUiCommandHandler {
17
18
  serviceContainer: ServiceContainer;
18
19
  instanceServiceContainer: InstanceServiceContainer;
@@ -30,17 +31,21 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
30
31
  private _zoomFactor;
31
32
  private _scaleFactor;
32
33
  private _canvasOffset;
34
+ private _currentContextMenu;
35
+ private _lastPointerDownHandler;
33
36
  get zoomFactor(): number;
34
37
  set zoomFactor(value: number);
35
38
  get scaleFactor(): number;
36
39
  get canvasOffset(): IPoint;
37
40
  set canvasOffset(value: IPoint);
41
+ get canvasOffsetUnzoomed(): IPoint;
42
+ set canvasOffsetUnzoomed(value: IPoint);
38
43
  onContentChanged: TypedEvent<void>;
44
+ onZoomFactorChanged: TypedEvent<number>;
39
45
  private _canvas;
40
46
  private _canvasContainer;
41
47
  private _outercanvas2;
42
48
  private _lastHoverDesignItem;
43
- private _onContextMenuBound;
44
49
  private _pointerEventHandlerBound;
45
50
  private _firstConnect;
46
51
  private _onKeyDownBound;
@@ -55,6 +60,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
55
60
  set designerWidth(value: string);
56
61
  get designerHeight(): string;
57
62
  set designerHeight(value: string);
63
+ getDesignSurfaceDimensions(): ISize;
58
64
  get designerOffsetWidth(): number;
59
65
  get designerOffsetHeight(): number;
60
66
  set additionalStyle(value: CSSStyleSheet);
@@ -67,7 +73,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
67
73
  initialize(serviceContainer: ServiceContainer): void;
68
74
  elementFromPoint(x: number, y: number): Element;
69
75
  connectedCallback(): void;
70
- zoomFactorChanged(): void;
76
+ private _zoomFactorChanged;
71
77
  _updateTransform(): void;
72
78
  setDesignItems(designItems: IDesignItem[]): void;
73
79
  addDesignItems(designItems: IDesignItem[]): void;
@@ -75,19 +81,23 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
75
81
  private _onDragLeave;
76
82
  private _onDragOver;
77
83
  private _onDrop;
78
- private _onContextMenu;
79
84
  showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): ContextMenuHelper;
80
85
  private _onDblClick;
81
86
  private onKeyUp;
82
87
  private onKeyDown;
83
88
  getNormalizedEventCoordinates(event: MouseEvent): IPoint;
89
+ convertEventToViewPortCoordinates(point: IPoint): IPoint;
90
+ getViewportCoordinates(event: MouseEvent): IPoint;
84
91
  getNormalizedElementCoordinates(element: Element): IRect;
85
92
  getNormalizedOffsetInElement(event: MouseEvent, element: Element): IPoint;
86
93
  getElementAtPoint(point: IPoint, ignoreElementCallback?: (element: HTMLElement) => boolean): HTMLElement;
87
94
  _rect: SVGRectElement;
88
95
  private _pointerEventHandler;
96
+ removeCurrentPointerEventHandler(): void;
89
97
  private _fillCalculationrects;
90
98
  addOverlay(element: SVGGraphicsElement, overlayLayer?: OverlayLayer): void;
91
99
  removeOverlay(element: SVGGraphicsElement): void;
92
100
  getItemsBelowMouse(event: MouseEvent): Element[];
101
+ zoomOntoRectangle(startPoint: IPoint, endPoint: IPoint): void;
102
+ zoomTowardsPoint(canvasPoint: IPoint, newZoom: number): void;
93
103
  }