@node-projects/web-component-designer 0.0.37 → 0.0.43

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 (82) hide show
  1. package/dist/commandHandling/CommandType.d.ts +3 -3
  2. package/dist/commandHandling/CommandType.js +3 -3
  3. package/dist/elements/controls/DesignerTabControl.js +1 -1
  4. package/dist/elements/controls/NumericInput.d.ts +0 -0
  5. package/dist/elements/controls/NumericInput.js +1 -0
  6. package/dist/elements/controls/NumericPopup.d.ts +6 -0
  7. package/dist/elements/controls/NumericPopup.js +39 -0
  8. package/dist/elements/controls/NumericStyleInput.d.ts +16 -0
  9. package/dist/elements/controls/NumericStyleInput.js +56 -0
  10. package/dist/elements/controls/ThicknessEditor copy.d.ts +33 -0
  11. package/dist/elements/controls/ThicknessEditor copy.js +145 -0
  12. package/dist/elements/controls/ThicknessEditor.d.ts +20 -4
  13. package/dist/elements/controls/ThicknessEditor.js +74 -9
  14. package/dist/elements/helper/LayoutHelper.d.ts +0 -0
  15. package/dist/elements/helper/LayoutHelper.js +4 -0
  16. package/dist/elements/services/BaseServiceContainer.js +0 -2
  17. package/dist/elements/services/DefaultServiceBootstrap.js +2 -0
  18. package/dist/elements/services/ServiceContainer.d.ts +5 -0
  19. package/dist/elements/services/ServiceContainer.js +4 -0
  20. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +2 -2
  21. package/dist/elements/services/modelCommandService/DefaultInstanceService.d.ts +8 -0
  22. package/dist/elements/services/modelCommandService/DefaultInstanceService.js +14 -0
  23. package/dist/elements/services/modelCommandService/DefaultModelCommandService.d.ts +7 -0
  24. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +68 -0
  25. package/dist/elements/services/modelCommandService/IInstanceService.d.ts +8 -0
  26. package/dist/elements/services/modelCommandService/IInstanceService.js +1 -0
  27. package/dist/elements/services/modelCommandService/IModelCommandService.d.ts +7 -0
  28. package/dist/elements/services/modelCommandService/IModelCommandService.js +1 -0
  29. package/dist/elements/services/placementService/DefaultPlacementService.js +2 -2
  30. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +6 -1
  31. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +2 -2
  32. package/dist/elements/services/undoService/UndoService.d.ts +3 -0
  33. package/dist/elements/services/undoService/UndoService.js +7 -0
  34. package/dist/elements/widgets/designerView/DomConverter.js +2 -2
  35. package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -2
  36. package/dist/elements/widgets/designerView/designerCanvas.js +18 -20
  37. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.d.ts +22 -0
  38. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.js +52 -0
  39. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +2 -12
  40. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +3 -73
  41. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +16 -0
  42. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +50 -0
  43. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +2 -2
  44. package/dist/elements/widgets/designerView/extensions/CanvasExtension.js +2 -2
  45. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +4 -4
  46. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +1 -0
  47. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +14 -0
  48. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +0 -3
  49. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +0 -3
  50. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +5 -5
  51. package/dist/elements/widgets/designerView/extensions/GridExtension.js +2 -2
  52. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +1 -0
  53. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +1 -1
  54. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +2 -2
  55. package/dist/elements/widgets/designerView/extensions/PathExtension.js +2 -2
  56. package/dist/elements/widgets/designerView/extensions/PositionExtension.js +6 -6
  57. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.js +2 -2
  58. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.d.ts +1 -0
  59. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.js +4 -0
  60. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +21 -21
  61. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.d.ts +1 -0
  62. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +4 -0
  63. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +3 -3
  64. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +1 -1
  65. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +6 -6
  66. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.d.ts +3 -14
  67. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js +4 -75
  68. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.d.ts +13 -0
  69. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.js +27 -0
  70. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.d.ts +13 -0
  71. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js +26 -0
  72. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.d.ts +7 -0
  73. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js +10 -0
  74. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.d.ts +7 -1
  75. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.js +15 -8
  76. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.d.ts +1 -1
  77. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +1 -4
  78. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +4 -0
  79. package/dist/elements/widgets/designerView/overlayLayerView.js +62 -3
  80. package/dist/index.d.ts +5 -0
  81. package/dist/index.js +3 -0
  82. package/package.json +3 -3
@@ -200,4 +200,18 @@ export class ExtensionManager {
200
200
  }
201
201
  }
202
202
  }
203
+ refreshAllExtensions(designItems) {
204
+ if (designItems) {
205
+ this.refreshExtensions(designItems, ExtensionType.Permanent);
206
+ this.refreshExtensions(designItems, ExtensionType.Selection);
207
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelection);
208
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainer);
209
+ this.refreshExtensions(designItems, ExtensionType.MouseOver);
210
+ this.refreshExtensions(designItems, ExtensionType.OnlyOneItemSelected);
211
+ this.refreshExtensions(designItems, ExtensionType.MultipleItemsSelected);
212
+ this.refreshExtensions(designItems, ExtensionType.ContainerDragOver);
213
+ this.refreshExtensions(designItems, ExtensionType.ContainerDrag);
214
+ this.refreshExtensions(designItems, ExtensionType.Doubleclick);
215
+ }
216
+ }
203
217
  }
@@ -14,8 +14,5 @@ export declare enum ExtensionType {
14
14
  * Extension for the Current Container wich the dragged element is contained.
15
15
  */
16
16
  ContainerDrag = 256,
17
- /**
18
- * Extension for the Current Container wich the dragged element is contained.
19
- */
20
17
  Doubleclick = 512
21
18
  }
@@ -15,8 +15,5 @@ export var ExtensionType;
15
15
  * Extension for the Current Container wich the dragged element is contained.
16
16
  */
17
17
  ExtensionType[ExtensionType["ContainerDrag"] = 256] = "ContainerDrag";
18
- /**
19
- * Extension for the Current Container wich the dragged element is contained.
20
- */
21
18
  ExtensionType[ExtensionType["Doubleclick"] = 512] = "Doubleclick";
22
19
  })(ExtensionType || (ExtensionType = {}));
@@ -18,11 +18,11 @@ export class GrayOutExtension extends AbstractExtension {
18
18
  this.drawGrayOut(itemRect);
19
19
  }
20
20
  drawGrayOut(rect) {
21
- let r = { x: rect.x - this.designerView.containerBoundingRect.x, y: rect.y - this.designerView.containerBoundingRect.y, width: rect.width, height: rect.height };
22
- const pathPoints = "M0 0 L0 " + this.designerView.containerBoundingRect.height + "L" + r.x + " " + this.designerView.containerBoundingRect.height + "L" + r.x + " 0" + " L0 0" +
23
- "M" + r.x + " 0 L" + r.x + " " + r.y + "L" + this.designerView.containerBoundingRect.width + " " + r.y + "L" + this.designerView.containerBoundingRect.width + " 0" + "L" + r.x + " 0" +
24
- "M" + r.x + " " + (r.y + r.height) + "L" + r.x + " " + this.designerView.containerBoundingRect.height + "L" + this.designerView.containerBoundingRect.width + " " + this.designerView.containerBoundingRect.height + "L" + this.designerView.containerBoundingRect.width + " " + (r.y + r.height) + "L" + r.x + " " + (r.y + r.height) +
25
- "M" + (r.x + r.width) + " " + r.y + "L" + (r.x + r.width) + " " + (r.y + r.height) + "L" + this.designerView.containerBoundingRect.width + " " + (r.y + r.height) + "L" + this.designerView.containerBoundingRect.width + " " + (r.y) + "L" + (r.x + r.width) + " " + r.y;
21
+ let r = { x: rect.x - this.designerCanvas.containerBoundingRect.x, y: rect.y - this.designerCanvas.containerBoundingRect.y, width: rect.width, height: rect.height };
22
+ const pathPoints = "M0 0 L0 " + this.designerCanvas.containerBoundingRect.height + "L" + r.x + " " + this.designerCanvas.containerBoundingRect.height + "L" + r.x + " 0" + " L0 0" +
23
+ "M" + r.x + " 0 L" + r.x + " " + r.y + "L" + this.designerCanvas.containerBoundingRect.width + " " + r.y + "L" + this.designerCanvas.containerBoundingRect.width + " 0" + "L" + r.x + " 0" +
24
+ "M" + r.x + " " + (r.y + r.height) + "L" + r.x + " " + this.designerCanvas.containerBoundingRect.height + "L" + this.designerCanvas.containerBoundingRect.width + " " + this.designerCanvas.containerBoundingRect.height + "L" + this.designerCanvas.containerBoundingRect.width + " " + (r.y + r.height) + "L" + r.x + " " + (r.y + r.height) +
25
+ "M" + (r.x + r.width) + " " + r.y + "L" + (r.x + r.width) + " " + (r.y + r.height) + "L" + this.designerCanvas.containerBoundingRect.width + " " + (r.y + r.height) + "L" + this.designerCanvas.containerBoundingRect.width + " " + (r.y) + "L" + (r.x + r.width) + " " + r.y;
26
26
  this._path.setAttribute("d", pathPoints);
27
27
  }
28
28
  dispose() {
@@ -13,8 +13,8 @@ export class GridExtension extends AbstractExtension {
13
13
  let xGap = 0;
14
14
  let yGap = 0;
15
15
  let rw = 0;
16
- let xOffset = itemRect.x - this.designerView.containerBoundingRect.x;
17
- let yOffset = itemRect.y - this.designerView.containerBoundingRect.y;
16
+ let xOffset = itemRect.x - this.designerCanvas.containerBoundingRect.x;
17
+ let yOffset = itemRect.y - this.designerCanvas.containerBoundingRect.y;
18
18
  let gridA = null;
19
19
  if (computedStyle.gridTemplateAreas && computedStyle.gridTemplateAreas !== 'none')
20
20
  gridA = computedStyle.gridTemplateAreas.split('\"');
@@ -7,4 +7,5 @@ export interface IExtensionManager {
7
7
  removeExtensions(designItems: IDesignItem[], extensionType?: ExtensionType): any;
8
8
  refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType): any;
9
9
  refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType): any;
10
+ refreshAllExtensions(designItems: IDesignItem[]): any;
10
11
  }
@@ -14,7 +14,7 @@ export class InvisibleDivExtension extends AbstractExtension {
14
14
  const top = Number.parseFloat(computedStyle.marginTop.replace('px', ''));
15
15
  const right = Number.parseFloat(computedStyle.marginRight.replace('px', ''));
16
16
  const bottom = Number.parseFloat(computedStyle.marginBottom.replace('px', ''));
17
- this._rect = this._drawRect(itemRect.x - this.designerView.containerBoundingRect.x - left, itemRect.y - this.designerView.containerBoundingRect.y - top, left + itemRect.width + right, top + itemRect.height + bottom, 'svg-invisible-div', this._rect);
17
+ this._rect = this._drawRect(itemRect.x - this.designerCanvas.containerBoundingRect.x - left, itemRect.y - this.designerCanvas.containerBoundingRect.y - top, left + itemRect.width + right, top + itemRect.height + bottom, 'svg-invisible-div', this._rect);
18
18
  }
19
19
  dispose() {
20
20
  this._removeAllOverlays();
@@ -10,8 +10,8 @@ export class MouseOverExtension extends AbstractExtension {
10
10
  }
11
11
  refresh() {
12
12
  let itemRect = this.extendedItem.element.getBoundingClientRect();
13
- const xOffset = itemRect.x - this.designerView.containerBoundingRect.x;
14
- const yOffset = itemRect.y - this.designerView.containerBoundingRect.y;
13
+ const xOffset = itemRect.x - this.designerCanvas.containerBoundingRect.x;
14
+ const yOffset = itemRect.y - this.designerCanvas.containerBoundingRect.y;
15
15
  this._rect = this._drawRect(xOffset - offset, yOffset - offset, itemRect.width + offset + offset, itemRect.height + offset + offset, 'svg-hover', this._rect);
16
16
  }
17
17
  dispose() {
@@ -63,10 +63,10 @@ export class PathExtension extends AbstractExtension {
63
63
  }
64
64
  }
65
65
  _drawPathCircle(x, y) {
66
- this._drawCircleOverlay(this._parentRect.x - this.designerView.containerBoundingRect.x + x, this._parentRect.y - this.designerView.containerBoundingRect.y + y, 3, 'svg-path');
66
+ this._drawCircle(this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y, 3, 'svg-path');
67
67
  }
68
68
  _drawPathLine(x1, y1, x2, y2) {
69
- this._drawLineOverlay(this._parentRect.x - this.designerView.containerBoundingRect.x + x1, this._parentRect.y - this.designerView.containerBoundingRect.y + y1, this._parentRect.x - this.designerView.containerBoundingRect.x + x2, this._parentRect.y - this.designerView.containerBoundingRect.y + y2, 'svg-path-line');
69
+ this._drawLine(this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x1, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y1, this._parentRect.x - this.designerCanvas.containerBoundingRect.x + x2, this._parentRect.y - this.designerCanvas.containerBoundingRect.y + y2, 'svg-path-line');
70
70
  }
71
71
  refresh() {
72
72
  this._removeAllOverlays();
@@ -13,8 +13,8 @@ export class PositionExtension extends AbstractExtension {
13
13
  refresh() {
14
14
  const computedStyle = getComputedStyle(this.extendedItem.element);
15
15
  let itemRect = this.extendedItem.element.getBoundingClientRect();
16
- const xOffset = itemRect.x - this.designerView.containerBoundingRect.x;
17
- const yOffset = itemRect.y - this.designerView.containerBoundingRect.y;
16
+ const xOffset = itemRect.x - this.designerCanvas.containerBoundingRect.x;
17
+ const yOffset = itemRect.y - this.designerCanvas.containerBoundingRect.y;
18
18
  let left = Number.parseFloat(computedStyle.left.replace('px', ''));
19
19
  if (isNaN(left))
20
20
  left = 0;
@@ -34,10 +34,10 @@ export class PositionExtension extends AbstractExtension {
34
34
  tx = Number.parseFloat(transforms[4]);
35
35
  ty = Number.parseFloat(transforms[5].replace(')', ''));
36
36
  }
37
- this._line1 = this._drawLineOverlay(xOffset - left - tx, yOffset + itemRect.height / 2, xOffset, yOffset + itemRect.height / 2, 'svg-position', this._line1);
38
- this._line2 = this._drawLineOverlay(xOffset + itemRect.width / 2, yOffset - top - ty, xOffset + itemRect.width / 2, yOffset, 'svg-position', this._line2);
39
- this._line3 = this._drawLineOverlay(xOffset + itemRect.width, yOffset + itemRect.height / 2, xOffset + itemRect.width + right + -1 * tx, yOffset + itemRect.height / 2, 'svg-position', this._line3);
40
- this._line4 = this._drawLineOverlay(xOffset + itemRect.width / 2, yOffset + itemRect.height, xOffset + itemRect.width / 2, yOffset + itemRect.height + bottom + -1 * ty, 'svg-position', this._line4);
37
+ this._line1 = this._drawLine(xOffset - left - tx, yOffset + itemRect.height / 2, xOffset, yOffset + itemRect.height / 2, 'svg-position', this._line1);
38
+ this._line2 = this._drawLine(xOffset + itemRect.width / 2, yOffset - top - ty, xOffset + itemRect.width / 2, yOffset, 'svg-position', this._line2);
39
+ this._line3 = this._drawLine(xOffset + itemRect.width, yOffset + itemRect.height / 2, xOffset + itemRect.width + right + -1 * tx, yOffset + itemRect.height / 2, 'svg-position', this._line3);
40
+ this._line4 = this._drawLine(xOffset + itemRect.width / 2, yOffset + itemRect.height, xOffset + itemRect.width / 2, yOffset + itemRect.height + bottom + -1 * ty, 'svg-position', this._line4);
41
41
  }
42
42
  dispose() {
43
43
  this._removeAllOverlays();
@@ -12,8 +12,8 @@ export class PrimarySelectionDefaultExtension extends AbstractExtension {
12
12
  }
13
13
  refresh() {
14
14
  const boundRect = this.extendedItem.element.getBoundingClientRect();
15
- this._rect = this._drawRect(boundRect.x - this.designerView.containerBoundingRect.x, boundRect.y - this.designerView.containerBoundingRect.y - 16, 60, 15, 'svg-primary-selection-move', this._rect);
16
- this._text = this._drawText(this.extendedItem.name.substring(0, 10) + '…', boundRect.x - this.designerView.containerBoundingRect.x, boundRect.y - this.designerView.containerBoundingRect.y - 5, 'svg-text', this._text);
15
+ this._rect = this._drawRect(boundRect.x - this.designerCanvas.containerBoundingRect.x, boundRect.y - this.designerCanvas.containerBoundingRect.y - 16, 60, 15, 'svg-primary-selection-move', this._rect);
16
+ this._text = this._drawText(this.extendedItem.name.substring(0, 10) + '…', boundRect.x - this.designerCanvas.containerBoundingRect.x, boundRect.y - this.designerCanvas.containerBoundingRect.y - 5, 'svg-text-primary', this._text);
17
17
  }
18
18
  dispose() {
19
19
  this._removeAllOverlays();
@@ -6,4 +6,5 @@ import { IExtensionManager } from "./IExtensionManger";
6
6
  export declare class PrimarySelectionDefaultExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ readonly style: CSSStyleSheet;
9
10
  }
@@ -1,4 +1,5 @@
1
1
  import { PrimarySelectionDefaultExtension } from "./PrimarySelectionDefaultExtension";
2
+ import { css } from "@node-projects/base-custom-webcomponent";
2
3
  export class PrimarySelectionDefaultExtensionProvider {
3
4
  shouldExtend(extensionManager, designerView, designItem) {
4
5
  return true;
@@ -6,4 +7,7 @@ export class PrimarySelectionDefaultExtensionProvider {
6
7
  getExtension(extensionManager, designerView, designItem) {
7
8
  return new PrimarySelectionDefaultExtension(extensionManager, designerView, designItem);
8
9
  }
10
+ style = css `
11
+ .svg-text-primary { stroke: none; fill: white; stroke-width: 1; font-size: 10px; font-family: monospace; }
12
+ `;
9
13
  }
@@ -21,14 +21,14 @@ export class ResizeExtension extends AbstractExtension {
21
21
  }
22
22
  refresh() {
23
23
  const rect = this.extendedItem.element.getBoundingClientRect();
24
- this._circle1 = this._drawResizerOverlay(rect.x - this.designerView.containerBoundingRect.x, rect.y - this.designerView.containerBoundingRect.y, 'nw-resize', this._circle1);
25
- this._circle2 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.designerView.containerBoundingRect.x, rect.y - this.designerView.containerBoundingRect.y, 'n-resize', this._circle2);
26
- this._circle3 = this._drawResizerOverlay(rect.x + rect.width - this.designerView.containerBoundingRect.x, rect.y - this.designerView.containerBoundingRect.y, 'ne-resize', this._circle3);
27
- this._circle4 = this._drawResizerOverlay(rect.x - this.designerView.containerBoundingRect.x, rect.y + rect.height - this.designerView.containerBoundingRect.y, 'sw-resize', this._circle4);
28
- this._circle5 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.designerView.containerBoundingRect.x, rect.y + rect.height - this.designerView.containerBoundingRect.y, 's-resize', this._circle5);
29
- this._circle6 = this._drawResizerOverlay(rect.x + rect.width - this.designerView.containerBoundingRect.x, rect.y + rect.height - this.designerView.containerBoundingRect.y, 'se-resize', this._circle6);
30
- this._circle7 = this._drawResizerOverlay(rect.x - this.designerView.containerBoundingRect.x, rect.y + (rect.height / 2) - this.designerView.containerBoundingRect.y, 'w-resize', this._circle7);
31
- this._circle8 = this._drawResizerOverlay(rect.x + rect.width - this.designerView.containerBoundingRect.x, rect.y + (rect.height / 2) - this.designerView.containerBoundingRect.y, 'e-resize', this._circle8);
24
+ this._circle1 = this._drawResizerOverlay(rect.x - this.designerCanvas.containerBoundingRect.x, rect.y - this.designerCanvas.containerBoundingRect.y, 'nw-resize', this._circle1);
25
+ this._circle2 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.designerCanvas.containerBoundingRect.x, rect.y - this.designerCanvas.containerBoundingRect.y, 'n-resize', this._circle2);
26
+ this._circle3 = this._drawResizerOverlay(rect.x + rect.width - this.designerCanvas.containerBoundingRect.x, rect.y - this.designerCanvas.containerBoundingRect.y, 'ne-resize', this._circle3);
27
+ this._circle4 = this._drawResizerOverlay(rect.x - this.designerCanvas.containerBoundingRect.x, rect.y + rect.height - this.designerCanvas.containerBoundingRect.y, 'sw-resize', this._circle4);
28
+ this._circle5 = this._drawResizerOverlay(rect.x + (rect.width / 2) - this.designerCanvas.containerBoundingRect.x, rect.y + rect.height - this.designerCanvas.containerBoundingRect.y, 's-resize', this._circle5);
29
+ this._circle6 = this._drawResizerOverlay(rect.x + rect.width - this.designerCanvas.containerBoundingRect.x, rect.y + rect.height - this.designerCanvas.containerBoundingRect.y, 'se-resize', this._circle6);
30
+ this._circle7 = this._drawResizerOverlay(rect.x - this.designerCanvas.containerBoundingRect.x, rect.y + (rect.height / 2) - this.designerCanvas.containerBoundingRect.y, 'w-resize', this._circle7);
31
+ this._circle8 = this._drawResizerOverlay(rect.x + rect.width - this.designerCanvas.containerBoundingRect.x, rect.y + (rect.height / 2) - this.designerCanvas.containerBoundingRect.y, 'e-resize', this._circle8);
32
32
  if (rect.width < 12) {
33
33
  this._circle2.style.display = 'none';
34
34
  this._circle5.style.display = 'none';
@@ -47,7 +47,7 @@ export class ResizeExtension extends AbstractExtension {
47
47
  }
48
48
  }
49
49
  _drawResizerOverlay(x, y, cursor, oldCircle) {
50
- let circle = this._drawCircleOverlay(x, y, 3, 'svg-primary-resizer', oldCircle);
50
+ let circle = this._drawCircle(x, y, 3, 'svg-primary-resizer', oldCircle);
51
51
  if (!oldCircle) {
52
52
  circle.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, cursor));
53
53
  circle.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeResize(event, cursor));
@@ -58,24 +58,24 @@ export class ResizeExtension extends AbstractExtension {
58
58
  }
59
59
  _pointerActionTypeResize(event, actionMode = 'se-resize') {
60
60
  event.stopPropagation();
61
- const currentPoint = this.designerView.getNormalizedEventCoordinates(event); //, this.extendedItem.element, event.type === 'pointerdown' ? null : this._initialPoint);
61
+ const currentPoint = this.designerCanvas.getNormalizedEventCoordinates(event); //, this.extendedItem.element, event.type === 'pointerdown' ? null : this._initialPoint);
62
62
  switch (event.type) {
63
63
  case EventNames.PointerDown:
64
64
  event.target.setPointerCapture(event.pointerId);
65
65
  this._initialPoint = currentPoint;
66
66
  this._initialSizes = [];
67
67
  this._actionModeStarted = actionMode;
68
- for (const designItem of this.designerView.instanceServiceContainer.selectionService.selectedElements) {
68
+ for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
69
69
  let rect = designItem.element.getBoundingClientRect();
70
70
  this._initialSizes.push({ width: rect.width, height: rect.height });
71
71
  }
72
- if (this.designerView.alignOnSnap)
73
- this.designerView.snapLines.calculateSnaplines(this.designerView.instanceServiceContainer.selectionService.selectedElements);
72
+ if (this.designerCanvas.alignOnSnap)
73
+ this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
74
74
  break;
75
75
  case EventNames.PointerMove:
76
76
  if (this._initialPoint) {
77
- const containerService = this.designerView.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.extendedItem.parent));
78
- const diff = containerService.placePoint(event, this.designerView, this.extendedItem.parent, this._initialPoint, { x: 0, y: 0 }, currentPoint, this.designerView.instanceServiceContainer.selectionService.selectedElements);
77
+ const containerService = this.designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.extendedItem.parent));
78
+ const diff = containerService.placePoint(event, this.designerCanvas, this.extendedItem.parent, this._initialPoint, { x: 0, y: 0 }, currentPoint, this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
79
79
  let trackX = diff.x - this._initialPoint.x;
80
80
  let trackY = diff.y - this._initialPoint.y;
81
81
  let i = 0;
@@ -84,7 +84,7 @@ export class ResizeExtension extends AbstractExtension {
84
84
  this.extendedItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
85
85
  this.extendedItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
86
86
  if (this.resizeAllSelected) {
87
- for (const designItem of this.designerView.instanceServiceContainer.selectionService.selectedElements) {
87
+ for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
88
88
  if (designItem !== this.extendedItem) {
89
89
  designItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
90
90
  designItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
@@ -95,7 +95,7 @@ export class ResizeExtension extends AbstractExtension {
95
95
  case 's-resize':
96
96
  this.extendedItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
97
97
  if (this.resizeAllSelected) {
98
- for (const designItem of this.designerView.instanceServiceContainer.selectionService.selectedElements) {
98
+ for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
99
99
  if (designItem !== this.extendedItem) {
100
100
  designItem.element.style.height = this._initialSizes[i].height + trackY + 'px';
101
101
  }
@@ -105,7 +105,7 @@ export class ResizeExtension extends AbstractExtension {
105
105
  case 'e-resize':
106
106
  this.extendedItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
107
107
  if (this.resizeAllSelected) {
108
- for (const designItem of this.designerView.instanceServiceContainer.selectionService.selectedElements) {
108
+ for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
109
109
  if (designItem !== this.extendedItem) {
110
110
  designItem.element.style.width = this._initialSizes[i].width + trackX + 'px';
111
111
  }
@@ -114,16 +114,16 @@ export class ResizeExtension extends AbstractExtension {
114
114
  break;
115
115
  //for other resize modes we need a replacement
116
116
  }
117
- this.extensionManager.refreshExtensions(this.designerView.instanceServiceContainer.selectionService.selectedElements);
117
+ this.extensionManager.refreshExtensions(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
118
118
  }
119
119
  break;
120
120
  case EventNames.PointerUp:
121
121
  event.target.releasePointerCapture(event.pointerId);
122
- let cg = this.extendedItem.openGroup("Resize Elements", this.designerView.instanceServiceContainer.selectionService.selectedElements);
122
+ let cg = this.extendedItem.openGroup("Resize Elements", this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
123
123
  this.extendedItem.setStyle('width', this.extendedItem.element.style.width);
124
124
  this.extendedItem.setStyle('height', this.extendedItem.element.style.height);
125
125
  if (this.resizeAllSelected) {
126
- for (const designItem of this.designerView.instanceServiceContainer.selectionService.selectedElements) {
126
+ for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
127
127
  if (designItem !== this.extendedItem) {
128
128
  designItem.setStyle('width', designItem.element.style.width);
129
129
  designItem.setStyle('height', designItem.element.style.height);
@@ -8,4 +8,5 @@ export declare class ResizeExtensionProvider implements IDesignerExtensionProvid
8
8
  constructor(resizeAllSelected?: boolean);
9
9
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
10
10
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
11
+ readonly style: CSSStyleSheet;
11
12
  }
@@ -1,4 +1,5 @@
1
1
  import { ResizeExtension } from "./ResizeExtension";
2
+ import { css } from "@node-projects/base-custom-webcomponent";
2
3
  export class ResizeExtensionProvider {
3
4
  resizeAllSelected;
4
5
  constructor(resizeAllSelected = false) {
@@ -10,4 +11,7 @@ export class ResizeExtensionProvider {
10
11
  getExtension(extensionManager, designerView, designItem) {
11
12
  return new ResizeExtension(extensionManager, designerView, designItem, this.resizeAllSelected);
12
13
  }
14
+ style = css `
15
+ .svg-primary-resizer { stroke: #3899ec; fill: white; pointer-events: all }
16
+ `;
13
17
  }
@@ -26,7 +26,7 @@ export class RotateExtension extends AbstractExtension {
26
26
  g.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeRotate(event));
27
27
  g.addEventListener(EventNames.PointerUp, event => this._pointerActionTypeRotate(event));
28
28
  g.setAttribute('class', 'svg-primary-rotate');
29
- g.setAttribute('transform', 'translate(' + (itemRect.x - this.designerView.containerBoundingRect.x - 13) + ',' + (itemRect.y - this.designerView.containerBoundingRect.y - 8.5) + ')');
29
+ g.setAttribute('transform', 'translate(' + (itemRect.x - this.designerCanvas.containerBoundingRect.x - 13) + ',' + (itemRect.y - this.designerCanvas.containerBoundingRect.y - 8.5) + ')');
30
30
  this.overlayLayerView.addOverlay(g);
31
31
  this.overlays.push(g);
32
32
  }
@@ -48,10 +48,10 @@ export class RotateExtension extends AbstractExtension {
48
48
  var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
49
49
  var degree = (radians * (180 / Math.PI) * -1) + 90;
50
50
  img.css('-moz-transform', 'rotate(' + degree + 'deg)');*/
51
- this.extensionManager.refreshExtensions(this.designerView.instanceServiceContainer.selectionService.selectedElements);
51
+ this.extensionManager.refreshExtensions(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
52
52
  break;
53
53
  case EventNames.PointerUp:
54
- let cg = this.extendedItem.openGroup("Rotate Elements", this.designerView.instanceServiceContainer.selectionService.selectedElements);
54
+ let cg = this.extendedItem.openGroup("Rotate Elements", this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
55
55
  /*for (const designItem of this.instanceServiceContainer.selectionService.selectedElements) {
56
56
  designItem.setStyle('width', (<HTMLElement>designItem.element).style.width);
57
57
  designItem.setStyle('height', (<HTMLElement>designItem.element).style.height);
@@ -14,7 +14,7 @@ export class SelectionDefaultExtension extends AbstractExtension {
14
14
  const top = Number.parseFloat(computedStyle.marginTop.replace('px', ''));
15
15
  const right = Number.parseFloat(computedStyle.marginRight.replace('px', ''));
16
16
  const bottom = Number.parseFloat(computedStyle.marginBottom.replace('px', ''));
17
- this._rect = this._drawRect(itemRect.x - this.designerView.containerBoundingRect.x - left, itemRect.y - this.designerView.containerBoundingRect.y - top, left + itemRect.width + right, top + itemRect.height + bottom, 'svg-selection', this._rect);
17
+ this._rect = this._drawRect(itemRect.x - this.designerCanvas.containerBoundingRect.x - left, itemRect.y - this.designerCanvas.containerBoundingRect.y - top, left + itemRect.width + right, top + itemRect.height + bottom, 'svg-selection', this._rect);
18
18
  }
19
19
  dispose() {
20
20
  this._removeAllOverlays();
@@ -11,9 +11,9 @@ export class TransformOriginExtension extends AbstractExtension {
11
11
  const rect = this.extendedItem.element.getBoundingClientRect();
12
12
  const computed = getComputedStyle(this.extendedItem.element);
13
13
  const to = computed.transformOrigin.split(' ');
14
- this._circle = this._drawCircleOverlay(rect.x - this.designerView.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')), rect.y - this.designerView.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')), 5, 'svg-transform-origin');
14
+ this._circle = this._drawCircle(rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')), rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')), 5, 'svg-transform-origin');
15
15
  this._circle.setAttribute('style', 'cursor: pointer');
16
- this._circle2 = this._drawCircleOverlay(rect.x - this.designerView.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')), rect.y - this.designerView.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')), 1, 'svg-transform-origin');
16
+ this._circle2 = this._drawCircle(rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')), rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')), 1, 'svg-transform-origin');
17
17
  this._circle2.setAttribute('style', 'pointer-events: none');
18
18
  this._circle.addEventListener(EventNames.PointerDown, event => this.pointerEvent(event));
19
19
  this._circle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event));
@@ -33,10 +33,10 @@ export class TransformOriginExtension extends AbstractExtension {
33
33
  if (this._startPos && event.buttons > 0) {
34
34
  const dx = event.x - this._startPos.x;
35
35
  const dy = event.y - this._startPos.y;
36
- this._circle.setAttribute('cx', (rect.x - this.designerView.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')) + dx));
37
- this._circle.setAttribute('cy', (rect.y - this.designerView.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')) + dy));
38
- this._circle2.setAttribute('cx', (rect.x - this.designerView.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')) + dx));
39
- this._circle2.setAttribute('cy', (rect.y - this.designerView.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')) + dy));
36
+ this._circle.setAttribute('cx', (rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')) + dx));
37
+ this._circle.setAttribute('cy', (rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')) + dy));
38
+ this._circle2.setAttribute('cx', (rect.x - this.designerCanvas.containerBoundingRect.x + Number.parseFloat(to[0].replace('px', '')) + dx));
39
+ this._circle2.setAttribute('cy', (rect.y - this.designerCanvas.containerBoundingRect.y + Number.parseFloat(to[1].replace('px', '')) + dy));
40
40
  }
41
41
  break;
42
42
  case EventNames.PointerUp:
@@ -1,22 +1,11 @@
1
1
  import { IDesignItem } from "../../../../item/IDesignItem.js";
2
2
  import { IDesignerCanvas } from "../../IDesignerCanvas.js";
3
- import { OverlayLayerView } from "../../overlayLayerView.js";
4
3
  import { IExtensionManager } from "../IExtensionManger.js";
5
- import { OverlayLayer } from "../OverlayLayer.js";
6
4
  import { IDesignerPointerExtension } from "./IDesignerPointerExtension.js";
7
- export declare abstract class AbstractDesignerPointerExtension implements IDesignerPointerExtension {
8
- protected overlays: SVGGraphicsElement[];
9
- protected overlayLayerView: OverlayLayerView;
10
- protected extensionManager: IExtensionManager;
11
- protected designerView: IDesignerCanvas;
5
+ import { AbstractExtensionBase } from '../AbstractExtensionBase';
6
+ export declare abstract class AbstractDesignerPointerExtension extends AbstractExtensionBase implements IDesignerPointerExtension {
12
7
  protected extendedItem: IDesignItem;
13
- constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem?: IDesignItem);
14
- abstract extend(event: PointerEvent): any;
8
+ constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas);
15
9
  abstract refresh(event: PointerEvent): any;
16
10
  abstract dispose(): any;
17
- protected _removeAllOverlays(): void;
18
- _drawLineOverlay(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
19
- _drawCircleOverlay(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
20
- _drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
21
- _drawText(text: string, x: number, y: number, className?: string, textEl?: SVGTextElement, overlayLayer?: OverlayLayer): SVGTextElement;
22
11
  }
@@ -1,82 +1,11 @@
1
+ import { AbstractExtensionBase } from '../AbstractExtensionBase';
1
2
  //todo:
2
3
  //move draw functions to overlay layer
3
4
  //implement designerpointerextension
4
5
  //create ruler
5
- export class AbstractDesignerPointerExtension {
6
- overlays = [];
7
- overlayLayerView;
8
- extensionManager;
9
- designerView;
6
+ export class AbstractDesignerPointerExtension extends AbstractExtensionBase {
10
7
  extendedItem;
11
- constructor(extensionManager, designerView, extendedItem) {
12
- this.extensionManager = extensionManager;
13
- this.designerView = designerView;
14
- this.extendedItem = extendedItem;
15
- this.overlayLayerView = designerView.overlayLayer;
16
- }
17
- _removeAllOverlays() {
18
- for (let o of this.overlays) {
19
- try {
20
- this.overlayLayerView.removeOverlay(o);
21
- }
22
- catch (err) {
23
- console.error(err);
24
- }
25
- }
26
- this.overlays = [];
27
- }
28
- _drawLineOverlay(x1, y1, x2, y2, className, line, overlayLayer) {
29
- if (!line) {
30
- line = document.createElementNS("http://www.w3.org/2000/svg", "line");
31
- this.overlayLayerView.addOverlay(line, overlayLayer);
32
- this.overlays.push(line);
33
- }
34
- line.setAttribute('x1', x1);
35
- line.setAttribute('y1', y1);
36
- line.setAttribute('x2', x2);
37
- line.setAttribute('y2', y2);
38
- if (className)
39
- line.setAttribute('class', className);
40
- return line;
41
- }
42
- _drawCircleOverlay(x, y, radius, className, circle, overlayLayer) {
43
- if (!circle) {
44
- circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
45
- this.overlayLayerView.addOverlay(circle, overlayLayer);
46
- this.overlays.push(circle);
47
- }
48
- circle.setAttribute('cx', x);
49
- circle.setAttribute('cy', y);
50
- circle.setAttribute('r', radius);
51
- if (className)
52
- circle.setAttribute('class', className);
53
- return circle;
54
- }
55
- _drawRect(x, y, w, h, className, rect, overlayLayer) {
56
- if (!rect) {
57
- rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
58
- this.overlayLayerView.addOverlay(rect, overlayLayer);
59
- this.overlays.push(rect);
60
- }
61
- rect.setAttribute('x', x);
62
- rect.setAttribute('y', y);
63
- rect.setAttribute('width', w);
64
- rect.setAttribute('height', h);
65
- if (className)
66
- rect.setAttribute('class', className);
67
- return rect;
68
- }
69
- _drawText(text, x, y, className, textEl, overlayLayer) {
70
- if (!textEl) {
71
- textEl = document.createElementNS("http://www.w3.org/2000/svg", "text");
72
- this.overlayLayerView.addOverlay(textEl, overlayLayer);
73
- this.overlays.push(textEl);
74
- }
75
- textEl.setAttribute('x', x);
76
- textEl.setAttribute('y', y);
77
- textEl.textContent = text;
78
- if (className)
79
- textEl.setAttribute('class', className);
80
- return textEl;
8
+ constructor(extensionManager, designerCanvas) {
9
+ super(extensionManager, designerCanvas);
81
10
  }
82
11
  }
@@ -0,0 +1,13 @@
1
+ import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
2
+ export declare class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
3
+ private _lineOffset;
4
+ private _lineLength;
5
+ private _line1;
6
+ private _line2;
7
+ private _line3;
8
+ private _line4;
9
+ extend(event: PointerEvent): void;
10
+ refresh(event: PointerEvent): void;
11
+ dispose(): void;
12
+ style: CSSStyleSheet;
13
+ }
@@ -0,0 +1,27 @@
1
+ import { css } from '@node-projects/base-custom-webcomponent';
2
+ import { OverlayLayer } from '../OverlayLayer.js';
3
+ import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
4
+ export class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
5
+ _lineOffset = 5;
6
+ _lineLength = 10;
7
+ _line1;
8
+ _line2;
9
+ _line3;
10
+ _line4;
11
+ extend(event) {
12
+ this.refresh(event);
13
+ }
14
+ refresh(event) {
15
+ let mp = this.designerView.getNormalizedEventCoordinates(event);
16
+ this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
17
+ this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
18
+ this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
19
+ this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
20
+ }
21
+ dispose() {
22
+ super._removeAllOverlays();
23
+ }
24
+ style = css `
25
+ .svg-cursor-line { stroke: black; pointer-events: none }
26
+ `;
27
+ }
@@ -0,0 +1,13 @@
1
+ import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
2
+ export declare class CursorLinePointerExtension extends AbstractDesignerPointerExtension {
3
+ private _lineOffset;
4
+ private _lineLength;
5
+ private _circle;
6
+ private _line1;
7
+ private _line2;
8
+ private _line3;
9
+ private _line4;
10
+ refresh(event: PointerEvent): void;
11
+ dispose(): void;
12
+ style: CSSStyleSheet;
13
+ }
@@ -0,0 +1,26 @@
1
+ import { css } from '@node-projects/base-custom-webcomponent';
2
+ import { OverlayLayer } from '../OverlayLayer.js';
3
+ import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
4
+ export class CursorLinePointerExtension extends AbstractDesignerPointerExtension {
5
+ _lineOffset = 5;
6
+ _lineLength = 10;
7
+ _circle;
8
+ _line1;
9
+ _line2;
10
+ _line3;
11
+ _line4;
12
+ refresh(event) {
13
+ let mp = this.designerCanvas.getNormalizedEventCoordinates(event);
14
+ this._circle = this._drawCircle(mp.x, mp.y, 1, 'svg-cursor-line', this._circle, OverlayLayer.Foregorund);
15
+ this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
16
+ this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
17
+ this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
18
+ this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
19
+ }
20
+ dispose() {
21
+ super._removeAllOverlays();
22
+ }
23
+ style = css `
24
+ .svg-cursor-line { stroke: black; pointer-events: none }
25
+ `;
26
+ }
@@ -0,0 +1,7 @@
1
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
2
+ import { IDesignerPointerExtension } from './IDesignerPointerExtension.js';
3
+ import { IDesignerPointerExtensionProvider } from './IDesignerPointerExtensionProvider.js';
4
+ export declare class CursorLinePointerExtensionProvider implements IDesignerPointerExtensionProvider {
5
+ getExtension(designerCanvas: IDesignerCanvas): IDesignerPointerExtension;
6
+ style: CSSStyleSheet;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { css } from '@node-projects/base-custom-webcomponent';
2
+ import { CursorLinePointerExtension } from './CursorLinePointerExtension.js';
3
+ export class CursorLinePointerExtensionProvider {
4
+ getExtension(designerCanvas) {
5
+ return new CursorLinePointerExtension(designerCanvas.extensionManager, designerCanvas);
6
+ }
7
+ style = css `
8
+ .svg-cursor-line { stroke: black; pointer-events: none }
9
+ `;
10
+ }