@node-projects/web-component-designer 0.0.94 → 0.0.97

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 (122) hide show
  1. package/assets/images/layout/ColorPickerTool.svg +21 -0
  2. package/assets/images/layout/DrawEllipTool.svg +13 -0
  3. package/assets/images/layout/DrawLineTool.svg +13 -0
  4. package/assets/images/layout/DrawPathTool.svg +32 -0
  5. package/assets/images/layout/DrawRectTool.svg +28 -0
  6. package/assets/images/layout/MagicWandTool.svg +14 -0
  7. package/assets/images/layout/PointerTool.svg +10 -0
  8. package/assets/images/layout/SelectRectTool.svg +9 -0
  9. package/assets/images/layout/TextBoxTool.svg +8 -0
  10. package/assets/images/layout/TextTool.svg +7 -0
  11. package/assets/images/layout/ZoomTool.svg +16 -0
  12. package/dist/Constants.d.ts +1 -1
  13. package/dist/Constants.js +3 -1
  14. package/dist/elements/services/DefaultServiceBootstrap.js +10 -0
  15. package/dist/elements/services/GlobalContext.d.ts +4 -1
  16. package/dist/elements/services/GlobalContext.js +8 -3
  17. package/dist/elements/services/ServiceContainer.d.ts +2 -0
  18. package/dist/elements/services/ServiceContainer.js +1 -0
  19. package/dist/elements/widgets/designerView/Snaplines.js +1 -1
  20. package/dist/elements/widgets/designerView/designerCanvas.js +3 -1
  21. package/dist/elements/widgets/designerView/designerView.d.ts +2 -0
  22. package/dist/elements/widgets/designerView/designerView.js +19 -2
  23. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +8 -0
  24. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +12 -0
  25. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.d.ts +19 -0
  26. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.js +79 -0
  27. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.d.ts +16 -0
  28. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.js +94 -0
  29. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.d.ts +14 -0
  30. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.js +79 -0
  31. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.d.ts +20 -0
  32. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.js +128 -0
  33. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.d.ts +19 -0
  34. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.js +109 -0
  35. package/dist/elements/widgets/designerView/toolBar/ITool.d.ts +9 -0
  36. package/dist/elements/widgets/designerView/toolBar/ITool.js +1 -0
  37. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.d.ts +12 -0
  38. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.js +64 -0
  39. package/dist/elements/widgets/designerView/toolBar/NamedTools.d.ts +15 -0
  40. package/dist/elements/widgets/designerView/toolBar/NamedTools.js +16 -0
  41. package/dist/elements/widgets/designerView/toolBar/PanTool.d.ts +10 -0
  42. package/dist/elements/widgets/designerView/toolBar/PanTool.js +26 -0
  43. package/dist/elements/widgets/designerView/toolBar/PickColorTool.d.ts +10 -0
  44. package/dist/elements/widgets/designerView/toolBar/PickColorTool.js +20 -0
  45. package/dist/elements/widgets/designerView/toolBar/PointerTool.d.ts +24 -0
  46. package/dist/elements/widgets/designerView/toolBar/PointerTool.js +283 -0
  47. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.d.ts +12 -0
  48. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.js +84 -0
  49. package/dist/elements/widgets/designerView/toolBar/TextTool.d.ts +11 -0
  50. package/dist/elements/widgets/designerView/toolBar/TextTool.js +33 -0
  51. package/dist/elements/widgets/designerView/toolBar/ZoomTool.d.ts +17 -0
  52. package/dist/elements/widgets/designerView/toolBar/ZoomTool.js +79 -0
  53. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.d.ts +5 -0
  54. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.js +19 -0
  55. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.d.ts +8 -0
  56. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.js +41 -0
  57. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +9 -0
  58. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.js +42 -0
  59. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.d.ts +36 -0
  60. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.js +96 -0
  61. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.d.ts +5 -0
  62. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.js +21 -0
  63. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
  64. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.js +23 -0
  65. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.d.ts +24 -0
  66. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.js +115 -0
  67. package/dist/elements/widgets/designerView/tools/NamedTools.d.ts +2 -1
  68. package/dist/elements/widgets/designerView/tools/NamedTools.js +1 -0
  69. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.d.ts +5 -0
  70. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.js +19 -0
  71. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.d.ts +8 -0
  72. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.js +41 -0
  73. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +9 -0
  74. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.js +42 -0
  75. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.d.ts +36 -0
  76. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.js +87 -0
  77. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.d.ts +8 -0
  78. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.js +25 -0
  79. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.d.ts +5 -0
  80. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.js +21 -0
  81. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
  82. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.js +23 -0
  83. package/dist/elements/widgets/designerView/tools/designerToolsDock.d.ts +24 -0
  84. package/dist/elements/widgets/designerView/tools/designerToolsDock.js +115 -0
  85. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.d.ts +5 -0
  86. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.js +5 -0
  87. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +16 -0
  88. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +68 -0
  89. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.d.ts +19 -0
  90. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.js +62 -0
  91. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.d.ts +5 -0
  92. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.js +1 -0
  93. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.d.ts +4 -0
  94. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js +1 -0
  95. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.d.ts +5 -0
  96. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +16 -0
  97. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.d.ts +5 -0
  98. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.js +7 -0
  99. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.d.ts +5 -0
  100. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js +7 -0
  101. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.d.ts +5 -0
  102. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.js +10 -0
  103. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.d.ts +5 -0
  104. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js +10 -0
  105. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.d.ts +7 -0
  106. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js +11 -0
  107. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.d.ts +5 -0
  108. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +7 -0
  109. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.d.ts +5 -0
  110. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js +7 -0
  111. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.d.ts +24 -0
  112. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.js +115 -0
  113. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.d.ts +6 -0
  114. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +50 -0
  115. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.d.ts +7 -0
  116. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.js +23 -0
  117. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.d.ts +8 -0
  118. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.js +41 -0
  119. package/dist/elements/widgets/treeView/treeViewExtended.js +6 -4
  120. package/dist/index.d.ts +2 -0
  121. package/dist/index.js +2 -0
  122. package/package.json +42 -42
@@ -0,0 +1,94 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
3
+ import { calculateNormLegth } from '../../../helper/PathDataPolyfill';
4
+ import { DesignItem } from '../../../item/DesignItem';
5
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
6
+ export class DrawEllipsisTool {
7
+ cursor = 'crosshair';
8
+ _path;
9
+ _startPoint;
10
+ _radius;
11
+ _cx;
12
+ _cy;
13
+ constructor() {
14
+ }
15
+ activated(serviceContainer) {
16
+ }
17
+ dispose() {
18
+ }
19
+ pointerEventHandler(designerCanvas, event, currentElement) {
20
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
21
+ const offset = 50;
22
+ switch (event.type) {
23
+ case EventNames.PointerDown:
24
+ this._startPoint = currentPoint;
25
+ event.target.setPointerCapture(event.pointerId);
26
+ designerCanvas.captureActiveTool(this);
27
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
28
+ this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
29
+ this._path.setAttribute("fill", designerCanvas.serviceContainer.globalContext.fillBrush);
30
+ this._path.setAttribute("stroke-width", designerCanvas.serviceContainer.globalContext.strokeThickness);
31
+ this._path.setAttribute("cx", currentPoint.x.toString());
32
+ this._path.setAttribute("cy", currentPoint.y.toString());
33
+ this._path.setAttribute("rx", "0");
34
+ this._path.setAttribute("ry", "0");
35
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
36
+ break;
37
+ case EventNames.PointerMove:
38
+ if (this._path) {
39
+ this._radius = { x: Math.abs(currentPoint.x - this._startPoint.x), y: Math.abs(currentPoint.y - this._startPoint.y) };
40
+ if (event.ctrlKey) {
41
+ this._path.setAttribute("cx", this._startPoint.x.toString());
42
+ this._path.setAttribute("cy", this._startPoint.y.toString());
43
+ this._cx = this._startPoint.x;
44
+ this._cy = this._startPoint.y;
45
+ if (event.shiftKey) {
46
+ const radius = calculateNormLegth(this._startPoint, currentPoint);
47
+ this._path.setAttribute("rx", radius.toString());
48
+ this._path.setAttribute("ry", radius.toString());
49
+ }
50
+ else {
51
+ this._path.setAttribute("rx", this._radius.x.toString());
52
+ this._path.setAttribute("ry", this._radius.y.toString());
53
+ }
54
+ }
55
+ else {
56
+ if (event.shiftKey) {
57
+ const radius = calculateNormLegth(this._startPoint, currentPoint);
58
+ this._radius = { x: radius, y: radius };
59
+ }
60
+ this._cx = currentPoint.x < this._startPoint.x ? this._startPoint.x - this._radius.x / 2 : this._startPoint.x + this._radius.x / 2;
61
+ this._cy = currentPoint.y < this._startPoint.y ? this._startPoint.y - this._radius.y / 2 : this._startPoint.y + this._radius.y / 2;
62
+ this._path.setAttribute("cx", this._cx.toString());
63
+ this._path.setAttribute("cy", this._cy.toString());
64
+ this._path.setAttribute("rx", (this._radius.x / 2).toString());
65
+ this._path.setAttribute("ry", (this._radius.y / 2).toString());
66
+ }
67
+ }
68
+ break;
69
+ case EventNames.PointerUp:
70
+ event.target.releasePointerCapture(event.pointerId);
71
+ designerCanvas.releaseActiveTool();
72
+ const rect = this._path.getBoundingClientRect();
73
+ designerCanvas.overlayLayer.removeOverlay(this._path);
74
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
75
+ const mvX = rect.x - designerCanvas.containerBoundingRect.x - offset;
76
+ const mvY = rect.y - designerCanvas.containerBoundingRect.y - offset;
77
+ svg.appendChild(this._path);
78
+ this._path.setAttribute("cx", (this._cx - mvX).toString());
79
+ this._path.setAttribute("cy", (this._cy - mvY).toString());
80
+ svg.style.left = (mvX) + 'px';
81
+ svg.style.top = (mvY) + 'px';
82
+ svg.style.position = 'absolute';
83
+ svg.style.width = (rect.width + 2 * offset) + 'px';
84
+ svg.style.height = (rect.height + 2 * offset) + 'px';
85
+ svg.style.overflow = 'visible';
86
+ this._path = null;
87
+ const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
88
+ designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
89
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
90
+ break;
91
+ }
92
+ }
93
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
94
+ }
@@ -0,0 +1,14 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
4
+ export declare class DrawLineTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ private _path;
7
+ private _startPoint;
8
+ private _endPoint;
9
+ constructor();
10
+ activated(serviceContainer: ServiceContainer): void;
11
+ dispose(): void;
12
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
13
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
14
+ }
@@ -0,0 +1,79 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
3
+ import { straightenLine } from '../../../helper/PathDataPolyfill';
4
+ import { DesignItem } from '../../../item/DesignItem';
5
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
6
+ export class DrawLineTool {
7
+ cursor = 'crosshair';
8
+ _path;
9
+ _startPoint;
10
+ _endPoint;
11
+ constructor() {
12
+ }
13
+ activated(serviceContainer) {
14
+ }
15
+ dispose() {
16
+ }
17
+ pointerEventHandler(designerCanvas, event, currentElement) {
18
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
19
+ const offset = 50;
20
+ switch (event.type) {
21
+ case EventNames.PointerDown:
22
+ this._startPoint = currentPoint;
23
+ event.target.setPointerCapture(event.pointerId);
24
+ designerCanvas.captureActiveTool(this);
25
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "line");
26
+ // this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
27
+ // this._path.setAttribute("d", this._pathD);
28
+ this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
29
+ this._path.setAttribute("stroke-width", designerCanvas.serviceContainer.globalContext.strokeThickness);
30
+ this._path.setAttribute("x1", currentPoint.x.toString());
31
+ this._path.setAttribute("y1", currentPoint.y.toString());
32
+ this._path.setAttribute("x2", currentPoint.x.toString());
33
+ this._path.setAttribute("y2", currentPoint.y.toString());
34
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
35
+ break;
36
+ case EventNames.PointerMove:
37
+ if (this._path) {
38
+ if (event.shiftKey) {
39
+ let straightLine = straightenLine(this._startPoint, currentPoint);
40
+ this._path.setAttribute("x2", straightLine.x.toString());
41
+ this._path.setAttribute("y2", straightLine.y.toString());
42
+ this._endPoint = straightLine;
43
+ }
44
+ else {
45
+ //this._path.setAttribute("d", this._pathD + "L" + currentPoint.x + " " + currentPoint.y);
46
+ this._path.setAttribute("x2", currentPoint.x.toString());
47
+ this._path.setAttribute("y2", currentPoint.y.toString());
48
+ this._endPoint = currentPoint;
49
+ }
50
+ }
51
+ break;
52
+ case EventNames.PointerUp:
53
+ event.target.releasePointerCapture(event.pointerId);
54
+ designerCanvas.releaseActiveTool();
55
+ const rect = this._path.getBoundingClientRect();
56
+ designerCanvas.overlayLayer.removeOverlay(this._path);
57
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
58
+ const mvX = rect.x - designerCanvas.containerBoundingRect.x - offset;
59
+ const mvY = rect.y - designerCanvas.containerBoundingRect.y - offset;
60
+ this._path.setAttribute("x1", (this._startPoint.x - mvX).toString());
61
+ this._path.setAttribute("y1", (this._startPoint.y - mvY).toString());
62
+ this._path.setAttribute("x2", (this._endPoint.x - mvX).toString());
63
+ this._path.setAttribute("y2", (this._endPoint.y - mvY).toString());
64
+ svg.appendChild(this._path);
65
+ svg.style.left = (mvX) + 'px';
66
+ svg.style.top = (mvY) + 'px';
67
+ svg.style.position = 'absolute';
68
+ svg.style.width = (rect.width + 2 * offset) + 'px';
69
+ svg.style.height = (rect.height + 2 * offset) + 'px';
70
+ svg.style.overflow = 'visible';
71
+ this._path = null;
72
+ const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
73
+ designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
74
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
75
+ break;
76
+ }
77
+ }
78
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
79
+ }
@@ -0,0 +1,20 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
4
+ export declare class DrawPathTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ private _pathD;
7
+ private _path;
8
+ private _samePoint;
9
+ private _p2pMode;
10
+ private _dragMode;
11
+ private _pointerMoved;
12
+ private _eventStarted;
13
+ private _lastPoint;
14
+ private _startPoint;
15
+ constructor();
16
+ activated(serviceContainer: ServiceContainer): void;
17
+ dispose(): void;
18
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
19
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
20
+ }
@@ -0,0 +1,128 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { moveSVGPath, straightenLine } from '../../../helper/PathDataPolyfill';
3
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
4
+ import { DesignItem } from '../../../item/DesignItem';
5
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
6
+ export class DrawPathTool {
7
+ cursor = 'crosshair';
8
+ _pathD;
9
+ _path;
10
+ _samePoint = false;
11
+ _p2pMode = false;
12
+ _dragMode = false;
13
+ _pointerMoved = false;
14
+ _eventStarted = false;
15
+ _lastPoint;
16
+ _startPoint;
17
+ constructor() {
18
+ }
19
+ activated(serviceContainer) {
20
+ }
21
+ dispose() {
22
+ }
23
+ pointerEventHandler(designerCanvas, event, currentElement) {
24
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
25
+ const offset = 50;
26
+ switch (event.type) {
27
+ case EventNames.PointerDown:
28
+ this._eventStarted = true;
29
+ if (!this._p2pMode) {
30
+ event.target.setPointerCapture(event.pointerId);
31
+ designerCanvas.captureActiveTool(this);
32
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "path");
33
+ this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
34
+ this._path.setAttribute("d", this._pathD);
35
+ this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
36
+ this._path.setAttribute("fill", designerCanvas.serviceContainer.globalContext.fillBrush);
37
+ this._path.setAttribute("stroke-width", designerCanvas.serviceContainer.globalContext.strokeThickness);
38
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
39
+ this._startPoint = currentPoint;
40
+ }
41
+ if (this._lastPoint != null && this._lastPoint.x === currentPoint.x && this._lastPoint.y === currentPoint.y && !this._samePoint) {
42
+ this._samePoint = true;
43
+ }
44
+ if (this._lastPoint == null) {
45
+ this._lastPoint = currentPoint;
46
+ }
47
+ if (this._startPoint == null) {
48
+ this._startPoint = currentPoint;
49
+ }
50
+ break;
51
+ case EventNames.PointerMove:
52
+ if (this._eventStarted) {
53
+ this._pointerMoved = true;
54
+ }
55
+ if (!this._p2pMode) {
56
+ this._dragMode = true;
57
+ if (this._path) {
58
+ this._pathD += "L" + currentPoint.x + " " + currentPoint.y;
59
+ this._path.setAttribute("d", this._pathD);
60
+ }
61
+ }
62
+ else { // shows line preview
63
+ if (this._path) {
64
+ let straightLine = currentPoint;
65
+ if (event.shiftKey) {
66
+ straightLine = straightenLine(this._lastPoint, currentPoint);
67
+ }
68
+ this._path.setAttribute("d", this._pathD + "L" + straightLine.x + " " + straightLine.y);
69
+ }
70
+ }
71
+ break;
72
+ case EventNames.PointerUp:
73
+ if (this._eventStarted && !this._pointerMoved) {
74
+ this._p2pMode = true;
75
+ }
76
+ if (this._p2pMode && !this._samePoint && this._startPoint.x != currentPoint.x && this._startPoint.y != currentPoint.y) {
77
+ if (this._path) {
78
+ if (event.shiftKey) {
79
+ let straightLine = straightenLine(this._lastPoint, currentPoint);
80
+ this._pathD += "L" + straightLine.x + " " + straightLine.y;
81
+ this._path.setAttribute("d", this._pathD);
82
+ this._lastPoint = straightLine;
83
+ }
84
+ else {
85
+ this._pathD += "L" + currentPoint.x + " " + currentPoint.y;
86
+ this._path.setAttribute("d", this._pathD);
87
+ this._lastPoint = currentPoint;
88
+ }
89
+ }
90
+ }
91
+ if (this._samePoint && this._p2pMode || this._dragMode && !this._p2pMode) {
92
+ event.target.releasePointerCapture(event.pointerId);
93
+ designerCanvas.releaseActiveTool();
94
+ this._eventStarted = false;
95
+ this._p2pMode = false;
96
+ this._pointerMoved = false;
97
+ this._samePoint = false;
98
+ this._dragMode = false;
99
+ const rect = this._path.getBoundingClientRect();
100
+ designerCanvas.overlayLayer.removeOverlay(this._path);
101
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
102
+ const mvX = rect.x - designerCanvas.containerBoundingRect.x - offset;
103
+ const mvY = rect.y - designerCanvas.containerBoundingRect.y - offset;
104
+ const d = moveSVGPath(this._path, mvX, mvY);
105
+ this._path.setAttribute("d", d);
106
+ svg.appendChild(this._path);
107
+ svg.style.left = (mvX) + 'px';
108
+ svg.style.top = (mvY) + 'px';
109
+ svg.style.position = 'absolute';
110
+ svg.style.width = (rect.width + 2 * offset) + 'px';
111
+ svg.style.height = (rect.height + 2 * offset) + 'px';
112
+ svg.style.overflow = 'visible';
113
+ //designerView.rootDesignItem.element.appendChild(svg);
114
+ this._path = null;
115
+ this._pathD = null;
116
+ this._lastPoint = null;
117
+ const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
118
+ designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
119
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
120
+ }
121
+ //TODO: Better Path drawing (like in SVGEDIT & Adding via Undo Framework. And adding to correct container)
122
+ break;
123
+ }
124
+ event.preventDefault();
125
+ event.stopPropagation();
126
+ }
127
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
128
+ }
@@ -0,0 +1,19 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
4
+ export declare class DrawRectTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ private _path;
7
+ private _startPoint;
8
+ private _minX;
9
+ private _minY;
10
+ private _maxX;
11
+ private _maxY;
12
+ private _px;
13
+ private _py;
14
+ constructor();
15
+ activated(serviceContainer: ServiceContainer): void;
16
+ dispose(): void;
17
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
18
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
19
+ }
@@ -0,0 +1,109 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
3
+ import { calculateNormLegth } from '../../../helper/PathDataPolyfill';
4
+ import { DesignItem } from '../../../item/DesignItem';
5
+ import { InsertAction } from '../../../services/undoService/transactionItems/InsertAction';
6
+ export class DrawRectTool {
7
+ cursor = 'crosshair';
8
+ _path;
9
+ _startPoint;
10
+ _minX;
11
+ _minY;
12
+ _maxX;
13
+ _maxY;
14
+ _px;
15
+ _py;
16
+ constructor() {
17
+ }
18
+ activated(serviceContainer) {
19
+ }
20
+ dispose() {
21
+ }
22
+ pointerEventHandler(designerCanvas, event, currentElement) {
23
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
24
+ const offset = 50;
25
+ switch (event.type) {
26
+ case EventNames.PointerDown:
27
+ this._startPoint = currentPoint;
28
+ event.target.setPointerCapture(event.pointerId);
29
+ designerCanvas.captureActiveTool(this);
30
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "rect");
31
+ this._path.setAttribute("stroke", designerCanvas.serviceContainer.globalContext.strokeColor);
32
+ this._path.setAttribute("fill", designerCanvas.serviceContainer.globalContext.fillBrush);
33
+ this._path.setAttribute("stroke-width", designerCanvas.serviceContainer.globalContext.strokeThickness);
34
+ this._path.setAttribute("x", currentPoint.x.toString());
35
+ this._path.setAttribute("y", currentPoint.y.toString());
36
+ this._path.setAttribute("width", "0");
37
+ this._path.setAttribute("height", "0");
38
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
39
+ break;
40
+ case EventNames.PointerMove:
41
+ if (this._path) {
42
+ this._minX = currentPoint.x < this._startPoint.x ? currentPoint.x : this._startPoint.x;
43
+ this._maxX = currentPoint.x > this._startPoint.x ? currentPoint.x : this._startPoint.x;
44
+ this._minY = currentPoint.y < this._startPoint.y ? currentPoint.y : this._startPoint.y;
45
+ this._maxY = currentPoint.y > this._startPoint.y ? currentPoint.y : this._startPoint.y;
46
+ if (event.ctrlKey) {
47
+ if (event.shiftKey) {
48
+ const normLength = 2 * calculateNormLegth(this._startPoint, currentPoint);
49
+ this._px = this._startPoint.x - normLength / 2;
50
+ this._py = this._startPoint.y - normLength / 2;
51
+ this._path.setAttribute("width", (normLength).toString());
52
+ this._path.setAttribute("height", (normLength).toString());
53
+ }
54
+ else {
55
+ const w = 2 * (this._maxX - this._minX);
56
+ const h = 2 * (this._maxY - this._minY);
57
+ this._px = currentPoint.x < this._startPoint.x ? currentPoint.x : this._startPoint.x - w / 2;
58
+ this._py = currentPoint.y < this._startPoint.y ? currentPoint.y : this._startPoint.y - h / 2;
59
+ this._path.setAttribute("width", (w).toString());
60
+ this._path.setAttribute("height", (h).toString());
61
+ }
62
+ this._path.setAttribute("x", this._px.toString());
63
+ this._path.setAttribute("y", this._py.toString());
64
+ }
65
+ else {
66
+ if (event.shiftKey) {
67
+ const normLength = calculateNormLegth(this._startPoint, currentPoint);
68
+ this._px = currentPoint.x < this._startPoint.x ? this._startPoint.x - normLength : this._startPoint.x;
69
+ this._py = currentPoint.y < this._startPoint.y ? this._startPoint.y - normLength : this._startPoint.y;
70
+ this._path.setAttribute("width", (normLength).toString());
71
+ this._path.setAttribute("height", (normLength).toString());
72
+ }
73
+ else {
74
+ this._px = currentPoint.x < this._startPoint.x ? currentPoint.x : this._startPoint.x;
75
+ this._py = currentPoint.y < this._startPoint.y ? currentPoint.y : this._startPoint.y;
76
+ this._path.setAttribute("width", (this._maxX - this._minX).toString());
77
+ this._path.setAttribute("height", (this._maxY - this._minY).toString());
78
+ }
79
+ this._path.setAttribute("x", this._px.toString());
80
+ this._path.setAttribute("y", this._py.toString());
81
+ }
82
+ }
83
+ break;
84
+ case EventNames.PointerUp:
85
+ event.target.releasePointerCapture(event.pointerId);
86
+ designerCanvas.releaseActiveTool();
87
+ const rect = this._path.getBoundingClientRect();
88
+ designerCanvas.overlayLayer.removeOverlay(this._path);
89
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
90
+ const mvX = rect.x - designerCanvas.containerBoundingRect.x - offset;
91
+ const mvY = rect.y - designerCanvas.containerBoundingRect.y - offset;
92
+ this._path.setAttribute("x", (this._px - mvX).toString());
93
+ this._path.setAttribute("y", (this._py - mvY).toString());
94
+ svg.appendChild(this._path);
95
+ svg.style.left = (mvX) + 'px';
96
+ svg.style.top = (mvY) + 'px';
97
+ svg.style.position = 'absolute';
98
+ svg.style.width = (rect.width + 2 * offset) + 'px';
99
+ svg.style.height = (rect.height + 2 * offset) + 'px';
100
+ svg.style.overflow = 'visible';
101
+ this._path = null;
102
+ const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
103
+ designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
104
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
105
+ break;
106
+ }
107
+ }
108
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
109
+ }
@@ -0,0 +1,9 @@
1
+ import { IDisposable } from "../../../../interfaces/IDisposable";
2
+ import { ServiceContainer } from "../../../services/ServiceContainer.js";
3
+ import { IDesignerCanvas } from "../IDesignerCanvas";
4
+ export interface ITool extends IDisposable {
5
+ readonly cursor: string;
6
+ activated(serviceContainer: ServiceContainer): any;
7
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): any;
8
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): any;
9
+ }
@@ -0,0 +1,12 @@
1
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
2
+ import { IDesignerCanvas } from '../IDesignerCanvas';
3
+ import { ITool } from './ITool';
4
+ export declare class MagicWandSelectorTool implements ITool {
5
+ cursor: string;
6
+ private _pathD;
7
+ private _path;
8
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
9
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
10
+ activated(serviceContainer: ServiceContainer): void;
11
+ dispose(): void;
12
+ }
@@ -0,0 +1,64 @@
1
+ import { EventNames } from '../../../../enums/EventNames';
2
+ import { DesignItem } from '../../../item/DesignItem';
3
+ import { OverlayLayer } from '../extensions/OverlayLayer.js';
4
+ export class MagicWandSelectorTool {
5
+ cursor = 'progress';
6
+ _pathD;
7
+ _path;
8
+ pointerEventHandler(designerCanvas, event, currentElement) {
9
+ const currentPoint = designerCanvas.getNormalizedEventCoordinates(event);
10
+ switch (event.type) {
11
+ case EventNames.PointerDown:
12
+ event.target.setPointerCapture(event.pointerId);
13
+ designerCanvas.captureActiveTool(this);
14
+ this._path = document.createElementNS("http://www.w3.org/2000/svg", "path");
15
+ this._path.setAttribute('class', 'svg-selector');
16
+ this._pathD = "M" + currentPoint.x + " " + currentPoint.y;
17
+ this._path.setAttribute("D", this._pathD);
18
+ designerCanvas.overlayLayer.addOverlay(this._path, OverlayLayer.Foregorund);
19
+ break;
20
+ case EventNames.PointerMove:
21
+ if (this._path) {
22
+ this._pathD += "L" + currentPoint.x + " " + currentPoint.y;
23
+ this._path.setAttribute("d", this._pathD + "Z");
24
+ }
25
+ break;
26
+ case EventNames.PointerUp:
27
+ event.target.releasePointerCapture(event.pointerId);
28
+ designerCanvas.releaseActiveTool();
29
+ const elements = designerCanvas.rootDesignItem.element.querySelectorAll('*');
30
+ const inSelectionElements = [];
31
+ let point = designerCanvas.overlayLayer.createPoint();
32
+ for (let e of elements) {
33
+ let elementRect = designerCanvas.getNormalizedElementCoordinates(e);
34
+ point.x = elementRect.x;
35
+ point.y = elementRect.y;
36
+ const p1 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
37
+ point.x = elementRect.x + elementRect.width;
38
+ point.y = elementRect.y;
39
+ const p2 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
40
+ point.x = elementRect.x;
41
+ point.y = elementRect.y + elementRect.height;
42
+ const p3 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
43
+ point.x = elementRect.x + elementRect.width;
44
+ point.y = elementRect.y + elementRect.height;
45
+ const p4 = this._path.isPointInFill(point) || this._path.isPointInStroke(point);
46
+ if (p1 && p2 && p3 && p4) {
47
+ const desItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
48
+ inSelectionElements.push(desItem);
49
+ }
50
+ }
51
+ designerCanvas.overlayLayer.removeOverlay(this._path);
52
+ this._path = null;
53
+ this._pathD = null;
54
+ designerCanvas.instanceServiceContainer.selectionService.setSelectedElements(inSelectionElements);
55
+ designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
56
+ break;
57
+ }
58
+ }
59
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
60
+ activated(serviceContainer) {
61
+ }
62
+ dispose() {
63
+ }
64
+ }
@@ -0,0 +1,15 @@
1
+ export declare enum NamedTools {
2
+ Pointer = "Pointer",
3
+ DrawSelection = "DrawSelection",
4
+ DrawPath = "DrawPath",
5
+ DrawRect = "DrawRect",
6
+ DrawEllipsis = "DrawEllipsis",
7
+ DrawLine = "DrawLine",
8
+ Zoom = "Zoom",
9
+ Pan = "Pan",
10
+ MagicWandSelector = "MagicWandSelector",
11
+ RectangleSelector = "RectangleSelector",
12
+ PickColor = "PickColor",
13
+ Text = "Text",
14
+ TextBoc = "TextBoc"
15
+ }
@@ -0,0 +1,16 @@
1
+ export var NamedTools;
2
+ (function (NamedTools) {
3
+ NamedTools["Pointer"] = "Pointer";
4
+ NamedTools["DrawSelection"] = "DrawSelection";
5
+ NamedTools["DrawPath"] = "DrawPath";
6
+ NamedTools["DrawRect"] = "DrawRect";
7
+ NamedTools["DrawEllipsis"] = "DrawEllipsis";
8
+ NamedTools["DrawLine"] = "DrawLine";
9
+ NamedTools["Zoom"] = "Zoom";
10
+ NamedTools["Pan"] = "Pan";
11
+ NamedTools["MagicWandSelector"] = "MagicWandSelector";
12
+ NamedTools["RectangleSelector"] = "RectangleSelector";
13
+ NamedTools["PickColor"] = "PickColor";
14
+ NamedTools["Text"] = "Text";
15
+ NamedTools["TextBoc"] = "TextBoc";
16
+ })(NamedTools || (NamedTools = {}));
@@ -0,0 +1,10 @@
1
+ import { ServiceContainer } from '../../../services/ServiceContainer.js';
2
+ import { IDesignerCanvas } from '../IDesignerCanvas';
3
+ import { ITool } from './ITool';
4
+ export declare class PanTool implements ITool {
5
+ readonly cursor: string;
6
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
7
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
8
+ activated(serviceContainer: ServiceContainer): void;
9
+ dispose(): void;
10
+ }
@@ -0,0 +1,26 @@
1
+ import { EventNames } from '../../../../enums/EventNames.js';
2
+ export class PanTool {
3
+ cursor = 'grab';
4
+ pointerEventHandler(designerCanvas, event, currentElement) {
5
+ switch (event.type) {
6
+ case EventNames.PointerDown:
7
+ event.target.setPointerCapture(event.pointerId);
8
+ designerCanvas.captureActiveTool(this);
9
+ break;
10
+ case EventNames.PointerMove:
11
+ if (event.buttons == 1) {
12
+ designerCanvas.canvasOffset = { x: designerCanvas.canvasOffset.x + +event.movementX / designerCanvas.zoomFactor, y: designerCanvas.canvasOffset.y + event.movementY / designerCanvas.zoomFactor };
13
+ }
14
+ break;
15
+ case EventNames.PointerUp:
16
+ event.target.releasePointerCapture(event.pointerId);
17
+ designerCanvas.releaseActiveTool();
18
+ break;
19
+ }
20
+ }
21
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
22
+ activated(serviceContainer) {
23
+ }
24
+ dispose() {
25
+ }
26
+ }
@@ -0,0 +1,10 @@
1
+ import { IDesignerCanvas } from '../IDesignerCanvas';
2
+ import { ITool } from './ITool';
3
+ import { ServiceContainer } from '../../../services/ServiceContainer';
4
+ export declare class PickColorTool implements ITool {
5
+ readonly cursor = "crosshair";
6
+ activated(serviceContainer: ServiceContainer): Promise<void>;
7
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): Promise<void>;
8
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
9
+ dispose(): void;
10
+ }