@node-projects/web-component-designer 0.0.95 → 0.0.98

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 (105) hide show
  1. package/dist/Constants.js +0 -1
  2. package/dist/elements/services/DefaultServiceBootstrap.js +10 -0
  3. package/dist/elements/services/GlobalContext.d.ts +4 -1
  4. package/dist/elements/services/GlobalContext.js +8 -3
  5. package/dist/elements/services/ServiceContainer.d.ts +2 -0
  6. package/dist/elements/services/ServiceContainer.js +1 -0
  7. package/dist/elements/widgets/designerView/Snaplines.js +1 -1
  8. package/dist/elements/widgets/designerView/designerView.d.ts +1 -2
  9. package/dist/elements/widgets/designerView/designerView.js +15 -12
  10. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +8 -0
  11. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +12 -0
  12. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.d.ts +19 -0
  13. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.js +79 -0
  14. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.d.ts +16 -0
  15. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.js +94 -0
  16. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.d.ts +14 -0
  17. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.js +79 -0
  18. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.d.ts +20 -0
  19. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.js +128 -0
  20. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.d.ts +19 -0
  21. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.js +109 -0
  22. package/dist/elements/widgets/designerView/toolBar/ITool.d.ts +9 -0
  23. package/dist/elements/widgets/designerView/toolBar/ITool.js +1 -0
  24. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.d.ts +12 -0
  25. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.js +64 -0
  26. package/dist/elements/widgets/designerView/toolBar/NamedTools.d.ts +15 -0
  27. package/dist/elements/widgets/designerView/toolBar/NamedTools.js +16 -0
  28. package/dist/elements/widgets/designerView/toolBar/PanTool.d.ts +10 -0
  29. package/dist/elements/widgets/designerView/toolBar/PanTool.js +26 -0
  30. package/dist/elements/widgets/designerView/toolBar/PickColorTool.d.ts +10 -0
  31. package/dist/elements/widgets/designerView/toolBar/PickColorTool.js +20 -0
  32. package/dist/elements/widgets/designerView/toolBar/PointerTool.d.ts +24 -0
  33. package/dist/elements/widgets/designerView/toolBar/PointerTool.js +283 -0
  34. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.d.ts +12 -0
  35. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.js +84 -0
  36. package/dist/elements/widgets/designerView/toolBar/TextTool.d.ts +11 -0
  37. package/dist/elements/widgets/designerView/toolBar/TextTool.js +33 -0
  38. package/dist/elements/widgets/designerView/toolBar/ZoomTool.d.ts +17 -0
  39. package/dist/elements/widgets/designerView/toolBar/ZoomTool.js +79 -0
  40. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.d.ts +5 -0
  41. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.js +19 -0
  42. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.d.ts +8 -0
  43. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.js +41 -0
  44. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +9 -0
  45. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.js +42 -0
  46. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.d.ts +36 -0
  47. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.js +96 -0
  48. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.d.ts +5 -0
  49. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.js +21 -0
  50. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
  51. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.js +23 -0
  52. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.d.ts +24 -0
  53. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.js +115 -0
  54. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.js +1 -1
  55. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.js +4 -0
  56. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +1 -4
  57. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.js +4 -6
  58. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.d.ts +4 -0
  59. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.js +31 -40
  60. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.d.ts +8 -0
  61. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.js +25 -0
  62. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.d.ts +0 -3
  63. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.js +6 -10
  64. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.d.ts +8 -0
  65. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.js +23 -0
  66. package/dist/elements/widgets/designerView/tools/designerToolsDock.d.ts +1 -0
  67. package/dist/elements/widgets/designerView/tools/designerToolsDock.js +7 -7
  68. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.d.ts +5 -0
  69. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.js +5 -0
  70. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +16 -0
  71. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +68 -0
  72. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.d.ts +19 -0
  73. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.js +62 -0
  74. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.d.ts +5 -0
  75. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.js +1 -0
  76. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.d.ts +4 -0
  77. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js +1 -0
  78. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.d.ts +5 -0
  79. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +16 -0
  80. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.d.ts +5 -0
  81. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.js +7 -0
  82. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.d.ts +5 -0
  83. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js +7 -0
  84. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.d.ts +5 -0
  85. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.js +10 -0
  86. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.d.ts +5 -0
  87. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js +10 -0
  88. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.d.ts +7 -0
  89. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js +11 -0
  90. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.d.ts +5 -0
  91. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +7 -0
  92. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.d.ts +5 -0
  93. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js +7 -0
  94. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.d.ts +24 -0
  95. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.js +115 -0
  96. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.d.ts +6 -0
  97. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +50 -0
  98. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.d.ts +7 -0
  99. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.js +23 -0
  100. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.d.ts +8 -0
  101. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.js +41 -0
  102. package/dist/elements/widgets/treeView/treeViewExtended.js +6 -4
  103. package/dist/index.d.ts +12 -1
  104. package/dist/index.js +11 -1
  105. package/package.json +42 -42
@@ -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
+ }
@@ -0,0 +1,20 @@
1
+ export class PickColorTool {
2
+ cursor = 'crosshair';
3
+ async activated(serviceContainer) {
4
+ try {
5
+ //@ts-ignore
6
+ const eyeDropper = new EyeDropper();
7
+ const colorSelectionResult = await eyeDropper.open();
8
+ const color = colorSelectionResult.sRGBHex;
9
+ serviceContainer.globalContext.strokeColor = color;
10
+ }
11
+ finally {
12
+ serviceContainer.globalContext.finishedWithTool(this);
13
+ }
14
+ }
15
+ async pointerEventHandler(designerCanvas, event, currentElement) {
16
+ }
17
+ keyboardEventHandler(designerCanvas, event, currentElement) { }
18
+ dispose() {
19
+ }
20
+ }
@@ -0,0 +1,24 @@
1
+ import { IDesignerCanvas } from "../IDesignerCanvas";
2
+ import { ITool } from "./ITool";
3
+ import { ServiceContainer } from "../../../services/ServiceContainer.js";
4
+ export declare class PointerTool implements ITool {
5
+ readonly cursor: string;
6
+ private _movedSinceStartedAction;
7
+ private _initialPoint;
8
+ private _actionType?;
9
+ private _actionStartedDesignItem?;
10
+ private _previousEventName;
11
+ private _dragOverExtensionItem;
12
+ private _dragExtensionItem;
13
+ private _moveItemsOffset;
14
+ private _initialOffset;
15
+ constructor();
16
+ activated(serviceContainer: ServiceContainer): void;
17
+ dispose(): void;
18
+ private _showContextMenu;
19
+ pointerEventHandler(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): void;
20
+ private _resetTool;
21
+ private _pointerActionTypeDrawSelection;
22
+ private _pointerActionTypeDragOrSelect;
23
+ keyboardEventHandler(designerCanvas: IDesignerCanvas, event: KeyboardEvent, currentElement: Element): void;
24
+ }